Module: Model::App

Extended by:
ActiveSupport::Concern
Included in:
Dingtalk::App
Defined in:
app/models/dingtalk/model/app.rb

Instance Method Summary collapse

Instance Method Details

#access_token_valid?Boolean

Returns:

  • (Boolean)


41
42
43
44
# File 'app/models/dingtalk/model/app.rb', line 41

def access_token_valid?
  return false unless access_token_expires_at.acts_like?(:time)
  access_token_expires_at > Time.current
end

#apiObject



21
22
23
24
# File 'app/models/dingtalk/model/app.rb', line 21

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

#get_jsapi_ticketObject



46
47
48
49
50
51
52
# File 'app/models/dingtalk/model/app.rb', line 46

def get_jsapi_ticket
  if jsapi_ticket_valid?
    jsapi_ticket
  else
    refresh_jsapi_ticket
  end
end

#jsapi_ticket_valid?Boolean

Returns:

  • (Boolean)


54
55
56
57
# File 'app/models/dingtalk/model/app.rb', line 54

def jsapi_ticket_valid?
  return false unless jsapi_ticket_expires_at.acts_like?(:time)
  jsapi_ticket_expires_at > Time.current
end

#refresh_access_tokenObject



26
27
28
29
30
31
32
33
# File 'app/models/dingtalk/model/app.rb', line 26

def refresh_access_token
  r = api.token
  if r['access_token']
    store_access_token(r)
  else
    logger.debug "\e[35m  #{r['errmsg']}  \e[0m"
  end
end

#refresh_jsapi_ticketObject



59
60
61
62
63
# File 'app/models/dingtalk/model/app.rb', line 59

def refresh_jsapi_ticket
  r = api.jsapi_ticket
  store_jsapi_ticket(r)
  jsapi_ticket
end

#store_access_token(token_hash) ⇒ Object



35
36
37
38
39
# File 'app/models/dingtalk/model/app.rb', line 35

def store_access_token(token_hash)
  self.access_token = token_hash['access_token']
  self.access_token_expires_at = Time.current + token_hash['expires_in'].to_i
  self.save
end

#store_jsapi_ticket(ticket_hash) ⇒ Object



65
66
67
68
69
# File 'app/models/dingtalk/model/app.rb', line 65

def store_jsapi_ticket(ticket_hash)
  self.jsapi_ticket = ticket_hash['ticket']
  self.jsapi_ticket_expires_at = Time.current + ticket_hash['expires_in'].to_i
  self.save
end