class SecupayRuby::Requests::Base

Attributes

body[R]
payment[R]

Public Class Methods

new(api_key: , payment: nil, body: {}) click to toggle source
# File lib/secupay_ruby/requests/base.rb, line 27
def initialize(api_key: , payment: nil, body: {})
  @api_key = api_key
  @payment = payment
  @body = body
end
post(api_key: , payment: nil, body: {}) click to toggle source
# File lib/secupay_ruby/requests/base.rb, line 18
def post(api_key: , payment: nil, body: {})
  new(api_key: api_key,
      payment: payment,
      body: body).post
end

Public Instance Methods

defaults() click to toggle source
# File lib/secupay_ruby/requests/base.rb, line 45
def defaults
  {
    apikey: @api_key.key
  }
end
http_request() click to toggle source
# File lib/secupay_ruby/requests/base.rb, line 51
def http_request
  @request ||= begin
    request = Net::HTTP::Post.new(uri.request_uri,
                                  {
                                    "Content-Type" => "application/json; charset=utf-8;",
                                    "Accept" => "application/json;"
                                  })

    request.body = { data: defaults.merge(body) }.to_json

    request
  end
end
http_response() click to toggle source
# File lib/secupay_ruby/requests/base.rb, line 65
def http_response
  @response ||= begin
    response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
      http.request(http_request)
    end

    json_response = JSON.parse(response.body)

    response = SecupayRuby::Requests::Response.new(http_status: response.header.code,
                                                   status: json_response["status"],
                                                   data: json_response["data"],
                                                   errors: json_response["errors"])

    raise RequestError.new(response.errors) if response.failed?

    response
  end
end
path() click to toggle source
# File lib/secupay_ruby/requests/base.rb, line 41
def path
  raise NotImplementedError.new "Abstract method!"
end
post() click to toggle source
# File lib/secupay_ruby/requests/base.rb, line 33
def post
  http_response
end
uri() click to toggle source
# File lib/secupay_ruby/requests/base.rb, line 37
def uri
  @uri ||= URI.parse([SecupayRuby.config.host, path].join("/"))
end