oca-epak 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eeede2d0da740bfb15092074d0d39c538874d439
4
- data.tar.gz: 8e3a86749633428e59c54752f7cc7063758f0171
3
+ metadata.gz: 63d16a3f53e35acefdb9f763c3d343ab7b56dc9b
4
+ data.tar.gz: 8e0ec175cc444b726e8594cde4eae24b954a0d53
5
5
  SHA512:
6
- metadata.gz: 425848307e4ac16a2fdfaf92578ad2b7f687c038262bb9756a4c3db5655e79fc69df0d98b24bef88c87ba755689e45aec03e7d900c2e1d04ae610c3fba85f73d
7
- data.tar.gz: c042b2dd09704baf5853924121ececcc4d01cda14375cb009a57eb677d838337a94cbf487880ba21caa4fea3c624a4326dfe27a2c52b7c9828a4f52a61ca886e
6
+ metadata.gz: 8f673dfb5d956e2bba94cb5967b655428c484d5e29302153e3896e954461c758ce7df8ff2a2b8d9fb2c826a8e8b3ef7cee8207cd1d97312264b26d737c44929e
7
+ data.tar.gz: e4feaf827f85af4f73412ae736c0d555fbb8096c8f77e1ada9d1d2de009c92db9f9ab8f71b0e1e434336638c4633aae333244fb3f11cb806a45a1f60fb427a4f
data/lib/oca-epak.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'savon'
2
2
  require 'erb'
3
3
  require 'ostruct'
4
- require 'oca-epak/client'
4
+ require 'oca-epak/base_client'
5
+ require 'oca-epak/epak/client'
6
+ require 'oca-epak/oep/client'
5
7
  require 'oca-epak/pickup_data'
6
8
  require 'oca-epak/errors/generic_error'
7
9
  require 'oca-epak/errors/bad_request'
@@ -0,0 +1,33 @@
1
+ module Oca
2
+ class BaseClient
3
+ attr_reader :client
4
+ attr_accessor :username, :password
5
+
6
+ BASE_WSDL_URL = 'http://webservice.oca.com.ar'.freeze
7
+
8
+ def initialize(username, password)
9
+ @username = username
10
+ @password = password
11
+ end
12
+
13
+ protected
14
+
15
+ def parse_result(response, method)
16
+ method_response = "#{method}_response".to_sym
17
+ method_result = "#{method}_result".to_sym
18
+ if body = response.body[method_response]
19
+ body[method_result]
20
+ end
21
+ end
22
+
23
+ def parse_results_table(response, method)
24
+ if result = parse_result(response, method)
25
+ if result[:diffgram][:new_data_set]
26
+ result[:diffgram][:new_data_set][:table]
27
+ else
28
+ raise Oca::Errors::BadRequest.new("Oca WS responded with:\n#{response.body}")
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,15 +1,10 @@
1
1
  module Oca
2
2
  module Epak
3
- class Client
4
- attr_reader :client
5
- attr_accessor :username, :password
6
-
7
- WSDL = 'http://webservice.oca.com.ar/epak_tracking/Oep_TrackEPak.asmx?wsdl'.freeze
8
-
3
+ class Client < BaseClient
9
4
  def initialize(username, password)
10
- @client = Savon.client(wsdl: WSDL)
11
- @username = username
12
- @password = password
5
+ super
6
+ wsdl_url = "#{BASE_WSDL_URL}/epak_tracking/Oep_TrackEPak.asmx?wsdl"
7
+ @client = Savon.client(wsdl: wsdl_url)
13
8
  end
14
9
 
15
10
  # Checks if the user has input valid credentials
@@ -33,7 +28,7 @@ module Oca
33
28
  qty: "1", total: "123", cuit: cuit, op: op }
34
29
  get_shipping_rates(opts)
35
30
  true
36
- rescue Oca::Epak::GenericError => e
31
+ rescue Oca::Errors::GenericError => e
37
32
  false
38
33
  end
39
34
  end
