Sha256: a2c0ac45d706d56e831625af2af22a0e6bb1676086089af0a970cc03ff50b80a

Contents?: true

Size: 1.16 KB

Versions: 4

Compression:

Stored size: 1.16 KB

Contents

require 'faraday'
require 'faraday_middleware'
require 'erb'

module Pokemon
  module RestClient

    def self.get(endpoint, params=nil)
      if params.nil?
        query = endpoint
      else
        query = "#{endpoint}?#{params_to_query(params)}"
      end

      response = client.get(query)

      case response.status
      when 200
        JSON.parse(response.body)
      when 429
        raise 'You have hit your rate limit.'
      when 404
        raise ArgumentError, 'Resource not found'
      when 403
        raise 'You are not authorized to access this endpoint. Please make sure you have a valid API Key. Go to https://dev.pokemontcg.io for more info.'
      else
        raise 'Something went wrong...please try again later.'
      end
    end
    
    protected
    
    def self.client
      headers = {'Content-Type' => 'application/json'}
      headers['X-Api-Key'] = Pokemon.configuration.api_key unless Pokemon.configuration.api_key.nil?

      @client = Faraday.new(
        url: "#{API_URL}/v2",
        headers: headers
      )
    end

    def self.params_to_query(params)
      params.map {|p, v| "#{p}=#{ERB::Util.url_encode(v.to_s)}"}.join('&')
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pokemon_tcg_sdk-4.5.0 lib/pokemon_tcg_sdk/rest_client.rb
pokemon_tcg_sdk-4.4.0 lib/pokemon_tcg_sdk/rest_client.rb
pokemon_tcg_sdk-4.3.0 lib/pokemon_tcg_sdk/rest_client.rb
pokemon_tcg_sdk-4.2.1 lib/pokemon_tcg_sdk/rest_client.rb