defmodule Playwright.Route do @moduledoc """ ... """ use Playwright.ChannelOwner alias Playwright.Route @type options :: map() @property :request # --- # @spec abort(t(), binary()) :: :ok # def abort(route, error_code \\ nil) # --- @spec continue(t(), options()) :: :ok def continue(route, options \\ %{}) def continue(%Route{session: session} = route, options) do params = Map.merge(options, %{intercept_response: false}) Channel.post(session, {:guid, route.guid}, :continue, params) end @spec fulfill(t(), options()) :: :ok # def fulfill(route, options \\ %{}) def fulfill(%Route{session: session} = route, %{status: status, body: body}) when is_binary(body) do length = String.length(body) params = %{ body: body, is_base64: false, length: length, status: status, headers: serialize_headers(%{ "content-length" => "#{length}" }) } Channel.post(session, {:guid, route.guid}, :fulfill, params) end # --- # @spec request(t()) :: Request.t() # def request(route) # --- # private # --------------------------------------------------------------------------- defp serialize_headers(headers) when is_map(headers) do Enum.reduce(headers, [], fn {k, v}, acc -> [%{name: k, value: v} | acc] end) end end