class PagSeguro::AuthorizationRequest::RequestSerializer

Attributes

builder[R]
request[RW]

Public Class Methods

new(request) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 7
def initialize(request)
  @request = request
  @builder = Nokogiri::XML::Builder
end

Public Instance Methods

build_xml() click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 12
def build_xml
  build.to_xml(save_with:
    Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS |
    Nokogiri::XML::Node::SaveOptions::FORMAT
  )
end

Private Instance Methods

build() click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 23
def build
  builder.new(encoding: PagSeguro.encoding) do |xml|
    xml.send(:authorizationRequest) {
      xml.send(:reference, request.reference) if request.reference
      xml.send(:redirectURL, request.redirect_url)
      xml.send(:notificationURL, request.notification_url)
      serialize_permissions(xml, request.permissions)
      serialize_account(xml, request.account)
    }
  end
end
format_permissions(permissions) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 44
def format_permissions(permissions)
  permissions.map { |value| PagSeguro::AuthorizationRequest::PERMISSIONS[value] }
end
serialize_account(xml, account) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 48
def serialize_account(xml, account)
  return unless account

  xml.send(:account) {
    xml.send(:email, account.email) if account.email
    xml.send(:type, account.type) if account.type

    if account.person
      serialize_person(xml, account.person)
    elsif account.company
      serialize_company(xml, account.company)
    end
  }
end
serialize_address(xml, address) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 89
def serialize_address(xml, address)
  return unless address

  xml.send(:address) {
    xml.send(:postalCode, address.postal_code) if address.postal_code
    xml.send(:street, address.street) if address.street
    xml.send(:number, address.number) if address.number
    xml.send(:complement, address.complement) if address.complement
    xml.send(:district, address.district) if address.district
    xml.send(:city, address.city) if address.city
    xml.send(:state, address.state) if address.state
    xml.send(:country, address.country) if address.country
  }
end
serialize_company(xml, company) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 75
def serialize_company(xml, company)
  return unless company

  xml.send(:company) {
    xml.send(:name, company.name) if company.name
    xml.send(:displayName, company.display_name) if company.display_name
    xml.send(:websiteURL, company.website_url) if company.website_url
    serialize_partner(xml, company.partner)
    serialize_phones(xml, company.phones)
    serialize_documents(xml, company.documents)
    serialize_address(xml, company.address)
  }
end
serialize_documents(xml, documents) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 118
def serialize_documents(xml, documents)
  return unless documents.any?

  xml.send(:documents) {
    documents.each do |document|
      xml.send(:document) {
        xml.send(:type, document.type)
        xml.send(:value, document.value)
      }
    end
  }
end
serialize_partner(xml, partner) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 131
def serialize_partner(xml, partner)
  return unless partner

  xml.send(:partner) {
    xml.send(:name, partner.name) if partner.name
    xml.send(:birthDate, partner.birth_date.to_s) if partner.birth_date
    serialize_documents(xml, partner.documents)
  }
end
serialize_permissions(xml, permissions) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 35
def serialize_permissions(xml, permissions)
  return unless permissions.any?
  xml.send(:permissions) {
    format_permissions(permissions).each do |permission|
      xml.send(:code, permission)
    end
  }
end
serialize_person(xml, person) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 63
def serialize_person(xml, person)
  return unless person

  xml.send(:person) {
    xml.send(:name, person.name) if person.name
    xml.send(:birthDate, person.birth_date.to_s) if person.birth_date
    serialize_address(xml, person.address)
    serialize_documents(xml, person.documents)
    serialize_phones(xml, person.phones)
  }
end
serialize_phones(xml, phones) click to toggle source
# File lib/pagseguro/authorization_request/request_serializer.rb, line 104
def serialize_phones(xml, phones)
  return unless phones.any?

  xml.send(:phones) {
    phones.each do |phone|
      xml.send(:phone) {
        xml.send(:type, phone.type)
        xml.send(:areaCode, phone.area_code)
        xml.send(:number, phone.number)
      }
    end
  }
end