Sha256: 9fecf10579ec7186f664a07cb000fbaba3033c60062c16b0fd4be18ca045af45
Contents?: true
Size: 1.95 KB
Versions: 2
Compression:
Stored size: 1.95 KB
Contents
require 'amsi/validator/request_errors' require_relative 'base' module Amsi module DocumentParser # Parse the GetMoveinsByFirstMarketingSource response class GetMoveins < Base private # @param body [Hash<String, Object>] the body of the XML response parsed # into a Hash # @return [Array<Amsi::Model::Lease>] the leases contained in the # response # @raise [Amsi::Error::Base] if the response is invalid def parse_body(body) lease_hashes(body).map do |lease_hash| lease = Model::Lease.new(lease_hash) lease.occupants = occupants(lease_hash) lease.guest_card = guest_card(lease_hash) lease.matched_guest_cards = matched_guest_cards(lease_hash) lease end end def lease_hashes(body) response = body['GetMoveinsByFirstMarketingSourceResponse'] escaped_result = response['GetMoveinsByFirstMarketingSourceResult'] parsed_result = MultiXml.parse(escaped_result) leases = parsed_result['Leases']['Lease'] return [] if leases.nil? leases.is_a?(Array) ? leases : [leases] end def occupants(lease_hash) occupant_hashes(lease_hash).map do |occupant_hash| Model::Occupant.new(occupant_hash) end end def occupant_hashes(lease_hash) occupants = lease_hash['Occupant'] return [] if occupants.nil? occupants.is_a?(Array) ? occupants : [occupants] end def guest_card(lease_hash) guest_card_hash = lease_hash['GuestCard'] Model::GuestCard.new(guest_card_hash) unless guest_card_hash.nil? end def matched_guest_cards(lease_hash) matched_guest_card_hashes = lease_hash['MatchedGuestCard'] if matched_guest_card_hashes.is_a?(Hash) [matched_guest_card_hashes] else [*matched_guest_card_hashes] end.map { |h| Model::GuestCard.new(h) } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
amsi-1.0.1 | lib/amsi/document_parser/get_moveins.rb |
amsi-1.0.0 | lib/amsi/document_parser/get_moveins.rb |