Sha256: a7c5be09a7d726b750b85d4aefdb1987e93ad0b2ad793ab1d7b7efa9b78ea84a

Contents?: true

Size: 936 Bytes

Versions: 2

Compression:

Stored size: 936 Bytes

Contents

require 'multi_json'
require 'httpclient'
require 'tankard/error'

module Tankard
  class Request

    def initialize(api_key)
      @http = HTTPClient.new
      @api_key = api_key
    end

    def get(route, params={})
      params[:key] = @api_key
      request = @http.get(build_request_url(route), params)
      raise_if_status_not_ok(request.status)
      load_json(request.body)
    end

    private

      def raise_if_status_not_ok(status)
        case status
        when 200
          true
        when 401
          raise Tankard::Error::ApiKeyUnauthorized
        else
          raise Tankard::Error::HttpError
        end
      end

      def build_request_url(route)
        Tankard::Configuration::BREWERYDB_URL + route
      end

      def load_json(json_data)
        begin
          MultiJson.load(json_data)
        rescue MultiJson::LoadError
          raise Tankard::Error::LoadError
        end
      end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tankard-0.1.0 lib/tankard/request.rb
tankard-0.0.1 lib/tankard/request.rb