lib/billomat/gateway.rb in billomat-0.1.0 vs lib/billomat/gateway.rb in billomat-0.1.1

- old
+ new

@@ -2,21 +2,38 @@ require 'rest-client' require 'json' module Billomat + ## + # Raised if something goes wrong during an API call class GatewayError < StandardError; end + ## + # This class can be used by the gem to communicate with the API class Gateway attr_reader :method, :path, :body + ## + # Creates a new Gateway + # + # @param [Symbol] method The HTTP verb + # @param [String] path The path of the resource + # @param [Hash] body The payload for the request + # + # @example + # Billomat::Gateway.new(:get, '/invoices') + # Billomat::Gateway.new(:post, '/invoices', { 'invoice' => { ... } }) def initialize(method, path, body = {}) @method = method.to_sym @path = path @body = body end + ## + # Executes the API call + # @return [Hash] The response body def run resp = RestClient::Request.execute( method: method, url: url, timeout: timeout, @@ -28,25 +45,29 @@ return nil if resp.body.empty? JSON.parse(resp.body) end + # @return [String] The complete URL for the request def url "https://#{config.subdomain}.billomat.net/api#{path}" end + # @return [Integer] def timeout 5 end + # @return [Hash] The headers for the request. def headers { 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'X-BillomatApiKey' => config.api_key } end + # @return [Billomat::Configuration] The global gem configuration def config Billomat.configuration end end end