dianping-api 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/dianping/api.rb +3 -3
- data/lib/dianping/api/client.rb +12 -2
- data/lib/dianping/api/modules/tuangou.rb +2 -2
- data/lib/dianping/api/token.rb +12 -8
- data/lib/dianping/api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 273a0b63e1a93932e0418017345a05999480e3b24666a79cd7d8027cf6665422
|
4
|
+
data.tar.gz: c240ad8116fc4ea92cbfaf292c4b2b8dc5cead0b321c5178da860bd96ce7a603
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b381e73e5f1b843b19106794740772d67ed279f066465a6ed93d672107e10590d79f8a30a26e302f0f9f75a40f79cb9b021b9a60f8b9169ad5a98be84d3ab30
|
7
|
+
data.tar.gz: 4d62e49edc8261d014fe4108aa730723a9005c0c99cb7ba9320946a34bd001ea5a338f0940e0d7a016b3687aa54dc01a23080bffb6ba93ccfaff7651357c520b
|
data/Gemfile.lock
CHANGED
data/lib/dianping/api.rb
CHANGED
@@ -10,11 +10,11 @@ module Dianping
|
|
10
10
|
class UsageError < Error; end
|
11
11
|
|
12
12
|
def self.logger
|
13
|
-
|
13
|
+
@logger ||= defined?(Rails) ? Rails.logger : ::Logger.new(STDOUT)
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def self.logger=(logger)
|
17
|
-
|
17
|
+
@logger = logger
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.client
|
data/lib/dianping/api/client.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'faraday'
|
2
|
+
require 'securerandom'
|
2
3
|
|
3
4
|
module Dianping
|
4
5
|
module Api
|
@@ -6,7 +7,7 @@ module Dianping
|
|
6
7
|
|
7
8
|
include Modules::Tuangou
|
8
9
|
|
9
|
-
attr_reader :app_key, :site, :token
|
10
|
+
attr_reader :app_key, :site, :token, :token_root
|
10
11
|
attr_accessor :redirect_url
|
11
12
|
|
12
13
|
def initialize(app_key, secret, **options)
|
@@ -14,6 +15,7 @@ module Dianping
|
|
14
15
|
@secret = secret
|
15
16
|
@site = options[:site] || 'https://openapi.dianping.com'
|
16
17
|
@redirect_url = options[:redirect_url]
|
18
|
+
@token_root = options[:token_root] || '/tmp'
|
17
19
|
@token = Token.new(self)
|
18
20
|
end
|
19
21
|
|
@@ -84,6 +86,10 @@ module Dianping
|
|
84
86
|
MultiJson.load(text || '{}', symbolize_keys: true)
|
85
87
|
end
|
86
88
|
|
89
|
+
def requestid
|
90
|
+
SecureRandom.hex
|
91
|
+
end
|
92
|
+
|
87
93
|
def share_params
|
88
94
|
{
|
89
95
|
app_key: app_key,
|
@@ -96,13 +102,17 @@ module Dianping
|
|
96
102
|
end
|
97
103
|
|
98
104
|
def sign_with_share(params = {})
|
99
|
-
merged =
|
105
|
+
merged = merge_params(params)
|
100
106
|
content = merged.to_a.sort.flatten.join.encode!('UTF-8')
|
101
107
|
# puts @secret + content
|
102
108
|
Api.logger.debug { format('content: %s', content) }
|
103
109
|
sign = Digest::MD5.hexdigest([@secret, content, @secret].compact.join)
|
104
110
|
merged.merge(sign: sign)
|
105
111
|
end
|
112
|
+
|
113
|
+
def merge_params(params)
|
114
|
+
share_params.merge(params || {}).dup.reject { |_k, v| v.nil? }
|
115
|
+
end
|
106
116
|
end
|
107
117
|
end
|
108
118
|
end
|
@@ -6,10 +6,10 @@ module Dianping
|
|
6
6
|
post('/router/tuangou/receipt/prepare', open_shop_uuid: shop_uuid, receipt_code: code)
|
7
7
|
end
|
8
8
|
|
9
|
-
def receipt_consume(shop_uuid, code,
|
9
|
+
def receipt_consume(shop_uuid, code, count = 1, request_id = nil, **params)
|
10
10
|
params.merge! open_shop_uuid: shop_uuid,
|
11
11
|
receipt_code: code,
|
12
|
-
requestid: request_id,
|
12
|
+
requestid: request_id || requestid,
|
13
13
|
count: count
|
14
14
|
keys = %i[requestid receipt_code count open_shop_uuid app_shop_account app_shop_accountname]
|
15
15
|
raise "missing keys #{keys - params.keys}" unless (keys - params.keys).empty?
|
data/lib/dianping/api/token.rb
CHANGED
@@ -7,20 +7,24 @@ module Dianping
|
|
7
7
|
|
8
8
|
def initialize(client)
|
9
9
|
@client = client
|
10
|
-
@token_file = File.join(
|
10
|
+
@token_file = File.join(client.token_root || 'tmp', "dianping-api-#{client.app_key}")
|
11
11
|
end
|
12
12
|
|
13
13
|
def access_hash
|
14
|
-
@access_hash ||=
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
@access_hash ||= load_token
|
15
|
+
end
|
16
|
+
|
17
|
+
def load_token
|
18
|
+
token = MultiJson.load(File.read(@token_file), symbolize_keys: true)
|
19
|
+
token[:access_hash] || (raise 'empty token')
|
20
|
+
rescue Errno::ENOENT
|
21
|
+
{}
|
21
22
|
end
|
22
23
|
|
23
24
|
def refresh
|
25
|
+
@access_hash = load_token # try to use shared token first
|
26
|
+
return unless expired?
|
27
|
+
|
24
28
|
raise Error, 'no refresh_token' unless refresh_token && remain_refresh_count > 1
|
25
29
|
|
26
30
|
save_token(client.refresh_token(@access_hash[:refresh_token]))
|
data/lib/dianping/api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dianping-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Wong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|