class Skyscanner::Connection

Public Class Methods

new(options = {}) click to toggle source
# File lib/skyscanner.rb, line 55
def initialize(options = {})
  @options = self.class.options.merge({}.tap do |opts|
    options.each do |k, v|
      opts[k.to_sym] = v
    end
  end)
end

Public Instance Methods

adapter() click to toggle source
# File lib/skyscanner.rb, line 7
def adapter; @@adapter ||= :net_http; end
adapter=(input) click to toggle source
# File lib/skyscanner.rb, line 8
def adapter=(input); @@adapter = input; end
api_key() click to toggle source
# File lib/skyscanner.rb, line 87
def api_key
  @options[:api_key]
end
apikey() click to toggle source
# File lib/skyscanner.rb, line 51
def apikey; @@api_key end
apikey=(input) click to toggle source
# File lib/skyscanner.rb, line 52
def apikey=(input); @@api_key = input; end
browse_dates(*args) click to toggle source
# File lib/skyscanner.rb, line 14
def browse_dates(*args); new.browse_dates(*args); end
browse_grid(*args) click to toggle source
# File lib/skyscanner.rb, line 12
def browse_grid(*args); new.browse_grid(*args); end
browse_quotes(*args) click to toggle source
# File lib/skyscanner.rb, line 11
def browse_quotes(*args); new.browse_quotes(*args); end
browse_routes(*args) click to toggle source
# File lib/skyscanner.rb, line 13
def browse_routes(*args); new.browse_routes(*args); end
endpoint_uri(method) click to toggle source
# File lib/skyscanner.rb, line 177
def endpoint_uri(method)
  "#{protocol}://#{url}/#{method}/#{version}/"
end
events(*args) click to toggle source
# File lib/skyscanner.rb, line 16
def events(*args); new.events(*args); end
handle_response(response) click to toggle source
# File lib/skyscanner.rb, line 63
def handle_response(response)
  if response_format == :ruby and response.status == 200
    MultiJson.decode(response.body)
  else
    { :status => response.status, :body => response.body }
  end
end
id() click to toggle source

Ruby 1.8.7 / ree compatibility

# File lib/skyscanner.rb, line 72
def id
  @options[:id]
end
logger() click to toggle source
# File lib/skyscanner.rb, line 18
def logger; @@logger ||= nil; end
logger=(input) click to toggle source
# File lib/skyscanner.rb, line 19
def logger=(input); @@logger = input; end
options() click to toggle source
# File lib/skyscanner.rb, line 21
def options
  {
    :adapter => adapter,
    :logger => logger,
    :protocol => protocol,
    :response_format => response_format,
    :url => url,
    :version => version,
    :api_key => apikey
  }
end
performers(*args) click to toggle source
# File lib/skyscanner.rb, line 33
def performers(*args); new.performers(*args); end
protocol() click to toggle source
# File lib/skyscanner.rb, line 35
def protocol; @@protocol ||= :http; end
protocol=(input) click to toggle source
# File lib/skyscanner.rb, line 36
def protocol=(input); @@protocol = input; end
request(url, segments, params) click to toggle source
# File lib/skyscanner.rb, line 76
def request(url, segments, params)
  handle_response(Faraday.new(*builder(url, segments_to_path(segments, params), params.clone)) do |build|
    build.adapter adapter
    #        build.use Faraday::Response::VerboseLogger, logger unless logger.nil?
  end.get)
end
response_format() click to toggle source
# File lib/skyscanner.rb, line 38
def response_format; @@response_format ||= :ruby; end
response_format=(input) click to toggle source
# File lib/skyscanner.rb, line 39
def response_format=(input); @@response_format = input; end
segments_to_path(segments, params) click to toggle source
# File lib/skyscanner.rb, line 91
def segments_to_path(segments, params)
  out = []
  segments.each do |k, v|
    value = params[k]
    if value then
      out << value
    elsif v then
      raise ArgumentError.new("Mandatory parameter (#{k}) missing")
    end
  end
  out.join('/')
end
site_redirect(*args) click to toggle source
# File lib/skyscanner.rb, line 10
def site_redirect(*args); new.site_redirect(*args); end
taxonomies(*args) click to toggle source
# File lib/skyscanner.rb, line 41
def taxonomies(*args); new.taxonomies(*args); end
uri(path) click to toggle source
# File lib/skyscanner.rb, line 181
def uri(path)
  "#{protocol}://#{url}/#{path}/#{version}"
end
url() click to toggle source
# File lib/skyscanner.rb, line 43
def url; @@url ||= "partners.api.skyscanner.net/apiservices"; end
url=(input) click to toggle source
# File lib/skyscanner.rb, line 44
def url=(input); @@url = input; end
venues(*args) click to toggle source
# File lib/skyscanner.rb, line 46
def venues(*args); new.venues(*args); end
version() click to toggle source
# File lib/skyscanner.rb, line 48
def version; @@version ||= "v1.0"; end
version=(input) click to toggle source
# File lib/skyscanner.rb, line 49
def version=(input); @@version = input; end

Private Instance Methods

builder(uri_segment, path, params) click to toggle source
# File lib/skyscanner.rb, line 191
def builder(uri_segment, path, params)
  return [
    [].tap do |part|
      part << endpoint_uri(uri_segment)
      part << path
      part << "/#{params.delete(:id)}" unless params[:id].nil?
    end.join,
    {
      :params => custom_options.merge(([:jsonp, :xml].include?(response_format) ? \
      params.merge(:format => response_format) : params)).merge(:apiKey => api_key)
    }
  ]
end
custom_options() click to toggle source
# File lib/skyscanner.rb, line 205
def custom_options
  @custom_options ||= {}.tap do |opts|
    ignore = self.class.options.keys
    @options.each do |k, v|
      opts[k] = v unless ignore.include?(k)
    end
  end
end
method_missing(method, *params) click to toggle source
Calls superclass method
# File lib/skyscanner.rb, line 187
def method_missing(method, *params)
  @options.keys.include?(method.to_sym) && params.first.nil? ? @options[method.to_sym] : super
end