lib/siba_api/client.rb in siba_api-0.1.0 vs lib/siba_api/client.rb in siba_api-0.1.1
- old
+ new
@@ -44,25 +44,11 @@
# 'Pais_Residencia_Origem' => 'ZMB',
# 'Data_Entrada' => '20220801',
# 'Data_Saida' => '20220831',
# 'Local_Residencia_Origem' => 'Place of Residence',
def deliver_bulletins(file_number, bulletins = [], _global_params = {})
- logger = Logger.new $stderr
- logger.level = Logger::DEBUG
- bulletins_xml = Gyoku.xml(
- {
- 'MovimentoBAL' => {
- 'Unidade_Hoteleira' => build_hotel_unit,
- 'Boletim_Alojamento' => build_bulletins(bulletins),
- 'Envio' => build_control_data(file_number),
- :@xmlns => 'http://sef.pt/BAws'
- }
- },
- pretty_print: true
- )
- logger.debug(bulletins_xml)
- bulletins_encoded = Base64.encode64(bulletins_xml)
+ bulletins_encoded = build_encoded_bulletins_xml(file_number, bulletins)
response = request(
operation: :entrega_boletins_alojamento,
params: {
Boletins: bulletins_encoded
}
@@ -70,10 +56,23 @@
process_response(response)
end
protected
+ def build_encoded_bulletins_xml(file_number, bulletins)
+ bulletins_xml = Gyoku.xml(
+ {
+ 'MovimentoBAL' => {
+ 'Unidade_Hoteleira' => build_hotel_unit, 'Boletim_Alojamento' => build_bulletins(bulletins),
+ 'Envio' => build_control_data(file_number), :@xmlns => 'http://sef.pt/BAws'
+ }
+ },
+ pretty_print: true
+ )
+ Base64.encode64(bulletins_xml)
+ end
+
# <Unidade_Hoteleira>
# <Codigo_Unidade_Hoteleira>121212121</Codigo_Unidade_Hoteleira>
# <Estabelecimento>00</Estabelecimento>
# <Nome>Hotel teste</Nome>
# <Abreviatura>teste</Abreviatura>
@@ -91,31 +90,15 @@
end
# <Numero_Ficheiro>97</Numero_Ficheiro>
# <Data_Movimento>2008-05-20T00:00:00</Data_Movimento>
def build_control_data(file_number)
- {
- 'Numero_Ficheiro' => file_number,
- 'Data_Movimento' => DateTime.now.strftime('%FT%T')
- }
+ { 'Numero_Ficheiro' => file_number, 'Data_Movimento' => DateTime.now.strftime('%FT%T') }
end
def build_bulletins(bulletins = [])
- translation_hash = {
- surname: 'Apelido',
- name: 'Nome',
- nationality: 'Nacionalidade',
- birthdate: 'Data_Nascimento',
- place_of_birth: 'Local_Nascimento',
- id_document: 'Documento_Identificacao',
- document_country: 'Pais_Emissor_Documento',
- document_type: 'Tipo_Documento',
- start_date: 'Data_Entrada',
- end_date: 'Data_Saida',
- origin_country: 'Pais_Residencia_Origem',
- origin_place: 'Local_Residencia_Origem'
- }
+ translation_hash = bulletin_translation_hash
translated_bulletins = []
bulletins.each do |b|
bt = {}
translation_hash.each_key do |k|
bt[translation_hash[k]] = b[k]
@@ -123,21 +106,28 @@
translated_bulletins.push(bt)
end
translated_bulletins
end
+ def bulletin_translation_hash
+ {
+ surname: 'Apelido', name: 'Nome', nationality: 'Nacionalidade',
+ birthdate: 'Data_Nascimento', place_of_birth: 'Local_Nascimento',
+ id_document: 'Documento_Identificacao', document_country: 'Pais_Emissor_Documento',
+ document_type: 'Tipo_Documento',
+ start_date: 'Data_Entrada', end_date: 'Data_Saida',
+ origin_country: 'Pais_Residencia_Origem', origin_place: 'Local_Residencia_Origem'
+ }
+ end
+
def process_response(response)
result = response
case result
when Hash
result.transform_keys!(&:to_sym)
- result.each_value do |r|
- process_response(r)
- end
+ result.each_value { |r| process_response(r) }
when Array
- result.each do |r|
- process_response(r)
- end
+ result.each { |r| process_response(r) }
end
result
end
end
end