Commit ab519ba1ddf6ab885cd5ba83c1dcc1e4adf6222f

Authored by lanrion
1 parent 4808be66
Exists in master

修复 suite base

lib/qy_wechat_api/api.rb
1 require "qy_wechat_api/api/base" 1 require "qy_wechat_api/api/base"
  2 +require "qy_wechat_api/api/service/service_base"
2 Dir["#{File.dirname(__FILE__)}/api/**/*.rb"].each do |path| 3 Dir["#{File.dirname(__FILE__)}/api/**/*.rb"].each do |path|
3 require path 4 require path
4 end 5 end
lib/qy_wechat_api/api/service/base.rb
@@ -1,60 +0,0 @@ @@ -1,60 +0,0 @@
1 -# encoding: utf-8  
2 -module QyWechatApi  
3 - module Api  
4 - module Service  
5 - class Base < Api::Base  
6 -  
7 - attr_accessor :suite_id, :suite_secret, :suite_ticket  
8 -  
9 - def initialize(suite_id, suite_secret, suite_ticket, options={})  
10 - @suite_id = suite_id  
11 - @suite_secret = suite_secret  
12 - @suite_ticket = suite_ticket  
13 - end  
14 -  
15 - private  
16 - # 获取应用套件令牌  
17 - # 获取suite_access_token时,还额外需要suite_ticket参数(请永远使用最新接收到的suite_ticket)。suite_ticket由企业号后台定时推送给应用套件,并每十分钟更新。  
18 - # 注2:通过本接口获取的accesstoken不会自动续期,每次获取都会自动更新。  
19 - def get_suite_token  
20 - params = {  
21 - suite_ticket: suite_ticket,  
22 - suite_id: suite_id,  
23 - suite_secret: suite_secret  
24 - }  
25 - Rails.cache.fetch(suite_id, expires_in: 7100.seconds) do  
26 - Rails.logger.info("Invoke #{suite_id} get_suite_token to refresh")  
27 - res = QyWechatApi.http_post_without_token(  
28 - request_url("get_suite_token", params),  
29 - params  
30 - )  
31 - Rails.logger.info(res)  
32 - token = res.result["suite_access_token"]  
33 - if token.blank?  
34 - Rails.cache.delete(suite_id)  
35 - raise res.errors  
36 - else  
37 - token  
38 - end  
39 - end  
40 - end  
41 -  
42 - def http_get(url, params={})  
43 - params.merge!({suite_id: suite_id})  
44 - params.merge!({suite_access_token: get_suite_token})  
45 - QyWechatApi.http_get_without_token(request_url(url, params), params)  
46 - end  
47 -  
48 - def http_post(url, payload={}, params={})  
49 - params.merge!({suite_id: suite_id})  
50 - # 获取suite_token时不需要  
51 - if !params.keys.include?(:suite_ticket)  
52 - params.merge!({suite_access_token: get_suite_token})  
53 - end  
54 - QyWechatApi.http_post_without_token(request_url(url, params), payload, params)  
55 - end  
56 - end  
57 -  
58 - end  
59 - end  
60 -end  
lib/qy_wechat_api/api/service/service_base.rb 0 → 100644
@@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
  1 +# encoding: utf-8
  2 +module QyWechatApi
  3 + module Api
  4 + module Service
  5 + class ServiceBase < Api::Base
  6 +
  7 + attr_accessor :suite_id, :suite_secret, :suite_ticket
  8 +
  9 + def initialize(suite_id, suite_secret, suite_ticket, options={})
  10 + @suite_id = suite_id
  11 + @suite_secret = suite_secret
  12 + @suite_ticket = suite_ticket
  13 + end
  14 +
  15 + private
  16 + # 获取应用套件令牌
  17 + # 获取suite_access_token时,还额外需要suite_ticket参数(请永远使用最新接收到的suite_ticket)。suite_ticket由企业号后台定时推送给应用套件,并每十分钟更新。
  18 + # 注2:通过本接口获取的accesstoken不会自动续期,每次获取都会自动更新。
  19 + def get_suite_token
  20 + params = {
  21 + suite_ticket: suite_ticket,
  22 + suite_id: suite_id,
  23 + suite_secret: suite_secret
  24 + }
  25 + Rails.cache.fetch(suite_id, expires_in: 7100.seconds) do
  26 + Rails.logger.info("Invoke #{suite_id} get_suite_token to refresh")
  27 + res = QyWechatApi.http_post_without_token(
  28 + request_url("get_suite_token", params),
  29 + params
  30 + )
  31 + Rails.logger.info(res)
  32 + token = res.result["suite_access_token"]
  33 + if token.blank?
  34 + Rails.cache.delete(suite_id)
  35 + raise res.errors
  36 + else
  37 + token
  38 + end
  39 + end
  40 + end
  41 +
  42 + def http_get(url, params={})
  43 + params.merge!({suite_id: suite_id})
  44 + params.merge!({suite_access_token: get_suite_token})
  45 + QyWechatApi.http_get_without_token(request_url(url, params), params)
  46 + end
  47 +
  48 + def http_post(url, payload={}, params={})
  49 + params.merge!({suite_id: suite_id})
  50 + # 获取suite_token时不需要
  51 + if !params.keys.include?(:suite_ticket)
  52 + params.merge!({suite_access_token: get_suite_token})
  53 + end
  54 + QyWechatApi.http_post_without_token(request_url(url, params), payload, params)
  55 + end
  56 + end
  57 +
  58 + end
  59 + end
  60 +end
lib/qy_wechat_api/api/service/suite.rb
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 module QyWechatApi 2 module QyWechatApi
3 module Api 3 module Api
4 module Service 4 module Service
5 - class Suite < Base 5 + class Suite < ServiceBase
6 6
7 # 获取预授权码 7 # 获取预授权码
8 # 该API用于获取预授权码。预授权码用于企业号授权时的应用提供商安全验证。 8 # 该API用于获取预授权码。预授权码用于企业号授权时的应用提供商安全验证。