53 lines
1.4 KiB
Ruby
53 lines
1.4 KiB
Ruby
module ShowMeTheCookies
|
|
class Cuprite
|
|
def initialize(driver)
|
|
@browser = driver.browser
|
|
end
|
|
|
|
def get_me_the_cookie(cookie_name)
|
|
c = @browser.cookies[cookie_name]
|
|
c ? {:name => c.name, :value => c.value, :expires => c.expires, :path => c.path} : nil
|
|
end
|
|
|
|
def get_me_the_cookies
|
|
@browser.cookies.values.map { |c| {:name => c.name, :value => c.value, :expires => c.expires, :path => c.path} }
|
|
end
|
|
|
|
def expire_cookies
|
|
@browser.clear_cookies
|
|
end
|
|
|
|
def delete_cookie(cookie_name)
|
|
c = @browser.cookies[cookie_name]
|
|
if c
|
|
@browser.cookies.remove(name: cookie_name, domain: c.domain)
|
|
else
|
|
# If we can't find it, we try to remove it from the current domain as a best effort
|
|
begin
|
|
url = @browser.url
|
|
domain = URI.parse(url).host
|
|
@browser.cookies.remove(name: cookie_name, domain: domain)
|
|
rescue
|
|
# ignore if it fails
|
|
end
|
|
end
|
|
end
|
|
|
|
def create_cookie(cookie_name, cookie_value, options = {})
|
|
opts = options.dup
|
|
opts[:name] = cookie_name
|
|
opts[:value] = cookie_value
|
|
# Cuprite/Ferrum expects domain to be set if we want it to stick
|
|
if !opts[:domain] && !opts[:url]
|
|
begin
|
|
opts[:domain] = URI.parse(@browser.url).host
|
|
rescue
|
|
end
|
|
end
|
|
@browser.cookies.set(opts)
|
|
end
|
|
end
|
|
end
|
|
|
|
ShowMeTheCookies.register_adapter(:cuprite, ShowMeTheCookies::Cuprite)
|