class Privat24Api::Request

Attributes

card_num[R]
data_value[R]
merchant_id[R]
merchant_password[R]

Public Class Methods

new(**card_args) click to toggle source
# File lib/privat24_api/request/request.rb, line 9
def initialize(**card_args)
  @card_num          = card_args[:card_num]
  @merchant_id       = card_args[:merchant_id]
  @merchant_password = card_args[:merchant_password]
end

Public Instance Methods

get_public_data_for(mod, met, url_attr=nil) click to toggle source
# File lib/privat24_api/request/request.rb, line 28
def get_public_data_for(mod, met, url_attr=nil)
  Response.new(
    RestClient.get(make_url(mod, met, url_attr), {content_type: 'application/x-www-form-urlencoded'}).body
  )
end
send_data_for(mod, met) { |xml| ... } click to toggle source
# File lib/privat24_api/request/request.rb, line 15
def send_data_for(mod, met)
  builder = Nokogiri::XML::DocumentFragment.parse ""
  Nokogiri::XML::Builder.with(builder) do |xml|
    yield xml
  end

  @data_value = builder.to_xml

  Response.new( 
    RestClient.post(default_url(mod, met), unescape_xml(make_xml), {content_type: 'text/xml'}).body
  )
end

Private Instance Methods

default_url(mod, met) click to toggle source
# File lib/privat24_api/request/request.rb, line 36
def default_url(mod, met)
  URI::encode("#{Privat24Api.base_url}#{Privat24Api.end_points[mod][met]}")
end
generate_signature(data, password) click to toggle source
# File lib/privat24_api/request/request.rb, line 74
def generate_signature(data, password)
  Digest::SHA1.hexdigest( Digest::MD5.hexdigest(data.strip << password) )
end
make_url(mod, met, url_attr) click to toggle source
# File lib/privat24_api/request/request.rb, line 40
def make_url(mod, met, url_attr)
  URI::encode(default_url(mod, met) << url_attr.to_s)
end
make_xml() click to toggle source
# File lib/privat24_api/request/request.rb, line 48
def make_xml
  builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
    xml.request(version: '1.0') do
      xml.merchant(xml_merchant(signature))
      xml.data(data_value)
    end
  end 

  builder.to_xml
end
signature() click to toggle source
# File lib/privat24_api/request/request.rb, line 70
def signature
  generate_signature(data_value, merchant_password)
end
unescape_xml(xml) click to toggle source
# File lib/privat24_api/request/request.rb, line 44
def unescape_xml(xml)
  CGI::unescapeHTML(xml)
end
xml_merchant(signatur) click to toggle source
# File lib/privat24_api/request/request.rb, line 59
def xml_merchant(signatur)
  builder = Nokogiri::XML::DocumentFragment.parse ""

  Nokogiri::XML::Builder.with(builder) do |xml|
    xml.id(merchant_id)
    xml.signature(signatur)
  end

  builder.to_xml
end