checkout_ru 0.2.0 → 0.3.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/checkout_ru/session.rb +26 -6
- data/lib/checkout_ru/version.rb +1 -1
- data/lib/checkout_ru.rb +19 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b23edda19deacdfe9babd4cafcf0a15e7700d7ff
|
4
|
+
data.tar.gz: a147e7b78668a55c5a7fa02e5410e2ddee492311
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e4c620ab482da22d2db9e97248288fc2ae4cb5d80ef435262f400914569423dfa7d452e3bc8dc4dff02c34f833313316939d72eb6b264aba5491c8971de05e1
|
7
|
+
data.tar.gz: bedadeccfdcdfb72ee3bb6a729950c2d993b8502c3b35d372a189ac8f0320f09835e9e64789236667ed8a5dbd69cb2c32d2edcae59af2665ddf8cfb9a204ca59
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 0.3.0
|
2
|
+
|
3
|
+
- Make ticket auto-renewable (optional)
|
4
|
+
- Fix bug with order serialization
|
5
|
+
- Fix bug with recognizing expired ticket exception
|
6
|
+
|
7
|
+
## 0.2.0
|
8
|
+
|
9
|
+
- Add ability to pass request options to api calls
|
10
|
+
|
1
11
|
## 0.1.0
|
2
12
|
|
3
13
|
- Fix bug where CheckoutRu.api_key config didn't work
|
data/lib/checkout_ru/session.rb
CHANGED
@@ -7,9 +7,10 @@ module CheckoutRu
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
+
attr_reader :ticket
|
11
|
+
|
10
12
|
def initialize(ticket)
|
11
13
|
@ticket = ticket
|
12
|
-
@conn = CheckoutRu.build_connection
|
13
14
|
end
|
14
15
|
|
15
16
|
def get_places_by_query(params = {}, options = {})
|
@@ -34,12 +35,31 @@ module CheckoutRu
|
|
34
35
|
|
35
36
|
private
|
36
37
|
def get(service, params = {}, options = {})
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
session_renewal_count ||= 0
|
39
|
+
session_renewal_count += 1
|
40
|
+
args = {:params => params.merge(:ticket => @ticket)}.merge(options)
|
41
|
+
args[:connection] ||= build_connection
|
42
42
|
CheckoutRu.make_request "/service/checkout/#{service}", args
|
43
|
+
rescue Faraday::Error::ClientError => e
|
44
|
+
if CheckoutRu.auto_renew_session &&
|
45
|
+
session_renewal_count < 2 && expired_ticket_exception?(e)
|
46
|
+
|
47
|
+
@ticket = CheckoutRu.get_ticket
|
48
|
+
retry
|
49
|
+
else
|
50
|
+
raise
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def build_connection
|
55
|
+
@connection ||= CheckoutRu.build_connection
|
56
|
+
end
|
57
|
+
|
58
|
+
def expired_ticket_exception?(exception)
|
59
|
+
exception.respond_to?(:response) &&
|
60
|
+
exception.response.respond_to?(:[]) &&
|
61
|
+
exception.response[:status] == 500 &&
|
62
|
+
exception.response[:body] =~ /#{@ticket}\s+is\s+expired\s+or\s+invalid/
|
43
63
|
end
|
44
64
|
end
|
45
65
|
end
|
data/lib/checkout_ru/version.rb
CHANGED
data/lib/checkout_ru.rb
CHANGED
@@ -11,11 +11,14 @@ require 'checkout_ru/order'
|
|
11
11
|
|
12
12
|
module CheckoutRu
|
13
13
|
SERVICE_URL = 'http://platform.checkout.ru'.freeze
|
14
|
-
|
15
14
|
Error = Class.new(Faraday::Error::ClientError)
|
16
15
|
|
17
16
|
class << self
|
18
|
-
attr_accessor
|
17
|
+
attr_accessor \
|
18
|
+
:service_url,
|
19
|
+
:api_key,
|
20
|
+
:adapter,
|
21
|
+
:auto_renew_session
|
19
22
|
|
20
23
|
def get_ticket(options = {})
|
21
24
|
key = options.delete(:api_key) || api_key
|
@@ -24,8 +27,8 @@ module CheckoutRu
|
|
24
27
|
|
25
28
|
def create_order(order, options = {})
|
26
29
|
args = {
|
27
|
-
:via
|
28
|
-
:params => { :order => order }
|
30
|
+
:via => :post,
|
31
|
+
:params => { :order => order.to_hash }
|
29
32
|
}.merge(options)
|
30
33
|
|
31
34
|
make_request_with_key '/service/order/create', args
|
@@ -34,7 +37,7 @@ module CheckoutRu
|
|
34
37
|
def update_order(remote_id, order, options = {})
|
35
38
|
args = {
|
36
39
|
:via => :post,
|
37
|
-
:params => { :order => order }
|
40
|
+
:params => { :order => order.to_hash }
|
38
41
|
}.merge(options)
|
39
42
|
|
40
43
|
make_request_with_key "/service/order/#{remote_id}", args
|
@@ -106,13 +109,13 @@ module CheckoutRu
|
|
106
109
|
end
|
107
110
|
|
108
111
|
def build_connection(options = {})
|
109
|
-
url = options[:url] || service_url
|
112
|
+
url = options[:url] || service_url
|
110
113
|
|
111
|
-
Faraday.new(:url => url) do |
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
114
|
+
Faraday.new(:url => url) do |conn|
|
115
|
+
conn.request :multi_json
|
116
|
+
conn.response :raise_error
|
117
|
+
conn.response :multi_json
|
118
|
+
conn.adapter options[:adapter] || adapter
|
116
119
|
end
|
117
120
|
end
|
118
121
|
|
@@ -148,4 +151,9 @@ module CheckoutRu
|
|
148
151
|
end
|
149
152
|
end
|
150
153
|
end
|
154
|
+
|
155
|
+
# Defaults
|
156
|
+
self.adapter = Faraday.default_adapter
|
157
|
+
self.auto_renew_session = true
|
158
|
+
self.service_url = SERVICE_URL
|
151
159
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: checkout_ru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxim Chernyak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|