class Fiscalizer::Serializers::Base

Attributes

demo[R]
object[R]
private_key[R]
public_key[R]

Public Class Methods

new(object, private_key, public_key, demo) click to toggle source
# File lib/fiscalizer/serializers/base.rb, line 6
def initialize(object, private_key, public_key, demo)
  @object = object
  @private_key = private_key
  @public_key = public_key
  @demo = demo
end

Public Instance Methods

call() click to toggle source
# File lib/fiscalizer/serializers/base.rb, line 15
def call
  sign_xml
end

Private Instance Methods

add_header(xml) click to toggle source
# File lib/fiscalizer/serializers/base.rb, line 49
def add_header(xml)
  xml['tns'].Zaglavlje do
    xml['tns'].IdPoruke object.uuid
    xml['tns'].DatumVrijeme object.time_sent_str
  end
end
add_signature(xml) click to toggle source
# File lib/fiscalizer/serializers/base.rb, line 56
def add_signature(xml)
  Serializers::Signature.new(xml, "##{message_id}", public_key, cert_issuer).call
end
cert_issuer() click to toggle source
# File lib/fiscalizer/serializers/base.rb, line 60
def cert_issuer
  demo ? DEMO_CERT_ISSUER : PROD_CERT_ISSUER
end
root_hash() click to toggle source
# File lib/fiscalizer/serializers/base.rb, line 40
def root_hash
  {
    'xmlns:tns' => TNS,
    'xmlns:xsi' => XSI,
    'xsi:schemaLocation' => SCHEMA_LOCATION,
    'Id' => message_id
  }
end
sign_xml() click to toggle source
# File lib/fiscalizer/serializers/base.rb, line 21
def sign_xml
  document = Xmldsig_fiscalizer::SignedDocument.new(xml_with_soap_envelope.doc.root.to_xml)
  signed_xml = document.sign(private_key)
  signed_xml.sub!('<?xml version="1.0"?>', '')
  signed_xml = signed_xml.gsub(/^$\n/, '')
  object.generated_xml = signed_xml
  signed_xml
end
xml_with_soap_envelope() click to toggle source
# File lib/fiscalizer/serializers/base.rb, line 30
def xml_with_soap_envelope
  Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
    xml['soapenv'].Envelope('xmlns:soapenv' => 'http://schemas.xmlsoap.org/soap/envelope/') do
      xml['soapenv'].Body do
        xml << raw_xml.doc.root.to_xml
      end
    end
  end
end