class StubHubApi::Base

Attributes

sandbox[R]
token[R]

Public Class Methods

new(token:, sandbox:) click to toggle source
# File lib/stub_hub_api/base.rb, line 5
def initialize(token:, sandbox:)
  @token   = token
  @sandbox = sandbox
end

Public Instance Methods

delete_query_api(url) click to toggle source
# File lib/stub_hub_api/base.rb, line 45
def delete_query_api url
  session.delete(make_request_url(url, {})).body
end
get_query_api(url, options) click to toggle source
# File lib/stub_hub_api/base.rb, line 10
def get_query_api url, options
  session.get(make_request_url(url, options)).body
end
post_multi_part_query_api(url, options, file) click to toggle source
# File lib/stub_hub_api/base.rb, line 35
def post_multi_part_query_api url, options, file
  session.post do |req|
    req.url make_request_url(url, options)
    req.headers['Content-Type'] = 'multipart/form-data'
    req.body = {}
    req.body[:file] = Faraday::UploadIO.new(file, 'application/pdf', "#{Time.now.to_i * rand(1000)}.pdf")
    req.options.timeout = 2000
  end.body
end
post_multi_pdfs_json_query_api(url, body) click to toggle source
# File lib/stub_hub_api/base.rb, line 26
def post_multi_pdfs_json_query_api url, body
  session.post do |req|
    req.url url
    req.headers["Content-Type"] = 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'
    req.body = body
    req.options.timeout = 2000
  end.body
end
post_query_api(url, payload = false, options) click to toggle source
# File lib/stub_hub_api/base.rb, line 14
def post_query_api url, payload = false, options
  if payload
    session.post do |req|
      req.url url
      req.headers['Content-Type'] = 'application/json'
      req.body = options.to_json
    end.body
  else
    session.post(url, builder_options(options)).body
  end
end
put_query_api(url, payload = false, options) click to toggle source
# File lib/stub_hub_api/base.rb, line 49
def put_query_api url, payload = false, options
  if payload
    session.put do |req|
      req.url url
      req.headers['Content-Type'] = 'application/json'
      req.body = options.to_json
    end.body
  else
    session.put(url, builder_options(options)).body
  end
end

Private Instance Methods

base_url() click to toggle source
# File lib/stub_hub_api/base.rb, line 80
def base_url
  'https://api.stubhub.com'
end
builder_options(options) click to toggle source
# File lib/stub_hub_api/base.rb, line 92
def builder_options options
  options.any? ? "?#{to_query(options)}" : ''
end
current_base_url() click to toggle source
# File lib/stub_hub_api/base.rb, line 84
def current_base_url
  sandbox ? sandbox_base_url : base_url
end
folder_log() click to toggle source
# File lib/stub_hub_api/base.rb, line 63
def folder_log
  folder_path =  "#{ENV['HOME']}/loggers/sh"
  unless File.exists?(folder_path)
    system "mkdir -p #{folder_path}"
  end
  folder_path
end
logger() click to toggle source
# File lib/stub_hub_api/base.rb, line 71
def logger
  log_file = File.open("#{folder_log}/#{Time.now.strftime('%Y-%m-%d')}.log",'a+')
  @logger  = ::Logger.new(log_file)
end
make_request_url(url, options) click to toggle source
# File lib/stub_hub_api/base.rb, line 88
def make_request_url url, options
  "#{url}#{builder_options(options)}"
end
sandbox_base_url() click to toggle source
# File lib/stub_hub_api/base.rb, line 76
def sandbox_base_url
  'https://api.stubhubsandbox.com'
end
session() click to toggle source
# File lib/stub_hub_api/base.rb, line 106
def session
  return @connection if @connection

  @connection = ::Faraday.new current_base_url, ssl: {verify: false} do |conn|
    conn.use Faraday::Response::StubHub
    conn.use Faraday::Response::StubHubCustomLogger, logger
    conn.request  :url_encoded
    conn.request  :multipart
    conn.adapter  Faraday.default_adapter
  end
  @connection.headers[:user_agent] = user_agents.shuffle.first
  @connection.authorization :Bearer, token
  @connection
end
to_query(options) click to toggle source
# File lib/stub_hub_api/base.rb, line 96
def to_query(options)
  Faraday::Utils.build_nested_query(options)
end
user_agents() click to toggle source
# File lib/stub_hub_api/base.rb, line 100
def user_agents
  ["Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (FM Scene 4.6.1) ",
   "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) (Prevx 3.0.5) ",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36"]
end