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