mini_program 0.12.0 → 1.0.3
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 +11 -11
 - data/lib/mini_program/user.rb +5 -3
 - data/lib/mini_program/version.rb +1 -1
 - data/lib/mini_program.rb +0 -1
 - data/lib/service_result.rb +15 -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: ac5b6755d9c5dc7013a5b1c61c5f4ae22728d7cb8265b4e7a2ae79a085d0c240
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4b613227ac7bcab5bfba5641c872c5e803fafb9f3b25bea10e5ec1653460527a
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 71c4cbfa246b0aa7a1993d5de96a14bc7388736a4837d2f45ecd8b24c2d75eef6d41f3bd00db47dc23458b2c5299a0365e2eab37054dc44c53ac2f3580bb3909
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: adae6587fc29c76a2f9448234a7b260b5d0d52490baff8e913058b00b4ad1ab662834d8de3cbebc0a3cb6440ca33d363cc8345ed1b868bf389a672b96d6d7eaa
         
     | 
    
        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)
         
     | 
| 
         @@ -86,7 +90,7 @@ module MiniProgram 
     | 
|
| 
       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/mini_program.rb
    CHANGED
    
    
    
        data/lib/service_result.rb
    CHANGED
    
    | 
         @@ -1,7 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module MiniProgram
         
     | 
| 
       2 
2 
     | 
    
         
             
              class ServiceResult
         
     | 
| 
       3 
3 
     | 
    
         
             
                attr_accessor :success,
         
     | 
| 
       4 
     | 
    
         
            -
                              : 
     | 
| 
      
 4 
     | 
    
         
            +
                              :error,
         
     | 
| 
      
 5 
     | 
    
         
            +
                              :error_type,
         
     | 
| 
       5 
6 
     | 
    
         
             
                              :data,
         
     | 
| 
       6 
7 
     | 
    
         
             
                              :message,
         
     | 
| 
       7 
8 
     | 
    
         
             
                              :message_type
         
     | 
| 
         @@ -9,13 +10,13 @@ module MiniProgram 
     | 
|
| 
       9 
10 
     | 
    
         
             
                delegate :[], :[]=, to: :data
         
     | 
| 
       10 
11 
     | 
    
         | 
| 
       11 
12 
     | 
    
         
             
                def initialize(success: false,
         
     | 
| 
       12 
     | 
    
         
            -
                                
     | 
| 
      
 13 
     | 
    
         
            +
                               error: nil,
         
     | 
| 
       13 
14 
     | 
    
         
             
                               message: nil,
         
     | 
| 
       14 
15 
     | 
    
         
             
                               message_type: nil,
         
     | 
| 
       15 
16 
     | 
    
         
             
                               data: {})
         
     | 
| 
       16 
17 
     | 
    
         
             
                  self.success = success
         
     | 
| 
       17 
18 
     | 
    
         
             
                  self.data = (data.presence || {}).with_indifferent_access
         
     | 
| 
       18 
     | 
    
         
            -
                  self. 
     | 
| 
      
 19 
     | 
    
         
            +
                  self.error = error
         
     | 
| 
       19 
20 
     | 
    
         
             
                  self.message = message
         
     | 
| 
       20 
21 
     | 
    
         
             
                  self.message_type = message_type
         
     | 
| 
       21 
22 
     | 
    
         
             
                end
         
     | 
| 
         @@ -45,5 +46,16 @@ module MiniProgram 
     | 
|
| 
       45 
46 
     | 
    
         
             
                    :error
         
     | 
| 
       46 
47 
     | 
    
         
             
                  end
         
     | 
| 
       47 
48 
     | 
    
         
             
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                def as_json(options = nil)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  {
         
     | 
| 
      
 52 
     | 
    
         
            +
                    success: success,
         
     | 
| 
      
 53 
     | 
    
         
            +
                    data: data,
         
     | 
| 
      
 54 
     | 
    
         
            +
                    message: message,
         
     | 
| 
      
 55 
     | 
    
         
            +
                    message_type: get_message_type,
         
     | 
| 
      
 56 
     | 
    
         
            +
                    error: error,
         
     | 
| 
      
 57 
     | 
    
         
            +
                    error_type: error_type
         
     | 
| 
      
 58 
     | 
    
         
            +
                  }
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
       48 
60 
     | 
    
         
             
              end
         
     | 
| 
       49 
61 
     | 
    
         
             
            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.3
         
     | 
| 
       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
         
     |