Sha256: 01ec0377d594353bddd55ba9a11183f7cca5876a041cfa3b055480ab486b021f

Contents?: true

Size: 989 Bytes

Versions: 1

Compression:

Stored size: 989 Bytes

Contents

require "rexpense/request"
require "rexpense/response"

module Rexpense
  class Http
    attr_reader :token, :base_url

    SANDBOX_URL = "https://sandbox.rexpense.com/api"
    PRODUCTION_URL = "https://app.rexpense.com/api"

    def initialize(token)
      @token = token
      @base_url = api_url + "/#{Rexpense.configuration.version}"
    end

    %w[get post delete put patch].each do |m|
      define_method(m) do |path, options = {}, &block|
        send_request(m.to_sym, path, options, &block)
      end
    end

    private

    def api_url
      return PRODUCTION_URL if Rexpense.configuration.api_mode == 'production'
      SANDBOX_URL
    end

    def send_request(method, path, options, &block)
      request = Request.new(
        options.merge!(
          method: method,
          token: token,
          url: "#{base_url}#{path}",
          user_agent: Rexpense.configuration.user_agent
        )
      )
      Response.new(request.run).resolve!(&block)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rexpense-1.0.0 lib/rexpense/http.rb