Sha256: dc6b8a279a2bf7ada8bc2d14e409ef6b75549e3570c5247c481c9d317f89cc3a

Contents?: true

Size: 1.31 KB

Versions: 15

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true
require 'http'

module Skyscanner
  # Service for all SkyScanner API calls
  class SkyscannerApi
    SKY_URL = 'http://partners.api.skyscanner.net/apiservices/browseroutes/'
    API_VER = 'v1.0'
    SKY_API_URL = URI.join(SKY_URL, "#{API_VER}/")

    def self.config=(credentials)
      @config = {} unless @config
      @config.update(credentials)
    end

    def self.config
      return @config if @config
      @config = {
        api_key: ENV['SKY_API_KEY']
      }
    end

    def self.routes_info(data)
      skyscanner_routes_response = HTTP.get(
        route_info_url(data),
        params: {
          apiKey: config[:api_key]
        }
      )
      JSON.parse(skyscanner_routes_response.to_s)
    end

    private

    def self.route_info_url(data)
      URI.join(
        SKY_API_URL,
        route_env_param(data[:market], data[:currency], data[:locale]),
        route_place_param(data[:origin], data[:destination]),
        route_date_param(data[:outbound], data[:inbound])
      )
    end

    def self.route_env_param(market, currency, locale)
      "#{market}/#{currency}/#{locale}/"
    end

    def self.route_place_param(origin, destination)
      "#{origin}/#{destination}/"
    end

    def self.route_date_param(outbound, inbound)
      "#{outbound}/#{inbound}"
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
movlog-0.3.14 lib/movlog/skyscanner_api.rb
movlog-0.3.13 lib/movlog/skyscanner_api.rb
movlog-0.3.12 lib/movlog/skyscanner_api.rb
movlog-0.3.11 lib/movlog/skyscanner_api.rb
movlog-0.3.10 lib/movlog/skyscanner_api.rb
movlog-0.3.9 lib/movlog/skyscanner_api.rb
movlog-0.3.8 lib/movlog/skyscanner_api.rb
movlog-0.3.7 lib/movlog/skyscanner_api.rb
movlog-0.3.6 lib/movlog/skyscanner_api.rb
movlog-0.3.5 lib/movlog/skyscanner_api.rb
movlog-0.3.4 lib/movlog/skyscanner_api.rb
movlog-0.3.3 lib/movlog/skyscanner_api.rb
movlog-0.3.2 lib/movlog/skyscanner_api.rb
movlog-0.3.1 lib/movlog/skyscanner_api.rb
movlog-0.3.0 lib/movlog/skyscanner_api.rb