dpd_api 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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