Module: Model::Agency

Extended by:
ActiveSupport::Concern
Included in:
Wechat::Agency
Defined in:
app/models/wechat/model/agency.rb

Constant Summary collapse

SERVICE_TYPE =
{
  '0' => 'WechatRead',
  '1' => 'WechatRead',
  '2' => 'WechatPublic'
}.freeze

Instance Method Summary collapse

Instance Method Details

#apiObject



33
34
35
36
# File 'app/models/wechat/model/agency.rb', line 33

def api
  return @api if defined? @api
  @api = Wechat::Api::Public.new(self)
end

#init_appObject



38
39
40
41
# File 'app/models/wechat/model/agency.rb', line 38

def init_app
  app || build_app
  app.save
end

#refresh_access_tokenObject



43
44
45
46
# File 'app/models/wechat/model/agency.rb', line 43

def refresh_access_token
  r = platform.api.authorizer_token(appid, refresh_token)
  store_access_token(r)
end

#store_access_token(r) ⇒ Object



61
62
63
64
65
66
67
# File 'app/models/wechat/model/agency.rb', line 61

def store_access_token(r)
  self.access_token = r['authorizer_access_token']
  self.access_token_expires_at = Time.current + r['expires_in'].to_i
  self.refresh_token = r['authorizer_refresh_token']
  self.func_infos = r['func_info'].map { |i| i.dig('funcscope_category', 'id') } if r['func_info'].is_a?(Array)
  self.save
end

#store_infoObject



52
53
54
55
56
57
58
59
# File 'app/models/wechat/model/agency.rb', line 52

def store_info
  r = platform.api.get_authorizer_info(appid)
  self.assign_attributes r.slice('nick_name', 'head_img', 'user_name', 'principal_name', 'qrcode_url', 'business_info')
  self.alias_name = r['alias']
  self.service_type = r.dig('service_type_info', 'id')
  self.verify_type = r.dig('verify_type_info', 'id')
  self.save
end

#store_info_laterObject



48
49
50
# File 'app/models/wechat/model/agency.rb', line 48

def store_info_later
  AgencyJob.perform_later(self)
end