class Klarna::Client

Public Class Methods

new(configuration) click to toggle source
# File lib/klarna/client.rb, line 7
def initialize(configuration)
  @configuration = configuration
end

Private Instance Methods

do_request(type, service) { |request| ... } click to toggle source
# File lib/klarna/client.rb, line 14
def do_request(type, service, &block)
  uri = URI.parse(@configuration.endpoint)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = case type
    when :post
      Net::HTTP::Post.new(service)
    when :delete
      Net::HTTP::Delete.new(service)
    when :get
      Net::HTTP::Get.new(service)
    else
      raise "Wrong request type <#{type}>. Allowed [:post, :delete, :get]"
  end


  request.content_type = "application/json"
  request.basic_auth(@configuration.api_key, @configuration.api_secret)
  if @configuration.user_agent
    request["User-Agent"] = "Ruby Klarna #{Klarna::VERSION} (#{@configuration.user_agent.to_s} Ruby/#{RUBY_VERSION})"
  end

  yield(request) if block_given?

  http.set_debug_output(@configuration.debugger) if @configuration.debugger
  response = http.request(request)
  http.set_debug_output(nil) if @configuration.debugger

  Klarna::Response.new(response)
end