class YoutubeParser::Client

Constants

BASE_URL
DATA_REGEX

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/youtube_parser/client.rb, line 10
def initialize(options = {})
  @options = Resource.new(options)
end

Public Instance Methods

get(endpoint, options = {}) click to toggle source
# File lib/youtube_parser/client.rb, line 14
def get(endpoint, options = {})
  response = client.get(endpoint, options)
  return {} unless response.status.eql?(200)

  json_str = response.body[DATA_REGEX, 1]

  get_json json_str
end

Private Instance Methods

client() click to toggle source
# File lib/youtube_parser/client.rb, line 25
def client
  opts = { ssl: { verify: false }, request: { timeout: 10 } }
  @client ||= Faraday.new(BASE_URL, opts) do |request|
    request.adapter Faraday.default_adapter
    request.headers['Accept-Language'] = 'en-US'
    request.headers['User-Agent'] = options.user_agent if options.user_agent
    request.proxy = proxy if options.proxy
  end
end
get_json(json_str) click to toggle source
# File lib/youtube_parser/client.rb, line 41
def get_json(json_str)
  Oj.load(json_str)
end
proxy() click to toggle source
# File lib/youtube_parser/client.rb, line 35
def proxy
  URI(options.proxy)
rescue URI::InvalidURIError
  URI("//#{options.proxy}")
end