Sha256: 48d49153555b8f87aebdf849c21f7ee8dfe515f1ebbf071ad9cdc862d083d343

Contents?: true

Size: 1.11 KB

Versions: 5

Compression:

Stored size: 1.11 KB

Contents

require 'httparty'

module ECMBlockchain
  module Request
    def self.extended(base)
      base.include HTTParty
    end
    
    HTTP_VERBS = %i(post get delete patch)

    def request(method, url, data=nil)
      ECMBlockchain.has_api_key?
      check_http_verb(method)
      response = api_client_call(method, url, data)
      raise ECMBlockchain::Error.raise_error(response) unless response.success?
      JSON.parse(response.body, symbolize_names: true) if response.body
    end

    private

    def api_client_call(verb, url, data)
      args = [ verb, ECMBlockchain.base_url + url ]
      headers = {}
      headers[:body] = data.to_json if data
      headers.merge! request_headers
      args.push(headers)
      self.send *args
    end

    def check_http_verb(verb)
      unless HTTP_VERBS.include?(verb)
        raise BadRequest.new( 
          message: "HTTP Verb needs to be one of the following: #{ HTTP_VERBS }",
          code: 400)
      end
    end

    def request_headers
      { :headers => {"Content-Type" => "application/json", "Authorization" => "Bearer #{ECMBlockchain.access_token}"} }
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
ecm-blockchain-api-1.1.2 lib/ecm-blockchain-api/request.rb
ecm-blockchain-api-1.1.1 lib/ecm-blockchain-api/request.rb
ecm-blockchain-api-1.1.0 lib/ecm-blockchain-api/request.rb
ecm_blockchain_api-1.0.1 lib/ecm_blockchain_api/request.rb
ecm_blockchain_api-1.0.0 lib/ecm_blockchain_api/request.rb