Sha256: 071867d51186bbf3b483a6167b2c2cf2481d15eb0f9165738e858db5035286f0

Contents?: true

Size: 929 Bytes

Versions: 2

Compression:

Stored size: 929 Bytes

Contents

require 'open-uri'

module BookingLocations
  class Api
    def get(id)
      response = open("#{api_uri}/api/v1/booking_locations/#{id}.json", headers_and_options)
      yield JSON.parse(response.read)
    rescue OpenURI::HTTPError, Net::ReadTimeout
      nil
    end

    def all
      response = open("#{api_uri}/api/v1/booking_locations.json", headers_and_options)
      JSON.parse(response.read)
    end

    private

    def headers_and_options
      {}.tap do |hash|
        hash[:read_timeout]   = read_timeout
        hash['Authorization'] = "Bearer #{bearer_token}" if bearer_token
        hash['Accept'] = 'application/json'
      end
    end

    def bearer_token
      ENV['BOOKING_LOCATIONS_API_BEARER_TOKEN']
    end

    def api_uri
      ENV.fetch('BOOKING_LOCATIONS_API_URI', 'http://localhost:3001')
    end

    def read_timeout
      ENV.fetch('BOOKING_LOCATIONS_API_READ_TIMEOUT', 5).to_i
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
booking_locations-0.19.0 lib/booking_locations/api.rb
booking_locations-0.18.0 lib/booking_locations/api.rb