Sha256: f7b64ee7744251adcacaeeaac16274564b25b76e99ab763ee68c3d7e2551f1e1

Contents?: true

Size: 1.22 KB

Versions: 16

Compression:

Stored size: 1.22 KB

Contents

module Myfinance
  class Request
    def initialize(args)
      @args = args
    end

    def run
      request.run
      request.response
    end

    private

    attr_reader :args

    def request
      @request ||= Typhoeus::Request.new(args[:url], options)
    end

    def options
      {
        method:           args[:method],
        params:           args[:params],
        body:             body,
        headers:          headers,
        accept_encoding:  "gzip",
        params_encoding: :rack
      }.reject { |_k, v| v.nil? }
    end

    def headers
      headers = args.fetch(:headers) { {} }

      {
        "Accept"         => "application/json",
        "Content-Type"   => content_type,
        "User-Agent"     => args[:user_agent],
        "Authorization"  => "Basic #{authorization_hash}",
        "ACCOUNT_ID"     => args[:account_id]
      }.merge(headers).delete_if { |_, v| v.nil? || v.to_s.empty? }
    end

    def body
      body = args[:body]
      body = MultiJson.dump(body) if body.is_a?(Hash) && !args[:multipart]
      body
    end

    def authorization_hash
      ::Base64.strict_encode64("#{args[:token]}:X")
    end

    def content_type
      args[:multipart] ? nil : "application/json"
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
myfinance-1.8.3 lib/myfinance/request.rb
myfinance-1.8.2 lib/myfinance/request.rb
myfinance-1.8.1 lib/myfinance/request.rb
myfinance-1.8.0 lib/myfinance/request.rb
myfinance-1.7.0 lib/myfinance/request.rb
myfinance-1.6.6 lib/myfinance/request.rb
myfinance-1.6.5 lib/myfinance/request.rb
myfinance-1.6.4 lib/myfinance/request.rb
myfinance-1.6.3 lib/myfinance/request.rb
myfinance-1.6.1 lib/myfinance/request.rb
myfinance-1.6.0 lib/myfinance/request.rb
myfinance-1.5.0 lib/myfinance/request.rb
myfinance-1.4.1 lib/myfinance/request.rb
myfinance-1.4.0 lib/myfinance/request.rb
myfinance-1.3.1 lib/myfinance/request.rb
myfinance-1.3.0 lib/myfinance/request.rb