diff --git a/lib/dingtalk/api/base.rb b/lib/dingtalk/api/base.rb index 6241f79..6404c23 100644 --- a/lib/dingtalk/api/base.rb +++ b/lib/dingtalk/api/base.rb @@ -2,19 +2,32 @@ module Dingtalk module Api class Base attr_accessor :corp_id + ACCESS_TOKEN = "access_token" def initialize(corp_id = nil) @corp_id = corp_id end + def access_token + "#{corp_id}_#{ACCESS_TOKEN}" + end + private + def default_params + { access_token: access_token } + end + + def payload(params = {}) + [ request_url(url), default_params.merge(params).to_json, { content_type: :json } ] + end + def http_get(url, params = {}) - res = RestClient.get(request_url(url), params.to_json, content_type: :json) + res = RestClient.get(payload(params)) JSON.parse(res) end def http_post(url, params = {}) - res = RestClient.post(request_url(url), params.to_json, content_type: :json) + res = RestClient.post(payload(params)) JSON.parse(res) end diff --git a/lib/dingtalk/api/department.rb b/lib/dingtalk/api/department.rb new file mode 100644 index 0000000..2ddd259 --- /dev/null +++ b/lib/dingtalk/api/department.rb @@ -0,0 +1,14 @@ +module Dingtalk + module Api + class Department < Base + def list + http_get('list') + end + + private + def base_url + 'department' + end + end + end +end diff --git a/lib/dingtalk/api/suite.rb b/lib/dingtalk/api/suite.rb index 609c227..4521f95 100644 --- a/lib/dingtalk/api/suite.rb +++ b/lib/dingtalk/api/suite.rb @@ -29,7 +29,7 @@ module Dingtalk suite_secret: @suite_secret, suite_ticket: suite_ticket } - http_post(request_url('get_suite_token'), params) + http_post('get_suite_token', params) # TODO check response values redis.set(SUITE_ACCESS_TOKEN, res['suite_access_token']) redis.expire(SUITE_ACCESS_TOKEN, EXPIRATION) @@ -41,6 +41,10 @@ module Dingtalk end private + def default_params + {} + end + def base_url 'service' end -- libgit2 0.21.0