class Cryptopay::Request

Constants

CONTENT_TYPE
DEFAULT_HEADERS

Attributes

body[R]
content_type[R]
date[R]
headers[R]
method[R]
path[R]

Public Class Methods

new(method:, path:, query_params: {}, body_params: {}) click to toggle source
# File lib/cryptopay/request.rb, line 14
def initialize(method:, path:, query_params: {}, body_params: {})
  @method = method
  @path = prepare_query(path, query_params)
  @body = prepare_body(body_params.to_hash)
  @date = Time.now.httpdate
  @content_type = CONTENT_TYPE
  @headers = DEFAULT_HEADERS.merge(Date: date, 'Content-Type': @content_type)
end

Public Instance Methods

add_header(key, value) click to toggle source
# File lib/cryptopay/request.rb, line 23
def add_header(key, value)
  @headers = headers.merge(key => value)
end

Private Instance Methods

encode_query(params) click to toggle source
# File lib/cryptopay/request.rb, line 42
def encode_query(params)
  Faraday::NestedParamsEncoder.encode(params)
end
prepare_body(params) click to toggle source
# File lib/cryptopay/request.rb, line 36
def prepare_body(params)
  return if params.empty?

  params.to_json
end
prepare_query(path, params) click to toggle source
# File lib/cryptopay/request.rb, line 29
def prepare_query(path, params)
  return path if params.empty?

  query = encode_query(params)
  [path, query].join('?')
end