Sha256: 580ac46d6ef113520bd5c1956e99265daa82c038f8f4034b707fb70aea416391

Contents?: true

Size: 1.87 KB

Versions: 14

Compression:

Stored size: 1.87 KB

Contents

class Epics::INI < Epics::GenericRequest
  def root
    "ebicsUnsecuredRequest"
  end

  def header
    Nokogiri::XML::Builder.new do |xml|
      xml.header(authenticate: true) {
        xml.static {
          xml.HostID host_id
          xml.PartnerID partner_id
          xml.UserID user_id
          xml.Product("EPICS - a ruby ebics kernel", 'Language' => 'de')
          xml.OrderDetails {
            xml.OrderType 'INI'
            xml.OrderAttribute 'DZNNN'
          }
          xml.SecurityMedium '0000'
        }
        xml.mutable ''
      }
    end.doc.root
  end

  def body
    Nokogiri::XML::Builder.new do |xml|
      xml.body{
        xml.DataTransfer {
          xml.OrderData Base64.strict_encode64(Zlib::Deflate.deflate(key_signature))
        }
      }
    end.doc.root
  end

  def key_signature
    Nokogiri::XML::Builder.new do |xml|
      xml.SignaturePubKeyOrderData('xmlns:ds' => 'http://www.w3.org/2000/09/xmldsig#', 'xmlns' => 'http://www.ebics.org/S001') {
        xml.SignaturePubKeyInfo {
          xml.PubKeyValue {
            xml.send('ds:RSAKeyValue') {
              xml.send('ds:Modulus', Base64.strict_encode64([client.a.n].pack("H*")))
              xml.send('ds:Exponent', Base64.strict_encode64(client.a.key.e.to_s(2)))
            }
            xml.TimeStamp timestamp
          }
          xml.SignatureVersion 'A006'
        }
        xml.PartnerID partner_id
        xml.UserID user_id
      }
    end.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::AS_XML, encoding: 'utf-8')
  end

  def to_xml
    Nokogiri::XML::Builder.new do |xml|
      xml.send(root, 'xmlns:ds' => 'http://www.w3.org/2000/09/xmldsig#', 'xmlns' => 'urn:org:ebics:H004', 'Version' => 'H004', 'Revision' => '1') {
        xml.parent.add_child(header)
        xml.parent.add_child(body)
      }
    end.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::AS_XML, encoding: 'utf-8')
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
epics-2.4.0 lib/epics/ini.rb
epics-2.3.0 lib/epics/ini.rb
epics-2.2.0 lib/epics/ini.rb
epics-2.1.2 lib/epics/ini.rb
epics-2.1.1 lib/epics/ini.rb
epics-2.1.0 lib/epics/ini.rb
epics-2.0.0 lib/epics/ini.rb
epics-1.8.1 lib/epics/ini.rb
epics-1.8.0 lib/epics/ini.rb
epics-1.7.2 lib/epics/ini.rb
epics-1.7.1 lib/epics/ini.rb
epics-1.7.0 lib/epics/ini.rb
epics-1.6.0 lib/epics/ini.rb
epics-1.5.2 lib/epics/ini.rb