dianping-api 0.1.4 → 0.1.5
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/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
|