@@ -45,7 +40,7 @@ module Oca
45
40
  # @param [Hash] opts
46
41
  # @option [Oca::Epak::PickupData] :pickup_data Pickup Data object
47
42
  # @option [Boolean] :confirm_pickup Confirm Pickup? Defaults to false
48
- # @option [Integer] :days_to_pickup Days OCA should wait before pickup, default: 1 (?) #TODO Confirm
43
+ # @option [Integer] :days_to_pickup Days OCA should wait before pickup, default: 1
49
44
  # @option [Integer] :pickup_range Range to be used when picking it up, default: 1
50
45
  # @return [Hash, nil]
51
46
  def create_pickup_order(opts = {})
@@ -60,7 +55,7 @@ module Oca
60
55
  "DiasHastaRetiro" => days_to_pickup,
61
56
  "idFranjaHoraria" => pickup_range }
62
57
  response = client.call(:ingreso_or, message: message)
63
- parse_results_table(response, :ingreso_or)
58
+ parse_result(response, :ingreso_or)
64
59
  end
65
60
 
66
61
  # Get rates and delivery estimate for a shipment
@@ -130,26 +125,6 @@ module Oca
130
125
  body[:get_provincias_result][:provincias][:provincia]
131
126
  end
132
127
  end
133
-
134
- private
135
-
136
- def parse_result(response, method)
137
- method_response = "#{method}_response".to_sym
138
- method_result = "#{method}_result".to_sym
139
- if body = response.body[method_response]
140
- body[method_result]
141
- end
142
- end
143
-
144
- def parse_results_table(response, method)
145
- if result = parse_result(response, method)
146
- if result[:diffgram][:new_data_set]
147
- result[:diffgram][:new_data_set][:table]
148
- else
149
- raise Oca::Epak::BadRequest.new("Oca WS responded with:\n#{response.body}")
150
- end
151
- end
152
- end
153
128
  end
154
129
  end
155
130
  end
@@ -1,5 +1,5 @@
1
1
  module Oca
2
- module Epak
2
+ module Errors
3
3
  class BadRequest < GenericError
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Oca
2
- module Epak
2
+ module Errors
3
3
  class GenericError < StandardError
4
4
  end
5
5
  end
@@ -0,0 +1,25 @@
1
+ module Oca
2
+ module Oep
3
+ class Client < BaseClient
4
+ def initialize(username, password)
5
+ super
6
+ wsdl_url = "#{BASE_WSDL_URL}/oep_tracking/Oep_Track.asmx?wsdl"
7
+ @client = Savon.client(wsdl: wsdl_url)
8
+ end
9
+
10
+ # Returns the HTML for a label
11
+ #
12
+ # @param opts
13
+ # @option id_orden_retiro [Integer]
14
+ # @option nro_envio [String]
15
+ # @return [String] HTML
16
+ def get_html_de_etiquetas_por_orden_or_numero_envio(opts = {})
17
+ method = :get_html_de_etiquetas_por_orden_or_numero_envio
18
+ opts = { "idOrdenRetiro" => opts[:id_orden_retiro],
19
+ "nroEnvio" => opts[:nro_envio] }
20
+ response = client.call(method, message: opts)
21
+ parse_result(response, method)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  module Oca
2
2
  module Epak
3
- VERSION = '1.0.1'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oca-epak
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mauro Otonelli
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-13 00:00:00.000000000 Z
12
+ date: 2015-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon
@@ -104,9 +104,11 @@ extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
106
  - lib/oca-epak.rb
107
- - lib/oca-epak/client.rb
107
+ - lib/oca-epak/base_client.rb
108
+ - lib/oca-epak/epak/client.rb
108
109
  - lib/oca-epak/errors/bad_request.rb
109
110
  - lib/oca-epak/errors/generic_error.rb
111
+ - lib/oca-epak/oep/client.rb
110
112
  - lib/oca-epak/pickup_data.rb
111
113
  - lib/oca-epak/version.rb
112
114
  homepage: https://github.com/ombulabs/oca-epak