class TVDB::Connection

Attributes

connection[R]
host_url[R]
language[RW]
modified_since[RW]
response_struct[RW]
token[RW]
version[RW]

Public Class Methods

new( options = {} ) click to toggle source
# File lib/tvdb_client/connection.rb, line 9
def initialize( options = {} )
  @token           = ""
  
  @host_url        = options.fetch( :host_url ) { Settings.tvdb.host_url }
  @language        = options[:language]
  @version         = options[:version]
  @modified_since  = options[:modified_since]

  @connection      = Faraday.new( :url => host_url, :ssl => { :verify => false } )
  @response_struct = Struct.new( :request_url, :code, :body, :headers )
end

Public Instance Methods

get( route, options = {} ) click to toggle source
# File lib/tvdb_client/connection.rb, line 33
def get( route, options = {} )
  params, headers = parse_options( options )

  response = connection.get do |req|
    req.url( route )
    req.headers = headers
    req.params  = params
  end

  return parsed_response( response )
end
parse_options( options ) click to toggle source
# File lib/tvdb_client/connection.rb, line 45
def parse_options( options )
  headers = set_default_headers( options )
  params  = set_params( options )

  return params, headers
end
parsed_response( response ) click to toggle source
# File lib/tvdb_client/connection.rb, line 83
def parsed_response( response )
  unless response.body.empty?
    body = JSON.parse( response.body )
  else
    body = nil
  end

  response_struct.new(
    "#{host_url}#{response.env.url.request_uri}",
    response.status,
    body,
    response.env.response_headers
  )
end
post( route, options ) click to toggle source
# File lib/tvdb_client/connection.rb, line 21
def post( route, options )
  request_body = options.fetch( :body )

  response = connection.post do |req|
    req.url( route )
    req.headers = set_default_headers( options )
    req.body    = request_body.to_json
  end

  return parsed_response( response )
end
set_convenience_headers( options ) click to toggle source
# File lib/tvdb_client/connection.rb, line 75
def set_convenience_headers( options )
  if options
    @language       = options[:language]
    @version        = options[:version]
    @modified_since = options[:modified_since]
  end
end
set_default_headers( options ) click to toggle source
# File lib/tvdb_client/connection.rb, line 60
def set_default_headers( options )
  set_convenience_headers( options )

  headers = options[:headers] if options
  headers ||= {}

  headers["Authorization"]     ||= "Bearer #{token}"
  headers["Content-Type"]      ||= "application/json"
  headers["Accept-Language"]   ||= "#{language}"
  headers["Accept"]            ||= "application/vnd.thetvdb.v#{version}"
  headers["If-Modified-Since"] ||= "#{modified_since}"

  return headers
end
set_params( options ) click to toggle source
# File lib/tvdb_client/connection.rb, line 52
def set_params( options )
  [:language, :version, :modified_since, :headers].each do |param|
    options.delete_if { |key, value| key == param }
  end

  return options
end