mini_program 0.11.0 → 1.0.2
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/README.md +5 -5
- data/app/controllers/mini_program/application_controller.rb +4 -1
- data/app/controllers/mini_program/wechat_controller.rb +8 -4
- data/lib/application_controller_ext.rb +13 -2
- data/lib/mini_program/client.rb +12 -12
- data/lib/mini_program/user.rb +5 -3
- data/lib/mini_program/version.rb +1 -1
- data/lib/service_result.rb +3 -3
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4c2f36cd55294e1243e4933d5e7c2dccb8b81e7bf857fcdde911bdde0555a8b
|
4
|
+
data.tar.gz: f1be92b59ef4de422756391b3e7545c651b9950ddfd4cab825f20818e0636389
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15518ae9daa62e14d63b513432f2e707d012eeea7123d54f62e54913c623adad1301c614455e5ec198940cf4c0cabf3695b6d2d2bd3e4ce0effc125014156f8b
|
7
|
+
data.tar.gz: e6511f4151d75cdd0622ebb5cf932ba0aae5cc3bcd621a46792672056f7d53b9ac05aceff84ad6dfd89b54f87de697b3ffdd745dbdfd27122b0379fbbb5c2fde
|
data/README.md
CHANGED
@@ -71,11 +71,11 @@ end
|
|
71
71
|
# page: "/pages/index/index"
|
72
72
|
# data:
|
73
73
|
# thing2:
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
77
|
-
#
|
78
|
-
#
|
74
|
+
# value: "%{title}"
|
75
|
+
# phrase4:
|
76
|
+
# value: "%{state}"
|
77
|
+
# thing1:
|
78
|
+
# value: "%{detail}"
|
79
79
|
|
80
80
|
msg = MiniProgram::Msg.new(:progress, {
|
81
81
|
title: "测试",
|
@@ -2,18 +2,22 @@ require_dependency "mini_program/application_controller"
|
|
2
2
|
|
3
3
|
module MiniProgram
|
4
4
|
class WechatController < ApplicationController
|
5
|
-
skip_forgery_protection
|
5
|
+
skip_forgery_protection if respond_to? :skip_forgery_protection
|
6
6
|
|
7
7
|
# POST /wechat/login
|
8
8
|
def login
|
9
9
|
result = MiniProgram::Client.new.login(params["code"])
|
10
10
|
|
11
11
|
if result.success?
|
12
|
-
cookies.signed[:
|
12
|
+
cookies.signed[:openid] = result.data["openid"]
|
13
13
|
cookies.signed[:session_key] = result.data["session_key"]
|
14
|
+
cookies.signed[:options] = params[:options].permit!
|
15
|
+
|
16
|
+
after_mp_login if respond_to? :after_mp_login
|
17
|
+
|
14
18
|
render json: current_mp_user
|
15
19
|
else
|
16
|
-
render json: {
|
20
|
+
render json: { error: result.error }
|
17
21
|
end
|
18
22
|
end
|
19
23
|
|
@@ -27,7 +31,7 @@ module MiniProgram
|
|
27
31
|
|
28
32
|
render json: result.data
|
29
33
|
else
|
30
|
-
render json: {
|
34
|
+
render json: { error: result.error }
|
31
35
|
end
|
32
36
|
end
|
33
37
|
end
|
@@ -1,10 +1,21 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
ActionController::Base.class_eval do
|
3
|
+
ActionController::Base.class_eval do
|
4
4
|
def current_mp_user
|
5
5
|
MiniProgram::User.new(open_id: cookies.signed[:open_id],
|
6
6
|
nickname: cookies.signed[:nickname],
|
7
7
|
phone_num: cookies.signed[:phone_num],
|
8
|
-
session_key: cookies.signed[:session_key]
|
8
|
+
session_key: cookies.signed[:session_key],
|
9
|
+
options: cookies.signed[:options])
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
ActionController::API.class_eval do
|
14
|
+
def current_mp_user
|
15
|
+
MiniProgram::User.new(open_id: cookies.signed[:open_id],
|
16
|
+
nickname: cookies.signed[:nickname],
|
17
|
+
phone_num: cookies.signed[:phone_num],
|
18
|
+
session_key: cookies.signed[:session_key],
|
19
|
+
options: cookies.signed[:options])
|
9
20
|
end
|
10
21
|
end
|
data/lib/mini_program/client.rb
CHANGED
@@ -20,7 +20,7 @@ module MiniProgram
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def get_access_token(fresh: false)
|
23
|
-
access_token =
|
23
|
+
access_token = Rails.cache.read(access_token_store_key)
|
24
24
|
|
25
25
|
if access_token.present? && !fresh
|
26
26
|
return MiniProgram::ServiceResult.new(success: true, data: {access_token: access_token})
|
@@ -29,7 +29,11 @@ module MiniProgram
|
|
29
29
|
result = request_access_token
|
30
30
|
|
31
31
|
if result.success?
|
32
|
-
redis.setex access_token_store_key, 1.5.hours.to_i, result.data["access_token"]
|
32
|
+
# redis.setex access_token_store_key, 1.5.hours.to_i, result.data["access_token"]
|
33
|
+
Rails.cache.write(access_token_store_key,
|
34
|
+
result.data["access_token"],
|
35
|
+
expires_in: 1.5.hours.to_i,
|
36
|
+
race_condition_ttl: 10)
|
33
37
|
end
|
34
38
|
|
35
39
|
yield result if block_given?
|
@@ -58,7 +62,7 @@ module MiniProgram
|
|
58
62
|
api: #{api}
|
59
63
|
error: #{result}
|
60
64
|
ERROR
|
61
|
-
return MiniProgram::ServiceResult.new(success: false,
|
65
|
+
return MiniProgram::ServiceResult.new(success: false, error: result, message: result["errmsg"])
|
62
66
|
end
|
63
67
|
|
64
68
|
MiniProgram::ServiceResult.new(success: true, data: result)
|
@@ -80,13 +84,13 @@ module MiniProgram
|
|
80
84
|
|
81
85
|
result = JSON.parse(response)
|
82
86
|
|
83
|
-
if result["errcode"].to_s != "0"
|
87
|
+
if result["errcode"] && result["errcode"].to_s != "0"
|
84
88
|
logger.error <<~ERROR
|
85
89
|
Get session key failed.
|
86
90
|
api: #{api}
|
87
91
|
result: #{result}
|
88
92
|
ERROR
|
89
|
-
return MiniProgram::ServiceResult.new(
|
93
|
+
return MiniProgram::ServiceResult.new(error: result, message: result["errmsg"])
|
90
94
|
end
|
91
95
|
|
92
96
|
MiniProgram::ServiceResult.new(success: true, data: result)
|
@@ -111,7 +115,7 @@ module MiniProgram
|
|
111
115
|
|
112
116
|
if result["errcode"].to_s != "0"
|
113
117
|
msg_logger.error {"{params: #{payload}, response: #{result}}"}
|
114
|
-
return MiniProgram::ServiceResult.new(success: false,
|
118
|
+
return MiniProgram::ServiceResult.new(success: false, error: result)
|
115
119
|
end
|
116
120
|
|
117
121
|
msg_logger.info {"{params: #{payload}, response: #{result}}"}
|
@@ -140,7 +144,7 @@ module MiniProgram
|
|
140
144
|
|
141
145
|
if result["errcode"].to_s != "0"
|
142
146
|
msg_logger.error {"{params: #{payload}, response: #{result}}"}
|
143
|
-
return MiniProgram::ServiceResult.new(success: false,
|
147
|
+
return MiniProgram::ServiceResult.new(success: false, error: result["errmsg"])
|
144
148
|
end
|
145
149
|
|
146
150
|
msg_logger.info { "{params: #{payload}, response: #{result}}"}
|
@@ -221,10 +225,6 @@ module MiniProgram
|
|
221
225
|
@logger ||= MiniProgram::RLogger.make("mini_program")
|
222
226
|
end
|
223
227
|
|
224
|
-
def redis
|
225
|
-
@redis ||= Redis.current
|
226
|
-
end
|
227
|
-
|
228
228
|
def access_token_store_key
|
229
229
|
@access_token_store_key ||= "mp-#{appid}-access-token"
|
230
230
|
end
|
@@ -234,4 +234,4 @@ module MiniProgram
|
|
234
234
|
end
|
235
235
|
|
236
236
|
end
|
237
|
-
end
|
237
|
+
end
|
data/lib/mini_program/user.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
|
2
2
|
class MiniProgram::User
|
3
|
-
attr_accessor :open_id, :nickname, :phone_num, :session_key
|
4
|
-
|
3
|
+
attr_accessor :open_id, :nickname, :phone_num, :session_key, :options
|
4
|
+
|
5
5
|
def initialize(open_id: :blank_open_id,
|
6
6
|
nickname: :blank_nickname,
|
7
7
|
phone_num: :blank_phone_num,
|
8
|
-
session_key: :blank_session_key
|
8
|
+
session_key: :blank_session_key,
|
9
|
+
options: nil)
|
9
10
|
@open_id = open_id
|
10
11
|
@nickname = nickname
|
11
12
|
@phone_num = phone_num
|
12
13
|
@session_key = session_key
|
14
|
+
@options = options
|
13
15
|
end
|
14
16
|
end
|
data/lib/mini_program/version.rb
CHANGED
data/lib/service_result.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module MiniProgram
|
2
2
|
class ServiceResult
|
3
3
|
attr_accessor :success,
|
4
|
-
:
|
4
|
+
:error,
|
5
5
|
:data,
|
6
6
|
:message,
|
7
7
|
:message_type
|
@@ -9,13 +9,13 @@ module MiniProgram
|
|
9
9
|
delegate :[], :[]=, to: :data
|
10
10
|
|
11
11
|
def initialize(success: false,
|
12
|
-
|
12
|
+
error: nil,
|
13
13
|
message: nil,
|
14
14
|
message_type: nil,
|
15
15
|
data: {})
|
16
16
|
self.success = success
|
17
17
|
self.data = (data.presence || {}).with_indifferent_access
|
18
|
-
self.
|
18
|
+
self.error = error
|
19
19
|
self.message = message
|
20
20
|
self.message_type = message_type
|
21
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_program
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 6.1.4
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: redis
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: mocha
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|