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