class Tweakphoeus::Client
Http client class
Attributes
base_headers[RW]
redirect[RW]
referer_list[RW]
ssl_verifypeer[R]
Public Class Methods
new(ua_systems: %i[linux mac], ssl_verifypeer: true, redirect: false)
click to toggle source
# File lib/tweakphoeus.rb, line 13 def initialize(ua_systems: %i[linux mac], ssl_verifypeer: true, redirect: false) @cookie_jar = Tweakphoeus::CookieJar.new @referer_list = Tweakphoeus::RefererList.new @redirect = redirect @base_headers = build_base_headers(ua_systems) @proxy = nil @proxyuserpwd = nil @ssl_verifypeer = ssl_verifypeer end
Public Instance Methods
delete(url, body: nil, headers: nil)
click to toggle source
# File lib/tweakphoeus.rb, line 28 def delete(url, body: nil, headers: nil) referer_from_headers(headers) http_request(url, body: body, headers: headers, method: :delete) end
get(url, body: nil, params: nil, headers: nil)
click to toggle source
# File lib/tweakphoeus.rb, line 23 def get(url, body: nil, params: nil, headers: nil) referer_from_headers(headers) http_request(url, body: body, params: params, headers: headers, method: :get) end
post(url, body: nil, headers: nil)
click to toggle source
# File lib/tweakphoeus.rb, line 33 def post(url, body: nil, headers: nil) referer_from_headers(headers) http_request(url, body: body, headers: headers, method: :post) end
set_proxy(url, auth)
click to toggle source
# File lib/tweakphoeus.rb, line 38 def set_proxy(url, auth) return unless auth @proxyuserpwd = "#{auth[:user]}:#{auth[:password]}" @proxy = url end
unset_proxy()
click to toggle source
# File lib/tweakphoeus.rb, line 45 def unset_proxy @proxyuserpwd = nil @proxy = nil end
Private Instance Methods
build_base_headers(ua_systems)
click to toggle source
# File lib/tweakphoeus.rb, line 80 def build_base_headers(ua_systems) { 'User-Agent' => UserAgent.random(systems: ua_systems), 'Accept-Language' => 'es-ES,es;q=0.9,en;q=0.8', 'Accept-Encoding' => '', 'Connection' => 'keep-alive' } end
build_request_headers(headers)
click to toggle source
# File lib/tweakphoeus.rb, line 64 def build_request_headers(headers) request_headers = merge_default_headers(headers) request_headers['Cookie'] = @cookie_jar.cookie_string(url, headers) request_headers['Referer'] = @referer_list.last_referer end
http_request(url, body: nil, params: nil, headers: nil, method: :get)
click to toggle source
# File lib/tweakphoeus.rb, line 52 def http_request(url, body: nil, params: nil, headers: nil, method: :get) response = Typhoeus.send(method, url, body: body, params: params, headers: build_request_headers(headers), proxy: @proxy, proxyuserpwd: @proxyuserpwd, ssl_verifypeer: ssl_verifypeer) @cookie_jar.obtain_cookies(response) @referer_list.push_referer(url) if method != :post return process_redirect(response) if redirect && redirect?(response) response end
merge_default_headers(headers)
click to toggle source
# File lib/tweakphoeus.rb, line 89 def merge_default_headers(headers) headers ? @base_headers.merge(headers) : @base_headers end
process_redirect(response)
click to toggle source
# File lib/tweakphoeus.rb, line 70 def process_redirect(response) if response.code != 307 method = :get body = nil end http_request(redirect_url(response), body: body, headers: headers, redirect: redirect, method: method, ssl_verifypeer: ssl_verifypeer) end
redirect?(response)
click to toggle source
# File lib/tweakphoeus.rb, line 93 def redirect?(response) !redirect_url(response).nil? end
redirect_url(response)
click to toggle source
# File lib/tweakphoeus.rb, line 97 def redirect_url(response) response.headers['Location'] end