Sha256: 5116301dc576786a7f935450652e81e15f9ae684fabe065a3a9736b86515ccf3

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

module TripAdvisor
  class API
    attr_accessor :base_url, :api_key
    attr_writer :verbose
  
    def initialize(options={})
      require 'rest-client'
      require 'addressable/uri'
      require 'oj'
    
      self.api_key = options[:api_key]
      self.base_url = options[:base_url] || ENV['TRIPADVISOR_API_BASE_URL'] || 'https://www.tripadvisor.com/api/internal/1.0/'
      raise "API Key cannot be nil" unless api_key
    end
  
    def base_url=(base_url)
      @base_url = base_url.is_a?(String) ? Addressable::URI.parse(base_url) : base_url
    end
  
    def get_locales
      response = get(:locales)
      Oj.load(response)['data']
    end

    def get_flights_locales
      get_locales.select { |locale| locale['is_mobile_flights_enabled'] == 'true' }
    end
  
    def verbose?
      @verbose
    end
    
    def get(method, params = {})    
      query_string = "?%s" % Addressable::URI.form_encode(params.merge('key' => api_key))
      url = Addressable::URI.join(base_url, method.to_s, query_string)
      puts_verbose("GET URL '#{url}'")
      RestClient.get(url.to_s)
    end
  
    private
    def puts_verbose(string)
      puts(string) if verbose?
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
trip_advisor-0.0.21 lib/trip_advisor/api.rb
trip_advisor-0.0.15 lib/trip_advisor/api.rb