dpd_api 0.1.2 → 0.1.3

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: 34d8a1a512e9820e3f26159e844ca556e2448943
4
- data.tar.gz: ad70a25ef8a607c6c1d88c66de945b5c4cdb2ccf
3
+ metadata.gz: babe69db95fe1be702cd44dee772659e0a13eeaf
4
+ data.tar.gz: 4c43ed756134fb57e1f290693a0ee24155d9f659
5
5
  SHA512:
6
- metadata.gz: f574a3fbf66e71e6c9122a3dd882f45aa19ae56c790a995e12b4e512f33b9877733de867eaccf03b4dfaecce162884f4cb55e1603c51ecd01712c99184fce51a
7
- data.tar.gz: af3da2d3a75c8353c014556bc2691871d2da8d40e3d25b11df22a51cbf5b780f5dede4b7147fcbb476a671cbcf151159194e34bd587d2c5d75dfe873f529ced4
6
+ metadata.gz: 618d8cabd267b33ed0c85ca3fdddf73d2f2c5116328b536528f77e2a90130f7b3cf806438e9318267365feb986c4cd0cd71c0f52bfab5d552c9ad08147220d92
7
+ data.tar.gz: 4e4db970d67dc2cb6393e44c846a867b704218f62005242e3066c054b83519336c75d662cddbf447e496ab00eb90df365f9f676e0280d5bc0c3302c66734f58b
data/README.md CHANGED
@@ -24,6 +24,7 @@ DpdApi.configure do |config|
24
24
  config.client_key = 'ASD7686ASD76786786786786AASD'
25
25
  config.client_number = '123456789'
26
26
  config.base_url = Rails.env.production? ? 'http://ws.dpd.ru' : 'http://wstest.dpd.ru'
27
+ config.debug = Rails.env.production? ? false : true
27
28
  end
