Class: MX::Banxico::WebServices::WebService
- Inherits:
-
Object
- Object
- MX::Banxico::WebServices::WebService
- Extended by:
- Savon::Model
- Defined in:
- lib/MX/Banxico/web_services/web_service.rb
Overview
Savon crea métodos por omisión de acuerdo a las operaciones soportadas por el servicio web, tano a nivel de clase como de instancia.
Modelo para conectarse al servicio web de Banxico por medio de Savon::Model.
Direct Known Subclasses
Defined Under Namespace
Classes: Respuesta
Constant Summary collapse
- WSDL =
URL con la definición del servicio web.
"http://www.banxico.org.mx/DgieWSWeb/DgieWS?WSDL"
- CODIFICACION_WS =
Codificación de la petición y respuesta del servicio ¡guácala, no es UTF-8 la codificación que manejan en Banxico!
"ISO-8859-1"
- OPERACIONES_WS =
Operaciones soportadas por el servicio web de Banxico:
- Reservas internacionales
- Tasas de interés
- Tipos de Cambio
- UDIS
[ :reservas_internacionales_banxico, :tasas_de_interes_banxico, :tipos_de_cambio_banxico, :udis_banxico ]
Class Method Summary collapse
-
.init_client ⇒ Object
Inicializa el cliente de Savon.
-
.operaciones ⇒ Array
Arreglo con las operaciones soportadas por el servicio web.
Instance Method Summary collapse
-
#client ⇒ Object
Definición del cliente de Savon.
-
#realizar_operacion(op, intentos = 5) ⇒ Hash
Realiza la operación solicitada en un máximo de intentos dados.
Class Method Details
.init_client ⇒ Object
Inicializa el cliente de Savon.
59 60 61 |
# File 'lib/MX/Banxico/web_services/web_service.rb', line 59 def self.init_client client wsdl: WSDL, encoding: CODIFICACION_WS, open_timeout: 5, read_timeout: 5 end |
.operaciones ⇒ Array
Arreglo con las operaciones soportadas por el servicio web.
95 96 97 |
# File 'lib/MX/Banxico/web_services/web_service.rb', line 95 def self.operaciones OPERACIONES_WS end |
Instance Method Details
#client ⇒ Object
Definición del cliente de Savon
|
# File 'lib/MX/Banxico/web_services/web_service.rb', line 53
|
#realizar_operacion(op, intentos = 5) ⇒ Hash
Realiza la operación solicitada en un máximo de intentos dados.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/MX/Banxico/web_services/web_service.rb', line 75 def realizar_operacion(op, intentos = 5) raise ArgumentError.new("La operación #{op} no está soportada.") unless OPERACIONES_WS.member?(op.to_sym) raise ArgumentError.new("El número de intentos debe ser mayor o igual a 1.") if (!intentos.is_a?(Integer) or intentos < 1) errores = "" 1.upto(intentos) do |intento| begin resp = client.call(op.to_sym) return Respuesta.new(resp.body[:"#{op}_response"][:result]) if resp.success? rescue Exception => e errores = "#{errores}Intento #{intento}: #{e.}. " end errores = "#{errores}Número de intentos agotados #{intentos}." if intento == intentos end Respuesta.new(nil, errores) end |