class Deliveries::Couriers::Envialia::Labels::Generate
Attributes
tracking_codes[RW]
Public Class Methods
new(tracking_codes:)
click to toggle source
# File lib/deliveries/couriers/envialia/labels/generate.rb, line 13 def initialize(tracking_codes:) self.tracking_codes = tracking_codes.respond_to?(:each) ? tracking_codes : [tracking_codes] end
Public Instance Methods
execute()
click to toggle source
# File lib/deliveries/couriers/envialia/labels/generate.rb, line 17 def execute decoded_labels = [] tracking_codes.each do |tracking_code| response = self.class.post( api_endpoint, body: body(tracking_code), headers: headers, debug_output: Deliveries.debug ? Deliveries.logger : nil ) raise Deliveries::ClientError unless response.success? labels = response.dig('Envelope', 'Body', 'WebServService___ConsEtiquetaEnvio6Response', 'strEtiquetas') if labels.blank? raise Deliveries::APIError.new( 'No hay etiqutas disponibles', 404 ) else decoded_labels << Base64.decode64(labels).force_encoding('binary') end end decoded_labels end
Private Instance Methods
api_endpoint()
click to toggle source
# File lib/deliveries/couriers/envialia/labels/generate.rb, line 77 def api_endpoint if Envialia.live? Envialia::ENVIALIA_ENDPOINT_LIVE else Envialia::ENVIALIA_ENDPOINT_TEST end end
body(tracking_code)
click to toggle source
# File lib/deliveries/couriers/envialia/labels/generate.rb, line 47 def body(tracking_code) <<~XML <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Header> <ROClientIDHeader xmlns="http://tempuri.org/"> <ID>#{session_id}</ID> </ROClientIDHeader> </soap:Header> <soap:Body> <WebServService___ConsEtiquetaEnvio6> <strCodAgeOri>#{Deliveries.courier(:envialia).config(:agency_code)}</strCodAgeOri> <strAlbaran>#{tracking_code}</strAlbaran> <strBulto></strBulto> <boPaginaA4>false</boPaginaA4> <intNumEtiqImpresasA4>0</intNumEtiqImpresasA4> <strFormato>PDF</strFormato> </WebServService___ConsEtiquetaEnvio6> </soap:Body> </soap:Envelope> XML end
headers()
click to toggle source
# File lib/deliveries/couriers/envialia/labels/generate.rb, line 73 def headers { 'Content-Type' => 'application/json;charset=UTF-8', 'Accept' => 'application/json' } end