28
29
  ```
29
30
 
data/dpd_api.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = DpdApi::VERSION
9
9
  spec.authors = ["Ponomarev Nikolay"]
10
10
  spec.email = ["itsnikolay@gmail.com"]
11
- spec.summary = %q{Ruby API for Dpd delivery service}
12
- spec.description = %q{Ruby API for Dpd delivery service}
11
+ spec.summary = %q{Ruby / Rails wrapper for Dpd's SOAP API}
12
+ spec.description = %q{Ruby / Rails wrapper for Dpd's SOAP API}
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT"
15
15
 
data/lib/dpd_api/base.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
- require "dpd_api/client/response"
2
+ require 'dpd_api/client/response'
3
+ require 'dpd_api/debug/inspector'
3
4
 
4
5
  module DpdApi
5
6
  class Base
@@ -11,7 +12,9 @@ module DpdApi
11
12
  protected
12
13
 
13
14
  def client
14
- Client::Response.new(self.url)
15
+ @client ||= Client::Response.new(self.url)
16
+ Debug::Inspector.new(@client) if DpdApi.configuration.debug
17
+ @client
15
18
  end
16
19
 
17
20
  def response(method, params = {}, options = {})
@@ -1,24 +1,34 @@
1
- require "savon"
1
+ require 'savon'
2
+ require 'observer'
2
3
 
3
4
  module DpdApi
4
5
  module Client
5
6
  class Response
7
+ include Observable
8
+
6
9
  def initialize(url)
7
10
  @url = url
8
11
  @client = Savon.client(wsdl: @url)
9
12
  end
10
13
 
11
14
  def response(method, params = {}, options = {})
15
+ changed
12
16
  builder = ResourceBuilder.new(@client, method, params, options)
13
- builder.resources
14
- rescue Savon::SOAPFault => error
15
- { errors: error.to_s }
17
+ result = begin
18
+ builder.resources
19
+ rescue Savon::SOAPFault => error
20
+ { errors: error.to_s }
21
+ end
22
+ notify_observers(@url, builder.merged_params, builder.response_body, result)
23
+ result
16
24
  end
17
25
 
18
26
  private
19
27
 
20
28
  class ResourceBuilder
21
- def initialize(client, method, params, options = {})
29
+ attr_reader :merged_params, :response_body
30
+
31
+ def initialize(client, method, params = {}, options = {})
22
32
  @client = client
23
33
  @method = method
24
34
  @namespace = options.delete(:namespace)
@@ -27,13 +37,14 @@ module DpdApi
27
37
 
28
38
  def resources
29
39
  namespace = "#{@method}_response".to_sym
30
- resources = response.body[namespace][:return]
40
+ @response_body = response.body
41
+ resources = @response_body[namespace][:return]
31
42
  resources.is_a?(Array) ? resources : [] << resources
32
43
  end
33
44
 
34
45
  private
35
46
 
36
- def merge_auth_params(params)
47
+ def merge_auth_params(params = {})
37
48
  auth_params = DpdApi.configuration.auth_params.clone
38
49
  auth_params.deep_merge!(params)
39
50
  end
@@ -13,7 +13,8 @@ module DpdApi
13
13
  class Configuration
14
14
  attr_accessor :client_key,
15
15
  :client_number,
16
- :base_url
16
+ :base_url,
17
+ :debug
17
18
 
18
19
  attr_reader :auth_params
19
20
 
@@ -21,6 +22,7 @@ module DpdApi
21
22
  @client_key = '123'
22
23
  @client_number = '234'
23
24
  @base_url = 'http://wstest.dpd.ru'
25
+ @debug = false
24
26
  end
25
27
 
26
28
  def auth_params
@@ -0,0 +1,18 @@
1
+ require 'observer'
2
+
3
+ module Debug
4
+ class Inspector
5
+ def initialize(client)
6
+ client.add_observer(self)
7
+ end
8
+
9
+ def update(url, params, response_body, result)
10
+ p '--------------------------'
11
+ p "SENDING REQUEST TO: #{url}"
12
+ p "WITH PARAMS: #{params}"
13
+ p "GETTING RESPONSE: #{response_body}"
14
+ p "RESULT: #{result}"
15
+ p '--------------------------'
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module DpdApi
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
@@ -16,6 +16,8 @@ describe DpdApi::Geography do
16
16
  end
17
17
  let(:message) { auth }
18
18
 
19
+ before { enable_debug! }
20
+
19
21
  context ".cities_cash_pay" do
20
22
  let(:fixture) { File.read("spec/fixtures/dpd_api/geography/cities_cash_pay.xml") }
21
23
 
data/spec/spec_helper.rb CHANGED
@@ -4,9 +4,11 @@ require "codeclimate-test-reporter"
4
4
  CodeClimate::TestReporter.start
5
5
 
6
6
  require 'dpd_api'
7
- require "savon/mock/spec_helper"
7
+ require 'savon/mock/spec_helper'
8
+ require_relative 'support/rspec_helper'
8
9
 
9
10
  RSpec.configure do |config|
10
11
  config.filter_run focus: true
11
12
  config.run_all_when_everything_filtered = true
13
+ config.include RspecHelper
12
14
  end
@@ -0,0 +1,5 @@
1
+ module RspecHelper
2
+ def enable_debug!
3
+ DpdApi.configure { |c| c.debug = true }
4
+ end
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dpd_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ponomarev Nikolay
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- description: Ruby API for Dpd delivery service
69
+ description: Ruby / Rails wrapper for Dpd's SOAP API
70
70
  email:
71
71
  - itsnikolay@gmail.com
72
72
  executables: []
@@ -86,6 +86,7 @@ files:
86
86
  - lib/dpd_api/calculator.rb
87
87
  - lib/dpd_api/client/response.rb
88
88
  - lib/dpd_api/configuration.rb
89
+ - lib/dpd_api/debug/inspector.rb
89
90
  - lib/dpd_api/geography.rb
90
91
  - lib/dpd_api/label_print.rb
91
92
  - lib/dpd_api/nl.rb
@@ -116,6 +117,7 @@ files:
116
117
  - spec/lib/dpd_api/order_spec.rb
117
118
  - spec/lib/dpd_api/tracing_spec.rb
118
119
  - spec/spec_helper.rb
120
+ - spec/support/rspec_helper.rb
119
121
  homepage: ''
120
122
  licenses:
121
123
  - MIT
@@ -139,7 +141,7 @@ rubyforge_project:
139
141
  rubygems_version: 2.2.2
140
142
  signing_key:
141
143
  specification_version: 4
142
- summary: Ruby API for Dpd delivery service
144
+ summary: Ruby / Rails wrapper for Dpd's SOAP API
143
145
  test_files:
144
146
  - spec/fixtures/dpd_api/calculator/service_cost.xml
145
147
  - spec/fixtures/dpd_api/calculator/service_cost_by_parcels.xml
@@ -165,3 +167,4 @@ test_files:
165
167
  - spec/lib/dpd_api/order_spec.rb
166
168
  - spec/lib/dpd_api/tracing_spec.rb
167
169
  - spec/spec_helper.rb
170
+ - spec/support/rspec_helper.rb