Current section

Files

Jump to
chrobot src chrobot@protocol@target.erl
Raw

src/chrobot@protocol@target.erl

-module(chrobot@protocol@target).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/chrobot/protocol/target.gleam").
-export([encode__target_id/1, decode__target_id/0, encode__session_id/1, decode__session_id/0, encode__target_info/1, decode__target_info/0, decode__attach_to_target_response/0, decode__create_browser_context_response/0, decode__get_browser_contexts_response/0, decode__create_target_response/0, decode__get_targets_response/0, activate_target/2, attach_to_target/3, close_target/2, create_browser_context/1, get_browser_contexts/1, create_target/6, detach_from_target/2, dispose_browser_context/2, get_targets/1, set_auto_attach/3, set_discover_targets/2]).
-export_type([target_i_d/0, session_i_d/0, target_info/0, attach_to_target_response/0, create_browser_context_response/0, get_browser_contexts_response/0, create_target_response/0, get_targets_response/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" > ⚙️ This module was generated from the Chrome DevTools Protocol version **1.3**\n"
" ## Target Domain \n"
"\n"
" Supports additional targets discovery and allows to attach to them. \n"
"\n"
" [📖 View this domain on the DevTools Protocol API Docs](https://chromedevtools.github.io/devtools-protocol/1-3/Target/)\n"
).
-type target_i_d() :: {target_i_d, binary()}.
-type session_i_d() :: {session_i_d, binary()}.
-type target_info() :: {target_info,
target_i_d(),
binary(),
binary(),
binary(),
boolean(),
gleam@option:option(target_i_d())}.
-type attach_to_target_response() :: {attach_to_target_response, session_i_d()}.
-type create_browser_context_response() :: {create_browser_context_response,
binary()}.
-type get_browser_contexts_response() :: {get_browser_contexts_response,
list(binary())}.
-type create_target_response() :: {create_target_response, target_i_d()}.
-type get_targets_response() :: {get_targets_response, list(target_info())}.
-file("src/chrobot/protocol/target.gleam", 25).
?DOC(false).
-spec encode__target_id(target_i_d()) -> gleam@json:json().
encode__target_id(Value__) ->
case Value__ of
{target_i_d, Inner_value__} ->
gleam@json:string(Inner_value__)
end.
-file("src/chrobot/protocol/target.gleam", 32).
?DOC(false).
-spec decode__target_id() -> gleam@dynamic@decode:decoder(target_i_d()).
decode__target_id() ->
begin
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value__) ->
gleam@dynamic@decode:success({target_i_d, Value__})
end
)
end.
-file("src/chrobot/protocol/target.gleam", 45).
?DOC(false).
-spec encode__session_id(session_i_d()) -> gleam@json:json().
encode__session_id(Value__) ->
case Value__ of
{session_i_d, Inner_value__} ->
gleam@json:string(Inner_value__)
end.
-file("src/chrobot/protocol/target.gleam", 52).
?DOC(false).
-spec decode__session_id() -> gleam@dynamic@decode:decoder(session_i_d()).
decode__session_id() ->
begin
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value__) ->
gleam@dynamic@decode:success({session_i_d, Value__})
end
)
end.
-file("src/chrobot/protocol/target.gleam", 74).
?DOC(false).
-spec encode__target_info(target_info()) -> gleam@json:json().
encode__target_info(Value__) ->
gleam@json:object(
begin
_pipe = [{<<"targetId"/utf8>>,
encode__target_id(erlang:element(2, Value__))},
{<<"type"/utf8>>, gleam@json:string(erlang:element(3, Value__))},
{<<"title"/utf8>>,
gleam@json:string(erlang:element(4, Value__))},
{<<"url"/utf8>>, gleam@json:string(erlang:element(5, Value__))},
{<<"attached"/utf8>>,
gleam@json:bool(erlang:element(6, Value__))}],
chrobot@internal@utils:add_optional(
_pipe,
erlang:element(7, Value__),
fun(Inner_value__) ->
{<<"openerId"/utf8>>, encode__target_id(Inner_value__)}
end
)
end
).
-file("src/chrobot/protocol/target.gleam", 90).
?DOC(false).
-spec decode__target_info() -> gleam@dynamic@decode:decoder(target_info()).
decode__target_info() ->
begin
gleam@dynamic@decode:field(
<<"targetId"/utf8>>,
decode__target_id(),
fun(Target_id) ->
gleam@dynamic@decode:field(
<<"type"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Type_) ->
gleam@dynamic@decode:field(
<<"title"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Title) ->
gleam@dynamic@decode:field(
<<"url"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Url) ->
gleam@dynamic@decode:field(
<<"attached"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Attached) ->
gleam@dynamic@decode:optional_field(
<<"openerId"/utf8>>,
none,
gleam@dynamic@decode:optional(
decode__target_id()
),
fun(Opener_id) ->
gleam@dynamic@decode:success(
{target_info,
Target_id,
Type_,
Title,
Url,
Attached,
Opener_id}
)
end
)
end
)
end
)
end
)
end
)
end
)
end.
-file("src/chrobot/protocol/target.gleam", 124).
?DOC(false).
-spec decode__attach_to_target_response() -> gleam@dynamic@decode:decoder(attach_to_target_response()).
decode__attach_to_target_response() ->
begin
gleam@dynamic@decode:field(
<<"sessionId"/utf8>>,
decode__session_id(),
fun(Session_id) ->
gleam@dynamic@decode:success(
{attach_to_target_response, Session_id}
)
end
)
end.
-file("src/chrobot/protocol/target.gleam", 142).
?DOC(false).
-spec decode__create_browser_context_response() -> gleam@dynamic@decode:decoder(create_browser_context_response()).
decode__create_browser_context_response() ->
begin
gleam@dynamic@decode:field(
<<"browserContextId"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Browser_context_id) ->
gleam@dynamic@decode:success(
{create_browser_context_response, Browser_context_id}
)
end
)
end.
-file("src/chrobot/protocol/target.gleam", 162).
?DOC(false).
-spec decode__get_browser_contexts_response() -> gleam@dynamic@decode:decoder(get_browser_contexts_response()).
decode__get_browser_contexts_response() ->
begin
gleam@dynamic@decode:field(
<<"browserContextIds"/utf8>>,
gleam@dynamic@decode:list(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Browser_context_ids) ->
gleam@dynamic@decode:success(
{get_browser_contexts_response, Browser_context_ids}
)
end
)
end.
-file("src/chrobot/protocol/target.gleam", 185).
?DOC(false).
-spec decode__create_target_response() -> gleam@dynamic@decode:decoder(create_target_response()).
decode__create_target_response() ->
begin
gleam@dynamic@decode:field(
<<"targetId"/utf8>>,
decode__target_id(),
fun(Target_id) ->
gleam@dynamic@decode:success(
{create_target_response, Target_id}
)
end
)
end.
-file("src/chrobot/protocol/target.gleam", 203).
?DOC(false).
-spec decode__get_targets_response() -> gleam@dynamic@decode:decoder(get_targets_response()).
decode__get_targets_response() ->
begin
gleam@dynamic@decode:field(
<<"targetInfos"/utf8>>,
gleam@dynamic@decode:list(decode__target_info()),
fun(Target_infos) ->
gleam@dynamic@decode:success(
{get_targets_response, Target_infos}
)
end
)
end.
-file("src/chrobot/protocol/target.gleam", 221).
?DOC(
" Activates (focuses) the target.\n"
" \n"
" Parameters: \n"
" - `target_id`\n"
" \n"
" Returns:\n"
).
-spec activate_target(
fun((binary(), gleam@option:option(gleam@json:json())) -> AIOS),
target_i_d()
) -> AIOS.
activate_target(Callback__, Target_id) ->
Callback__(
<<"Target.activateTarget"/utf8>>,
{some,
gleam@json:object(
[{<<"targetId"/utf8>>, encode__target_id(Target_id)}]
)}
).
-file("src/chrobot/protocol/target.gleam", 243).
?DOC(
" Attaches to the target with given id.\n"
" \n"
" Parameters: \n"
" - `target_id`\n"
" - `flatten` : Enables \"flat\" access to the session via specifying sessionId attribute in the commands.\n"
" We plan to make this the default, deprecate non-flattened mode,\n"
" and eventually retire it. See crbug.com/991325.\n"
" \n"
" Returns: \n"
" - `session_id` : Id assigned to the session.\n"
).
-spec attach_to_target(
fun((binary(), gleam@option:option(gleam@json:json())) -> {ok,
gleam@dynamic:dynamic_()} |
{error, chrobot@chrome:request_error()}),
target_i_d(),
gleam@option:option(boolean())
) -> {ok, attach_to_target_response()} | {error, chrobot@chrome:request_error()}.
attach_to_target(Callback__, Target_id, Flatten) ->
gleam@result:'try'(
Callback__(
<<"Target.attachToTarget"/utf8>>,
{some,
gleam@json:object(
begin
_pipe = [{<<"targetId"/utf8>>,
encode__target_id(Target_id)}],
chrobot@internal@utils:add_optional(
_pipe,
Flatten,
fun(Inner_value__) ->
{<<"flatten"/utf8>>,
gleam@json:bool(Inner_value__)}
end
)
end
)}
),
fun(Result__) ->
_pipe@1 = gleam@dynamic@decode:run(
Result__,
decode__attach_to_target_response()
),
gleam@result:replace_error(_pipe@1, protocol_error)
end
).
-file("src/chrobot/protocol/target.gleam", 271).
?DOC(
" Closes the target. If the target is a page that gets closed too.\n"
" \n"
" Parameters: \n"
" - `target_id`\n"
" \n"
" Returns:\n"
).
-spec close_target(
fun((binary(), gleam@option:option(gleam@json:json())) -> AIPM),
target_i_d()
) -> AIPM.
close_target(Callback__, Target_id) ->
Callback__(
<<"Target.closeTarget"/utf8>>,
{some,
gleam@json:object(
[{<<"targetId"/utf8>>, encode__target_id(Target_id)}]
)}
).
-file("src/chrobot/protocol/target.gleam", 290).
?DOC(
" Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than\n"
" one.\n"
" \n"
" Parameters: \n"
" \n"
" Returns: \n"
" - `browser_context_id` : The id of the context created.\n"
).
-spec create_browser_context(
fun((binary(), gleam@option:option(any())) -> {ok, gleam@dynamic:dynamic_()} |
{error, chrobot@chrome:request_error()})
) -> {ok, create_browser_context_response()} |
{error, chrobot@chrome:request_error()}.
create_browser_context(Callback__) ->
gleam@result:'try'(
Callback__(<<"Target.createBrowserContext"/utf8>>, none),
fun(Result__) ->
_pipe = gleam@dynamic@decode:run(
Result__,
decode__create_browser_context_response()
),
gleam@result:replace_error(_pipe, protocol_error)
end
).
-file("src/chrobot/protocol/target.gleam", 303).
?DOC(
" Returns all browser contexts created with `Target.createBrowserContext` method.\n"
" - `browser_context_ids` : An array of browser context ids.\n"
).
-spec get_browser_contexts(
fun((binary(), gleam@option:option(any())) -> {ok, gleam@dynamic:dynamic_()} |
{error, chrobot@chrome:request_error()})
) -> {ok, get_browser_contexts_response()} |
{error, chrobot@chrome:request_error()}.
get_browser_contexts(Callback__) ->
gleam@result:'try'(
Callback__(<<"Target.getBrowserContexts"/utf8>>, none),
fun(Result__) ->
_pipe = gleam@dynamic@decode:run(
Result__,
decode__get_browser_contexts_response()
),
gleam@result:replace_error(_pipe, protocol_error)
end
).
-file("src/chrobot/protocol/target.gleam", 326).
?DOC(
" Creates a new page.\n"
" \n"
" Parameters: \n"
" - `url` : The initial URL the page will be navigated to. An empty string indicates about:blank.\n"
" - `width` : Frame width in DIP (headless chrome only).\n"
" - `height` : Frame height in DIP (headless chrome only).\n"
" - `new_window` : Whether to create a new Window or Tab (chrome-only, false by default).\n"
" - `background` : Whether to create the target in background or foreground (chrome-only,\n"
" false by default).\n"
" \n"
" Returns: \n"
" - `target_id` : The id of the page opened.\n"
).
-spec create_target(
fun((binary(), gleam@option:option(gleam@json:json())) -> {ok,
gleam@dynamic:dynamic_()} |
{error, chrobot@chrome:request_error()}),
binary(),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(boolean()),
gleam@option:option(boolean())
) -> {ok, create_target_response()} | {error, chrobot@chrome:request_error()}.
create_target(Callback__, Url, Width, Height, New_window, Background) ->
gleam@result:'try'(
Callback__(
<<"Target.createTarget"/utf8>>,
{some,
gleam@json:object(
begin
_pipe = [{<<"url"/utf8>>, gleam@json:string(Url)}],
_pipe@1 = chrobot@internal@utils:add_optional(
_pipe,
Width,
fun(Inner_value__) ->
{<<"width"/utf8>>,
gleam@json:int(Inner_value__)}
end
),
_pipe@2 = chrobot@internal@utils:add_optional(
_pipe@1,
Height,
fun(Inner_value__@1) ->
{<<"height"/utf8>>,
gleam@json:int(Inner_value__@1)}
end
),
_pipe@3 = chrobot@internal@utils:add_optional(
_pipe@2,
New_window,
fun(Inner_value__@2) ->
{<<"newWindow"/utf8>>,
gleam@json:bool(Inner_value__@2)}
end
),
chrobot@internal@utils:add_optional(
_pipe@3,
Background,
fun(Inner_value__@3) ->
{<<"background"/utf8>>,
gleam@json:bool(Inner_value__@3)}
end
)
end
)}
),
fun(Result__) ->
_pipe@4 = gleam@dynamic@decode:run(
Result__,
decode__create_target_response()
),
gleam@result:replace_error(_pipe@4, protocol_error)
end
).
-file("src/chrobot/protocol/target.gleam", 366).
?DOC(
" Detaches session with given id.\n"
" \n"
" Parameters: \n"
" - `session_id` : Session to detach.\n"
" \n"
" Returns:\n"
).
-spec detach_from_target(
fun((binary(), gleam@option:option(gleam@json:json())) -> AIRK),
gleam@option:option(session_i_d())
) -> AIRK.
detach_from_target(Callback__, Session_id) ->
Callback__(
<<"Target.detachFromTarget"/utf8>>,
{some,
gleam@json:object(
begin
_pipe = [],
chrobot@internal@utils:add_optional(
_pipe,
Session_id,
fun(Inner_value__) ->
{<<"sessionId"/utf8>>,
encode__session_id(Inner_value__)}
end
)
end
)}
).
-file("src/chrobot/protocol/target.gleam", 389).
?DOC(
" Deletes a BrowserContext. All the belonging pages will be closed without calling their\n"
" beforeunload hooks.\n"
" \n"
" Parameters: \n"
" - `browser_context_id`\n"
" \n"
" Returns:\n"
).
-spec dispose_browser_context(
fun((binary(), gleam@option:option(gleam@json:json())) -> AIRR),
binary()
) -> AIRR.
dispose_browser_context(Callback__, Browser_context_id) ->
Callback__(
<<"Target.disposeBrowserContext"/utf8>>,
{some,
gleam@json:object(
[{<<"browserContextId"/utf8>>,
gleam@json:string(Browser_context_id)}]
)}
).
-file("src/chrobot/protocol/target.gleam", 410).
?DOC(
" Retrieves a list of available targets.\n"
" \n"
" Parameters: \n"
" \n"
" Returns: \n"
" - `target_infos` : The list of targets.\n"
).
-spec get_targets(
fun((binary(), gleam@option:option(any())) -> {ok, gleam@dynamic:dynamic_()} |
{error, chrobot@chrome:request_error()})
) -> {ok, get_targets_response()} | {error, chrobot@chrome:request_error()}.
get_targets(Callback__) ->
gleam@result:'try'(
Callback__(<<"Target.getTargets"/utf8>>, none),
fun(Result__) ->
_pipe = gleam@dynamic@decode:run(
Result__,
decode__get_targets_response()
),
gleam@result:replace_error(_pipe, protocol_error)
end
).
-file("src/chrobot/protocol/target.gleam", 430).
?DOC(
" Controls whether to automatically attach to new targets which are considered to be related to\n"
" this one. When turned on, attaches to all existing related targets as well. When turned off,\n"
" automatically detaches from all currently attached targets.\n"
" This also clears all targets added by `autoAttachRelated` from the list of targets to watch\n"
" for creation of related targets.\n"
" \n"
" Parameters: \n"
" - `auto_attach` : Whether to auto-attach to related targets.\n"
" - `wait_for_debugger_on_start` : Whether to pause new targets when attaching to them. Use `Runtime.runIfWaitingForDebugger`\n"
" to run paused targets.\n"
" \n"
" Returns:\n"
).
-spec set_auto_attach(
fun((binary(), gleam@option:option(gleam@json:json())) -> AISI),
boolean(),
boolean()
) -> AISI.
set_auto_attach(Callback__, Auto_attach, Wait_for_debugger_on_start) ->
Callback__(
<<"Target.setAutoAttach"/utf8>>,
{some,
gleam@json:object(
[{<<"autoAttach"/utf8>>, gleam@json:bool(Auto_attach)},
{<<"waitForDebuggerOnStart"/utf8>>,
gleam@json:bool(Wait_for_debugger_on_start)}]
)}
).
-file("src/chrobot/protocol/target.gleam", 454).
?DOC(
" Controls whether to discover available targets and notify via\n"
" `targetCreated/targetInfoChanged/targetDestroyed` events.\n"
" \n"
" Parameters: \n"
" - `discover` : Whether to discover available targets.\n"
" \n"
" Returns:\n"
).
-spec set_discover_targets(
fun((binary(), gleam@option:option(gleam@json:json())) -> AISN),
boolean()
) -> AISN.
set_discover_targets(Callback__, Discover) ->
Callback__(
<<"Target.setDiscoverTargets"/utf8>>,
{some,
gleam@json:object(
[{<<"discover"/utf8>>, gleam@json:bool(Discover)}]
)}
).