class Ferrum::Cookies

Public Class Methods

new(page) click to toggle source
# File lib/ferrum/cookies.rb, line 53
def initialize(page)
  @page = page
end

Public Instance Methods

[](name) click to toggle source
# File lib/ferrum/cookies.rb, line 62
def [](name)
  all[name]
end
all() click to toggle source
# File lib/ferrum/cookies.rb, line 57
def all
  cookies = @page.command("Network.getAllCookies")["cookies"]
  cookies.map { |c| [c["name"], Cookie.new(c)] }.to_h
end
clear() click to toggle source
# File lib/ferrum/cookies.rb, line 93
def clear
  @page.command("Network.clearBrowserCookies")
  true
end
remove(name:, **options) click to toggle source

Supports :url, :domain and :path options

# File lib/ferrum/cookies.rb, line 82
def remove(name:, **options)
  raise "Specify :domain or :url option" if !options[:domain] && !options[:url] && !default_domain

  options = options.merge(name: name)
  options[:domain] ||= default_domain

  @page.command("Network.deleteCookies", **options)

  true
end
set(name: nil, value: nil, **options) click to toggle source
# File lib/ferrum/cookies.rb, line 66
def set(name: nil, value: nil, **options)
  cookie = options.dup
  cookie[:name]   ||= name
  cookie[:value]  ||= value
  cookie[:domain] ||= default_domain

  cookie[:httpOnly] = cookie.delete(:httponly) if cookie.key?(:httponly)
  cookie[:sameSite] = cookie.delete(:samesite) if cookie.key?(:samesite)

  expires = cookie.delete(:expires).to_i
  cookie[:expires] = expires if expires > 0

  @page.command("Network.setCookie", **cookie)["success"]
end

Private Instance Methods

default_domain() click to toggle source
# File lib/ferrum/cookies.rb, line 100
def default_domain
  URI.parse(@page.browser.base_url).host if @page.browser.base_url
end