class CityboxApi::TakeUps

module for take ups services

Public Class Methods

new() click to toggle source
# File lib/citybox_api/take_ups.rb, line 4
def initialize
        raise CityboxApi::INVALID_CREDENTIALS if CityboxApi.configuration.key == nil
       @user = CityboxApi.configuration.user
       @password = CityboxApi.configuration.key
       @server_url = "http://b2b.correos.cl:8008/ServicioRetiroEnvioExterno/cch/ws/retirosCEP/externo/implementacion/ServicioExternoRetiro.asmx"
end

Public Instance Methods

register(opts={}) click to toggle source

send a register take up request => 'reistrarRetiro' service

# File lib/citybox_api/take_ups.rb, line 12
def register opts={}
        # default values
        opts[:sender_country] ||= "056"

        # check params
        CityboxApi.check_params [ :admission_code, :sender_code, :sender_contact_person, :sender_contact_phone, :take_up_date,
                                                          :take_up_from_hour, :take_up_to_hour ], opts

        # format for date: aaaa-mm-dd
        xml = "<?xml version='1.0' encoding='utf-8'?>
                        <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
                          <soap:Body>
                            <registrarRetiro xmlns='http://tempuri.org/'>
                              <usuario>#{@user}</usuario>
                              <contrasena>#{@password}</contrasena>
                              <retiroTO>
                                <ExtensionData />
                                <CodigoAdmision>#{opts[:admission_code]}</CodigoAdmision>
                                <ClienteRemitente>#{opts[:sender_code]}</ClienteRemitente>
                                <CentroRemitente></CentroRemitente>
                                <NombreRemitente>#{opts[:sender_name]}</NombreRemitente>
                                <DireccionRemitente>#{opts[:sender_address]}</DireccionRemitente>
                                <PaisRemitente>#{opts[:sender_country]}</PaisRemitente>
                                <CodigoPostalRemitente>#{opts[:sender_postal_code]}</CodigoPostalRemitente>
                                <ComunaRemitente>#{opts[:sender_commune]}</ComunaRemitente>
                                <RutRemitente>#{opts[:sender_rut]}</RutRemitente>
                                <PersonaContactoRemitente>#{opts[:sender_contact_person]}</PersonaContactoRemitente>
                                <TelefonoContactoRemitente>#{opts[:sender_contact_phone]}</TelefonoContactoRemitente>
                                <FechaRetiro>#{opts[:take_up_date]}</FechaRetiro>
                                <HoraDesde>#{opts[:take_up_from_hour]}</HoraDesde>
                                <HoraHasta>#{opts[:take_up_to_hour]}</HoraHasta>
                              </retiroTO>
                            </registrarRetiro>
                          </soap:Body>
                        </soap:Envelope>"

        begin
                xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
                json_response = Crack::XML.parse(xml_response)
                json_response["soap:Envelope"]["soap:Body"]["registrarRetiroResponse"]["registrarRetiroResult"]
        rescue => error
                return CityboxApi.catch_error(error)
        end
end