Sha256: 826b3759ddaae567fc46b92db6d17359d84c8b443eb34199e1a0ba4a9f22a952

Contents?: true

Size: 640 Bytes

Versions: 9

Compression:

Stored size: 640 Bytes

Contents

module Billogram
  class Request
    attr_reader :url, :type, :params

    def initialize(type, url, params = {})
      @url = url
      @type = type
      @params = params
    end

    def content
      case type
      when :post, :put
        { body: params.to_json }
      when :get
        { query: params }
      when :delete
        {}
      end
    end

    def execute
      response.success? ? response["data"] : raise_from(response)
    end

    def raise_from(response)
      raise Billogram::Error.from_response(response)
    end

    def response
      @response ||= Billogram.client.send(type, url, content)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
billogram-0.6.1 lib/billogram/request.rb
billogram-0.6.0 lib/billogram/request.rb
billogram-0.5.6 lib/billogram/request.rb
billogram-0.5.5 lib/billogram/request.rb
billogram-0.5.4 lib/billogram/request.rb
billogram-0.5.3 lib/billogram/request.rb
billogram-0.5.2 lib/billogram/request.rb
billogram-0.5.1 lib/billogram/request.rb
billogram-0.5.0 lib/billogram/request.rb