Commit 95616af06dd19f51468a940eea0544e4022dc5c6

Authored by Jeff Lai
1 parent e75db402
Exists in master

Add basic department api

lib/dingtalk/api/base.rb
... ... @@ -2,19 +2,32 @@ module Dingtalk
2 2 module Api
3 3 class Base
4 4 attr_accessor :corp_id
  5 + ACCESS_TOKEN = "access_token"
5 6  
6 7 def initialize(corp_id = nil)
7 8 @corp_id = corp_id
8 9 end
9 10  
  11 + def access_token
  12 + "#{corp_id}_#{ACCESS_TOKEN}"
  13 + end
  14 +
10 15 private
  16 + def default_params
  17 + { access_token: access_token }
  18 + end
  19 +
  20 + def payload(params = {})
  21 + [ request_url(url), default_params.merge(params).to_json, { content_type: :json } ]
  22 + end
  23 +
11 24 def http_get(url, params = {})
12   - res = RestClient.get(request_url(url), params.to_json, content_type: :json)
  25 + res = RestClient.get(payload(params))
13 26 JSON.parse(res)
14 27 end
15 28  
16 29 def http_post(url, params = {})
17   - res = RestClient.post(request_url(url), params.to_json, content_type: :json)
  30 + res = RestClient.post(payload(params))
18 31 JSON.parse(res)
19 32 end
20 33  
... ...
lib/dingtalk/api/department.rb 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +module Dingtalk
  2 + module Api
  3 + class Department < Base
  4 + def list
  5 + http_get('list')
  6 + end
  7 +
  8 + private
  9 + def base_url
  10 + 'department'
  11 + end
  12 + end
  13 + end
  14 +end
... ...
lib/dingtalk/api/suite.rb
... ... @@ -29,7 +29,7 @@ module Dingtalk
29 29 suite_secret: @suite_secret,
30 30 suite_ticket: suite_ticket
31 31 }
32   - http_post(request_url('get_suite_token'), params)
  32 + http_post('get_suite_token', params)
33 33 # TODO check response values
34 34 redis.set(SUITE_ACCESS_TOKEN, res['suite_access_token'])
35 35 redis.expire(SUITE_ACCESS_TOKEN, EXPIRATION)
... ... @@ -41,6 +41,10 @@ module Dingtalk
41 41 end
42 42  
43 43 private
  44 + def default_params
  45 + {}
  46 + end
  47 +
44 48 def base_url
45 49 'service'
46 50 end
... ...