pickpoint_api 0.1
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 +7 -0
- data/.gitignore +0 -0
- data/.travis.yml +7 -0
- data/LICENSE +21 -0
- data/README.md +37 -0
- data/lib/pickpoint_api/constants.rb +135 -0
- data/lib/pickpoint_api/exceptions.rb +5 -0
- data/lib/pickpoint_api/session.rb +179 -0
- data/lib/pickpoint_api.rb +21 -0
- data/pickpoint_api.gemspec +15 -0
- data/spec/pickpoint_api.rb +15 -0
- data/spec/session.rb +111 -0
- data/spec/support/dummy_data.rb +45 -0
- data/spec/support/http_mocking.rb +14 -0
- metadata +57 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 08af998b998f4ca9f2902135d967b5df4b5a31fe
|
4
|
+
data.tar.gz: 484a27051f28e58a5a6fb4a93bd8d6dd6fd1d0e1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b18c637a31a3741b4d3de4da5c907917a343e3faa2effb070938f066b31148fc0910d0495c0ebdc1483112e53e4b42fb89a81e0794af4ca64e925cc8b7a9d774
|
7
|
+
data.tar.gz: 53c386ad19ca66bc492a5127c8c55b746d1a338254686c0b60e2fcd6812dc93a7b768f9432dd5dfd491c60c446b496b0c4c715128e9585a57851a07df9932d0c
|
data/.gitignore
ADDED
File without changes
|
data/.travis.yml
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2014 Kinderly LTD
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Pickpoint API
|
2
|
+
|
3
|
+
[](https://travis-ci.org/kinderly/pickpoint_api)
|
4
|
+
|
5
|
+
## Description
|
6
|
+
|
7
|
+
This gem provides a basic Ruby wrapper over [Pickpoint](http://pickpoint.ru/) API.
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
require('pickpoint_api')
|
13
|
+
|
14
|
+
PickpointApi.session('login', 'password', test: true) do |s|
|
15
|
+
postamats = s.postamat_list
|
16
|
+
|
17
|
+
s.create_sending(@my_sending_hash)
|
18
|
+
|
19
|
+
tracking_response = s.track_sending(@invoice_id_1)
|
20
|
+
|
21
|
+
labels_response_pdf = s.make_label([@invoice_id_1, @invoice_id_2])
|
22
|
+
|
23
|
+
reestr_response_pdf = s.make_reestr([@invoice_id_1, @invoice_id_2])
|
24
|
+
|
25
|
+
end
|
26
|
+
```
|
27
|
+
|
28
|
+
Alternatively, you can create a Session object explicitly:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
require ('pickpoint_api')
|
32
|
+
|
33
|
+
session = PickpointApi::Session.new(test: true)
|
34
|
+
session.login('login', 'password')
|
35
|
+
tracking_response = session.track_sending(@invoice_id_1)
|
36
|
+
session.logout
|
37
|
+
```
|
@@ -0,0 +1,135 @@
|
|
1
|
+
module PickpointApi::Constants
|
2
|
+
API_HOST = 'e-solution.pickpoint.ru'
|
3
|
+
API_PORT = 80
|
4
|
+
API_TEST_PATH = '/apitest'
|
5
|
+
API_PROD_PATH = '/api'
|
6
|
+
|
7
|
+
ACTIONS = {
|
8
|
+
login:
|
9
|
+
{
|
10
|
+
path: '/login',
|
11
|
+
method: :post
|
12
|
+
},
|
13
|
+
logout:
|
14
|
+
{
|
15
|
+
path: '/logout',
|
16
|
+
method: :post
|
17
|
+
},
|
18
|
+
create_sending:
|
19
|
+
{
|
20
|
+
path: '/createsending',
|
21
|
+
method: :post
|
22
|
+
},
|
23
|
+
create_shipment:
|
24
|
+
{
|
25
|
+
path: '/createshipment',
|
26
|
+
method: :post
|
27
|
+
},
|
28
|
+
make_return:
|
29
|
+
{
|
30
|
+
path: '/makereturn',
|
31
|
+
method: :post
|
32
|
+
},
|
33
|
+
get_return_invoice_list:
|
34
|
+
{
|
35
|
+
path: '/getreturninvoiceslist',
|
36
|
+
method: :post
|
37
|
+
},
|
38
|
+
track_sending:
|
39
|
+
{
|
40
|
+
path: '/tracksending',
|
41
|
+
method: :post
|
42
|
+
},
|
43
|
+
sending_info:
|
44
|
+
{
|
45
|
+
path: '/sendinginfo',
|
46
|
+
method: :post
|
47
|
+
},
|
48
|
+
get_delivery_cost:
|
49
|
+
{
|
50
|
+
path: '/getdeliverycost',
|
51
|
+
method: :post
|
52
|
+
},
|
53
|
+
courier:
|
54
|
+
{
|
55
|
+
path: '/courier',
|
56
|
+
method: :post
|
57
|
+
},
|
58
|
+
courier_cancel:
|
59
|
+
{
|
60
|
+
path: '/couriercancel',
|
61
|
+
method: :post
|
62
|
+
},
|
63
|
+
make_reestr:
|
64
|
+
{
|
65
|
+
path: '/makereestr',
|
66
|
+
method: :post
|
67
|
+
},
|
68
|
+
make_reestr_number:
|
69
|
+
{
|
70
|
+
path: '/makereestrnumber',
|
71
|
+
method: :post
|
72
|
+
},
|
73
|
+
get_reestr:
|
74
|
+
{
|
75
|
+
path: '/getreestr',
|
76
|
+
method: :post
|
77
|
+
},
|
78
|
+
make_label:
|
79
|
+
{
|
80
|
+
path: '/makelabel',
|
81
|
+
method: :post
|
82
|
+
},
|
83
|
+
make_zlabel:
|
84
|
+
{
|
85
|
+
path: '/makeZlabel',
|
86
|
+
method: :post
|
87
|
+
},
|
88
|
+
city_list:
|
89
|
+
{
|
90
|
+
path: '/citylist',
|
91
|
+
method: :get
|
92
|
+
},
|
93
|
+
postamat_list:
|
94
|
+
{
|
95
|
+
path: '/postamatlist',
|
96
|
+
method: :get
|
97
|
+
},
|
98
|
+
get_zone:
|
99
|
+
{
|
100
|
+
path: '/getzone',
|
101
|
+
method: :post
|
102
|
+
},
|
103
|
+
get_money_return_order:
|
104
|
+
{
|
105
|
+
path: '/getmoneyreturnorder',
|
106
|
+
method: :post
|
107
|
+
},
|
108
|
+
get_product_return_order:
|
109
|
+
{
|
110
|
+
path: '/getproductreturnorder',
|
111
|
+
method: :post
|
112
|
+
},
|
113
|
+
enclose_info:
|
114
|
+
{
|
115
|
+
path: '/encloseinfo',
|
116
|
+
method: :post
|
117
|
+
},
|
118
|
+
track_sendings:
|
119
|
+
{
|
120
|
+
path: '/tracksendings',
|
121
|
+
method: :post
|
122
|
+
},
|
123
|
+
get_states:
|
124
|
+
{
|
125
|
+
path: '/getstates',
|
126
|
+
method: :get
|
127
|
+
},
|
128
|
+
get_invoices_change_state:
|
129
|
+
{
|
130
|
+
path: '/getInvoicesChangeState',
|
131
|
+
method: :post
|
132
|
+
}
|
133
|
+
}.freeze
|
134
|
+
|
135
|
+
end
|
@@ -0,0 +1,179 @@
|
|
1
|
+
require('net/http')
|
2
|
+
require('json')
|
3
|
+
|
4
|
+
class PickpointApi::Session
|
5
|
+
attr_reader :state
|
6
|
+
attr_reader :test
|
7
|
+
|
8
|
+
def initialize(hash = {})
|
9
|
+
@state = :new
|
10
|
+
@test = hash[:test] == true
|
11
|
+
end
|
12
|
+
|
13
|
+
def login(login, password)
|
14
|
+
if @state!= :new
|
15
|
+
return nil
|
16
|
+
end
|
17
|
+
|
18
|
+
data = {'Login' => login, 'Password' => password}
|
19
|
+
response = execute_action(:login, data)
|
20
|
+
response = JSON.parse(response)
|
21
|
+
|
22
|
+
if response['ErrorMessage'].nil? && !response['SessionId'].nil?
|
23
|
+
@session_id = response['SessionId']
|
24
|
+
@state = :started
|
25
|
+
else
|
26
|
+
@state = :error
|
27
|
+
raise ::PickpointApi::Exceptions::ApiError, response['ErrorMessage']
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def logout
|
32
|
+
if !@session_id.nil? && @state == :started
|
33
|
+
data = {'SessionId' => @session_id}
|
34
|
+
response = execute_action :logout, data
|
35
|
+
response = JSON.parse(response)
|
36
|
+
if response['Success']
|
37
|
+
@state = :closed
|
38
|
+
@session_id = nil
|
39
|
+
return true
|
40
|
+
else
|
41
|
+
return false
|
42
|
+
end
|
43
|
+
else
|
44
|
+
return false
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_sending(data)
|
49
|
+
if @state == :started
|
50
|
+
data = attach_session_id(data, 'Sendings')
|
51
|
+
response = execute_action(:create_sending, data)
|
52
|
+
response = JSON.parse(response)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def track_sending(invoice_id)
|
57
|
+
if @state != :started
|
58
|
+
return nil
|
59
|
+
end
|
60
|
+
|
61
|
+
data = invoice_id
|
62
|
+
data = attach_session_id(data, 'InvoiceNumber')
|
63
|
+
response = execute_action(:track_sending, data)
|
64
|
+
|
65
|
+
if response.nil? || response.empty?
|
66
|
+
return nil
|
67
|
+
end
|
68
|
+
|
69
|
+
response = JSON.parse(response)
|
70
|
+
end
|
71
|
+
|
72
|
+
def postamat_list
|
73
|
+
if @state == :started
|
74
|
+
response = execute_action(:postamat_list)
|
75
|
+
response = JSON.parse(response)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def make_label(invoice_id)
|
80
|
+
if @state != :started
|
81
|
+
return nil
|
82
|
+
end
|
83
|
+
|
84
|
+
if invoice_id.kind_of?(Array)
|
85
|
+
data = invoice_id
|
86
|
+
elsif
|
87
|
+
data = [invoice_id]
|
88
|
+
end
|
89
|
+
|
90
|
+
data = attach_session_id(data,'Invoices')
|
91
|
+
response = execute_action(:make_label, data)
|
92
|
+
|
93
|
+
if response.start_with?("Error")
|
94
|
+
raise ::PickpointApi::Exceptions::ApiError, response
|
95
|
+
return nil
|
96
|
+
else
|
97
|
+
return response
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def make_reestr(invoice_id)
|
102
|
+
if @state != :started
|
103
|
+
return nil
|
104
|
+
end
|
105
|
+
|
106
|
+
if invoice_id.kind_of?(Array)
|
107
|
+
data = invoice_id
|
108
|
+
elsif
|
109
|
+
data = [invoice_id]
|
110
|
+
end
|
111
|
+
|
112
|
+
data = attach_session_id(data,'Invoices')
|
113
|
+
response = execute_action(:make_reestr, data)
|
114
|
+
|
115
|
+
if response.start_with?("Error")
|
116
|
+
raise ::PickpointApi::Exceptions::ApiError, response
|
117
|
+
return nil
|
118
|
+
else
|
119
|
+
return response
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
private
|
124
|
+
|
125
|
+
def api_path
|
126
|
+
if @test
|
127
|
+
::PickpointApi::Constants::API_TEST_PATH
|
128
|
+
else
|
129
|
+
::PickpointApi::Constants::API_PROD_PATH
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def create_request(action)
|
134
|
+
action_config = ::PickpointApi::Constants::ACTIONS[action]
|
135
|
+
if action_config.nil?
|
136
|
+
return nil
|
137
|
+
end
|
138
|
+
|
139
|
+
action_path = "#{api_path}#{action_config[:path]}"
|
140
|
+
|
141
|
+
if action_config[:method] == :post
|
142
|
+
req = ::Net::HTTP::Post.new action_path
|
143
|
+
elsif action_config[:method] == :get
|
144
|
+
req = ::Net::HTTP::Get.new action_path
|
145
|
+
end
|
146
|
+
|
147
|
+
req.content_type = 'application/json'
|
148
|
+
|
149
|
+
req
|
150
|
+
end
|
151
|
+
|
152
|
+
def attach_session_id(data, key)
|
153
|
+
{
|
154
|
+
'SessionId' => @session_id,
|
155
|
+
key => data
|
156
|
+
}
|
157
|
+
end
|
158
|
+
|
159
|
+
def execute_action(action, data = {})
|
160
|
+
req = create_request action
|
161
|
+
|
162
|
+
if req.nil?
|
163
|
+
return nil
|
164
|
+
end
|
165
|
+
|
166
|
+
req.body = data.to_json
|
167
|
+
|
168
|
+
response = send_request(req)
|
169
|
+
|
170
|
+
response.body
|
171
|
+
end
|
172
|
+
|
173
|
+
def send_request(req)
|
174
|
+
::Net::HTTP.start(::PickpointApi::Constants::API_HOST, ::PickpointApi::Constants::API_PORT) do |http|
|
175
|
+
http.request(req)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module PickpointApi
|
2
|
+
|
3
|
+
def self.session login, password, hash = {}
|
4
|
+
begin
|
5
|
+
session = Session.new hash
|
6
|
+
session.login login, password
|
7
|
+
yield session
|
8
|
+
rescue => ex
|
9
|
+
raise ::PickpointApi::Exceptions::ApiError, ex.message
|
10
|
+
ensure
|
11
|
+
if !session.nil? && session.state != :closed
|
12
|
+
session.logout
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
require_relative('pickpoint_api/constants.rb')
|
20
|
+
require_relative('pickpoint_api/session.rb')
|
21
|
+
require_relative('pickpoint_api/exceptions.rb')
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "pickpoint_api"
|
3
|
+
s.version = "0.1"
|
4
|
+
s.authors = ["Kinderly LTD"]
|
5
|
+
s.email = ["nuinuhin@gmail.com"]
|
6
|
+
s.homepage = "http://github.com/kinderly/pickpoint_api"
|
7
|
+
|
8
|
+
s.summary = %q{A wrapper for Pickpoint API}
|
9
|
+
s.description = %q{This gem provides a Ruby wrapper over Pickpoint API.}
|
10
|
+
s.license = "MIT"
|
11
|
+
|
12
|
+
s.files = `git ls-files`.split("\n")
|
13
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
+
s.require_paths = ["lib"]
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative '../lib/pickpoint_api.rb'
|
2
|
+
require_relative './support/dummy_data.rb'
|
3
|
+
require_relative './support/http_mocking.rb'
|
4
|
+
|
5
|
+
include DummyData
|
6
|
+
|
7
|
+
describe 'PickpointApi' do
|
8
|
+
it 'should run session' do
|
9
|
+
HttpMocking.set_next_response(LOGIN_SUCCESSFULL)
|
10
|
+
|
11
|
+
PickpointApi.session('login', 'password', test:true) do |s|
|
12
|
+
HttpMocking.set_next_response(LOGOUT_SUCCESSFULL)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/session.rb
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require_relative '../lib/pickpoint_api.rb'
|
4
|
+
require_relative './support/dummy_data.rb'
|
5
|
+
require_relative './support/http_mocking.rb'
|
6
|
+
|
7
|
+
include DummyData
|
8
|
+
|
9
|
+
describe ::PickpointApi::Session do
|
10
|
+
before(:each) do
|
11
|
+
@session = ::PickpointApi::Session.new(test: true)
|
12
|
+
|
13
|
+
::HttpMocking.set_next_response(LOGIN_SUCCESSFULL)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'can instatiate' do
|
17
|
+
expect(@session).not_to be_nil
|
18
|
+
expect(@session.test).to eq true
|
19
|
+
expect(@session.state).to eq :new
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '.login' do
|
23
|
+
it 'should log-in' do
|
24
|
+
@session.login('login', 'password')
|
25
|
+
expect(@session.state).to eq :started
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should handle incorrect login' do
|
29
|
+
::HttpMocking.set_next_response(LOGIN_FAILED)
|
30
|
+
expect { @session.login('login', 'password') }.to raise_error ::PickpointApi::Exceptions::ApiError
|
31
|
+
expect(@session.state).to eq(:error)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '.logout' do
|
36
|
+
it 'should log out' do
|
37
|
+
@session.login('login', 'password')
|
38
|
+
::HttpMocking.set_next_response(LOGOUT_SUCCESSFULL)
|
39
|
+
expect(@session.logout).to eq(true)
|
40
|
+
expect(@session.state).to eq(:closed)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.create_sending' do
|
45
|
+
it 'should handle succesfull request' do
|
46
|
+
@session.login('login', 'password')
|
47
|
+
::HttpMocking.set_next_response(CREATE_SENDING_SUCCESSFULL)
|
48
|
+
res = @session.create_sending(SAMPLE_SENDING_REQUEST)
|
49
|
+
expect(res['CreatedSendings']).not_to be_empty
|
50
|
+
expect(res['RejectedSendings']).to be_empty
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '.track_sending' do
|
55
|
+
it 'should handle succesfull request' do
|
56
|
+
@session.login('login', 'password')
|
57
|
+
::HttpMocking.set_next_response({}.to_json)
|
58
|
+
res = @session.track_sending('21121312')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '.postamat_list' do
|
63
|
+
it 'should handle succesfull request' do
|
64
|
+
@session.login('login', 'password')
|
65
|
+
::HttpMocking.set_next_response({}.to_json)
|
66
|
+
@session.postamat_list
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '.make_label' do
|
71
|
+
it 'should handle succesfull request' do
|
72
|
+
@session.login('login', 'password')
|
73
|
+
::HttpMocking.set_next_response('%PDF')
|
74
|
+
@session.make_label('12345')
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should handle multiple invoices' do
|
78
|
+
@session.login('login', 'password')
|
79
|
+
::HttpMocking.set_next_response('%PDF')
|
80
|
+
@session.make_label(['123123','123213'])
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should handle api error' do
|
84
|
+
@session.login('login', 'password')
|
85
|
+
::HttpMocking.set_next_response('Error: Случилось что-то ужасное')
|
86
|
+
expect{@session.make_label(['123123'])}.to raise_error PickpointApi::Exceptions::ApiError
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe '.make_reestr' do
|
91
|
+
it 'should handle succesfull request' do
|
92
|
+
@session.login('login', 'password')
|
93
|
+
::HttpMocking.set_next_response('%PDF')
|
94
|
+
@session.make_reestr('12345')
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should handle multiple invoices' do
|
98
|
+
@session.login('login', 'password')
|
99
|
+
::HttpMocking.set_next_response('%PDF')
|
100
|
+
@session.make_reestr(['123123','123213'])
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should handle api error' do
|
105
|
+
@session.login('login', 'password')
|
106
|
+
::HttpMocking.set_next_response('Error: Случилось что-то ужасное')
|
107
|
+
expect{@session.make_reestr(['123123'])}.to raise_error PickpointApi::Exceptions::ApiError
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require ('json')
|
4
|
+
|
5
|
+
module DummyData
|
6
|
+
LOGIN_SUCCESSFULL = {'SessionId' => '111111111'}.to_json
|
7
|
+
LOGIN_FAILED = {'ErrorMessage' => 'Неверный логин или пароль'}.to_json
|
8
|
+
LOGOUT_SUCCESSFULL = {'Success' => true}.to_json
|
9
|
+
CREATE_SENDING_SUCCESSFULL = {
|
10
|
+
"CreatedSendings" => [
|
11
|
+
{
|
12
|
+
'EDTN' => "14",
|
13
|
+
'IKN' => "9990000000",
|
14
|
+
'Barcode' => '200819647155'
|
15
|
+
}
|
16
|
+
],
|
17
|
+
"RejectedSendings" => []
|
18
|
+
}.to_json
|
19
|
+
|
20
|
+
SAMPLE_SENDING_REQUEST = {
|
21
|
+
"EDTN" => 14,
|
22
|
+
"IKN" => "9990000000",
|
23
|
+
"Invoice" => {
|
24
|
+
"SenderCode" => 2121,
|
25
|
+
"Description" => "A description",
|
26
|
+
"RecipientName" => "John Doe",
|
27
|
+
"PostamatNumber" => "6101-004",
|
28
|
+
"MobilePhone" => "+79030000000",
|
29
|
+
"Email" => nil,
|
30
|
+
"PostageType" => "10003",
|
31
|
+
"GettingType" => "101",
|
32
|
+
"PayType" => "1",
|
33
|
+
"Sum" => 4490.0,
|
34
|
+
"SubEncloses" => [
|
35
|
+
{
|
36
|
+
"Line" => 1,
|
37
|
+
"ProductCode" => 4559802,
|
38
|
+
"GoodsCode" => "79380-555",
|
39
|
+
"Name" => "Fire extinguisher large",
|
40
|
+
"Price" => 4290.0
|
41
|
+
}]
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
|
4
|
+
module HttpMocking
|
5
|
+
|
6
|
+
def self.set_next_response(response_body, code = 200, msg='OK')
|
7
|
+
Net::HTTP.any_instance.stub(:request) do |req|
|
8
|
+
response = Net::HTTPResponse.new(1.0, code, msg)
|
9
|
+
response.stub(:body => response_body)
|
10
|
+
response
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pickpoint_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kinderly LTD
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-03 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: This gem provides a Ruby wrapper over Pickpoint API.
|
14
|
+
email:
|
15
|
+
- nuinuhin@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- ".gitignore"
|
21
|
+
- ".travis.yml"
|
22
|
+
- LICENSE
|
23
|
+
- README.md
|
24
|
+
- lib/pickpoint_api.rb
|
25
|
+
- lib/pickpoint_api/constants.rb
|
26
|
+
- lib/pickpoint_api/exceptions.rb
|
27
|
+
- lib/pickpoint_api/session.rb
|
28
|
+
- pickpoint_api.gemspec
|
29
|
+
- spec/pickpoint_api.rb
|
30
|
+
- spec/session.rb
|
31
|
+
- spec/support/dummy_data.rb
|
32
|
+
- spec/support/http_mocking.rb
|
33
|
+
homepage: http://github.com/kinderly/pickpoint_api
|
34
|
+
licenses:
|
35
|
+
- MIT
|
36
|
+
metadata: {}
|
37
|
+
post_install_message:
|
38
|
+
rdoc_options: []
|
39
|
+
require_paths:
|
40
|
+
- lib
|
41
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
requirements: []
|
52
|
+
rubyforge_project:
|
53
|
+
rubygems_version: 2.2.2
|
54
|
+
signing_key:
|
55
|
+
specification_version: 4
|
56
|
+
summary: A wrapper for Pickpoint API
|
57
|
+
test_files: []
|