class CzechPostB2bClient::ResponseParsers::GetResultParcelsParser
Public Instance Methods
build_result()
click to toggle source
Calls superclass method
CzechPostB2bClient::ResponseParsers::BaseParser#build_result
# File lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb, line 6 def build_result super @result[:response][:state] = state_hash_from(response_state_response) @result[:parcels] = parcels_data_hash end
parcel_data_from(rp_hash)
click to toggle source
# File lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb, line 35 def parcel_data_from(rp_hash) { parcel_code: rp_hash['parcelCode'], states: [state_hash_from(rp_hash.dig('doParcelStateResponse'))] } end
parcel_parcel_id_from(rp_hash)
click to toggle source
# File lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb, line 31 def parcel_parcel_id_from(rp_hash) rp_hash['recordNumber'].to_s end
parcels_data_hash()
click to toggle source
# File lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb, line 12 def parcels_data_hash response_parcel_hashes.each_with_object({}) do |rp_hash, result| parcel_id = parcel_parcel_id_from(rp_hash) result[parcel_id] = updated_result_value_for(result[parcel_id], rp_hash) end end
response_parcel_hashes()
click to toggle source
# File lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb, line 27 def response_parcel_hashes [response_root_node.dig('doParcelParamResult')].flatten.compact # to always get array of hash(es) end
response_root_node_name()
click to toggle source
# File lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb, line 19 def response_root_node_name 'getResultParcelsResponse' end
response_state_response()
click to toggle source
# File lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb, line 23 def response_state_response response_root_node.dig('doParcelHeaderResult', 'doParcelStateResponse') end
updated_result_value_for(value, parcel_params_result_hash)
click to toggle source
# File lib/czech_post_b2b_client/response_parsers/get_result_parcels_parser.rb, line 40 def updated_result_value_for(value, parcel_params_result_hash) pd_hash = parcel_data_from(parcel_params_result_hash) return pd_hash if value.nil? # merging states value[:states] = (value[:states] + pd_hash[:states]).sort { |a, b| a[:code] <=> b[:code] } # more parcel_codes for one parcel_id => probably errors old_p_code = value[:parcel_code] new_p_code = pd_hash[:parcel_code] raise "Two different parcel_codes [#{old_p_code}, #{new_p_code}] for parcel_id:'#{parcel_id}'" if old_p_code != new_p_code value end