Current section
Files
Jump to
Current section
Files
lib/session.ex
defmodule ChromeRemoteInterface.Server do
defstruct [
:host,
:port,
:page_pool_size
]
end
defmodule ChromeRemoteInterface.Session do
use GenServer
@default_opts [
host: "localhost",
port: 9222,
page_pool_size: 100
]
def start_link(opts \\ []) do
merged_opts = Keyword.merge(@default_opts, opts)
server = %ChromeRemoteInterface.Server{
host: Keyword.get(merged_opts, :host),
port: Keyword.get(merged_opts, :port),
page_pool_size: Keyword.get(merged_opts, :page_pool_size)
}
GenServer.start_link(__MODULE__, server)
end
def checkout_page(pid) do
GenServer.call(pid, :checkout_page)
end
def handle_call(:checkout_page, _from, server) do
{:ok, pages} = ChromeRemoteInterface.list(server)
page = List.first(pages)
url = page["webSocketDebuggerUrl"]
{:reply, ChromeRemoteInterface.PageSession.start_link(url), server}
end
end