lark-sdk 1.0.9 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5868e2971c4a26c336cd64e0a8eb6c436148f822ce794af05892df4ff5549bb
4
- data.tar.gz: 12409e9192b839c6a2a944ea5a2ab097616859db4038439064ec6370bdb178f1
3
+ metadata.gz: 9e9e89f6b11b38bdd10e46f82670f14bc4c3b6be4793708d1950cd9487b0326a
4
+ data.tar.gz: 97557dad510c8ac560acff87fe174615164142c4c5ca0ef422d849bb99a0412a
5
5
  SHA512:
6
- metadata.gz: 8705f5044981d5d1cce3630ce7f2b4c54e7c6bceb8c61b0d0f24210b12765bfb742689abdc607d9b187b89da237beff6b9d5f52c65db9ec132fcc136a8c28ffe
7
- data.tar.gz: ecf301ef9d0f47ac681ee4c0caf0725f1d19ebe75e2de5a1872f4a82735689c23aaed2c9eca238c88cf4bba82e14c99cb75ff74ea1874f972b72c56bfcb823af
6
+ metadata.gz: 5befe4a9fb2437add97a51e6e7d777991460552d0b712f71c84a1b95b383e5594548497af84f56c853f6ee4f8f7166200126c137d3c25da16f004201dd43a21d
7
+ data.tar.gz: 3ca75566751184f9c3a891720ec048c9e4c6d9bace74014467b40d9e77230a32c0200400361d025ff2607861ffb249563f5b65eae1efe7391cfabe8b0e8a08b7
@@ -5,8 +5,8 @@ require 'lark/config'
5
5
  require 'lark/cipher'
6
6
  require 'lark/helper'
7
7
 
8
- LIB_PATH = "#{File.dirname(__FILE__)}/lark"
9
- Dir["#{LIB_PATH}/apis/*.rb", "#{LIB_PATH}/token_store/*.rb"].each { |path| require path }
8
+ lib_path = "#{File.dirname(__FILE__)}/lark"
9
+ Dir["#{lib_path}/apis/**/*.rb", "#{lib_path}/token_store/*.rb"].each { |path| require path }
10
10
 
11
11
  require 'lark/api'
12
12
 
@@ -15,6 +15,7 @@ module Lark
15
15
 
16
16
  # Exceptions
17
17
  class RedisNotConfigException < RuntimeError; end
18
+ class AppNotConfigException < RuntimeError; end
18
19
  class AccessTokenExpiredError < RuntimeError; end
19
20
  class ResultErrorException < RuntimeError; end
20
21
  class ResponseError < StandardError
@@ -8,6 +8,7 @@ module Lark
8
8
  api_mount :authen
9
9
  api_mount :contact
10
10
  api_mount :user
11
+ api_mount :search
11
12
  api_mount :application
12
13
  api_mount :pay
13
14
  api_mount :chat
@@ -16,15 +17,18 @@ module Lark
16
17
  api_mount :image
17
18
  api_mount :mina
18
19
  api_mount :notify
20
+ api_mount :interactive
19
21
  api_mount :'drive/file'
20
22
  api_mount :'drive/folder'
21
23
  api_mount :'drive/platform'
22
24
 
23
25
  attr_reader :app_id, :app_secret, :tenant_key, :isv, :options
24
26
 
25
- def initialize options={}
27
+ def initialize(options = {})
26
28
  @app_id = options.delete(:app_id) || Lark.config.default_app_id
27
29
  @app_secret = options.delete(:app_secret) || Lark.config.default_app_secret
30
+ raise AppNotConfigException if @app_id.nil? || @app_id.empty?
31
+
28
32
  @tenant_key = options.delete(:tenant_key)
29
33
  @isv = options.delete(:isv) || Lark.config.default_isv
30
34
  @options = options
@@ -38,26 +42,26 @@ module Lark
38
42
  @request ||= Lark::Request.new(false)
39
43
  end
40
44
 
41
- def get(path, headers={})
42
- with_token(headers) do |headers|
43
- request.get path, headers
45
+ def get(path, headers = {})
46
+ with_token(headers) do |headers_with_token|
47
+ request.get path, headers_with_token
44
48
  end
45
49
  end
46
50
 
47
- def post(path, payload, headers={})
48
- with_token(headers) do |headers|
49
- request.post path, payload, headers
51
+ def post(path, payload, headers = {})
52
+ with_token(headers) do |headers_with_token|
53
+ request.post path, payload, headers_with_token
50
54
  end
51
55
  end
52
56
 
53
- def post_file(path, file, headers={})
54
- with_token(headers) do |headers|
55
- request.post_file path, file, headers
57
+ def post_file(path, file, headers = {})
58
+ with_token(headers) do |headers_with_token|
59
+ request.post_file path, file, headers_with_token
56
60
  end
57
61
  end
58
62
 
59
- def app_ticket= ticket
60
- Lark.redis.set "APP_TICKET_#{app_id}", ticket
63
+ def app_ticket=(new_ticket)
64
+ Lark.redis.set "APP_TICKET_#{app_id}", new_ticket
61
65
  end
62
66
 
63
67
  def app_ticket
@@ -76,17 +80,19 @@ module Lark
76
80
 
77
81
  def app_token_store
78
82
  return @app_token_store if defined?(@app_token_store)
83
+
79
84
  klass = isv ? TokenStore::IsvAppToken : TokenStore::AppToken
80
85
  @app_token_store = klass.new(self)
81
86
  end
82
87
 
83
88
  def tenant_token_store
84
89
  return @tenant_token_store if defined?(@tenant_token_store)
90
+
85
91
  klass = isv ? TokenStore::IsvTenantToken : TokenStore::TenantToken
86
92
  @tenant_token_store = klass.new(self)
87
93
  end
88
94
 
89
- def with_token(headers, tries=2)
95
+ def with_token(headers, tries = 2)
90
96
  token = headers[:access_token]
91
97
  if token.nil?
92
98
  via = headers[:via] || 'tenant'
@@ -1,6 +1,10 @@
1
1
  module Lark
2
2
  module Apis
3
3
  module Application
4
+ def app_admin_user_list
5
+ get 'user/v4/app_admin_user/list'
6
+ end
7
+
4
8
  def is_user_admin(params={})
5
9
  get 'application/v3/is_user_admin', params: params
6
10
  end
@@ -39,7 +39,7 @@ module Lark
39
39
  end
40
40
 
41
41
  def update(payload={})
42
- get 'chat/v4/update/', payload
42
+ post 'chat/v4/update/', payload
43
43
  end
44
44
 
45
45
  def chatter_add(chat_id:, user_ids: nil, open_ids: nil)
@@ -63,4 +63,4 @@ module Lark
63
63
  end
64
64
  end
65
65
  end
66
- end
66
+ end
@@ -42,19 +42,21 @@ module Lark
42
42
  get 'contact/v1/department/detail/batch_get', params: {department_ids: department_ids}
43
43
  end
44
44
 
45
- def department_user_list(department_id:, offset:, page_size:, fetch_child: false)
45
+ def department_user_list(department_id:, offset: nil, page_token: nil, page_size:, fetch_child: false)
46
46
  get 'contact/v1/department/user/list', params: {
47
47
  department_id: department_id,
48
- offset: offset,
48
+ offset: offset, # deprecation
49
+ page_token: page_token,
49
50
  page_size: page_size,
50
51
  fetch_child: fetch_child
51
52
  }.compact
52
53
  end
53
54
 
54
- def department_user_detail_list(department_id:, offset:, page_size:, fetch_child: false)
55
+ def department_user_detail_list(department_id:, offset: nil, page_token: nil, page_size:, fetch_child: false)
55
56
  get 'contact/v1/department/user/detail/list', params: {
56
57
  department_id: department_id,
57
- offset: offset,
58
+ offset: offset, # deprecation
59
+ page_token: page_token,
58
60
  page_size: page_size,
59
61
  fetch_child: fetch_child
60
62
  }.compact
@@ -0,0 +1,12 @@
1
+ module Lark
2
+ module Apis
3
+ module Interactive
4
+ def card_update(token:, card:)
5
+ post 'interactive/v1/card/update', {
6
+ token: token,
7
+ card: card
8
+ }
9
+ end
10
+ end
11
+ end
12
+ end
@@ -8,6 +8,10 @@ module Lark
8
8
  def direct_send(payload)
9
9
  post 'message/v4/send/', payload
10
10
  end
11
+
12
+ def ephemeral_send(payload)
13
+ post 'ephemeral/v1/send/', payload
14
+ end
11
15
  end
12
16
  end
13
- end
17
+ end
@@ -9,11 +9,11 @@ module Lark
9
9
  end
10
10
 
11
11
  def order_list(params={})
12
- get 'pay/v1/order/list', via: 'app', params: params
12
+ get 'pay/v1/order/list', params: params
13
13
  end
14
14
 
15
15
  def order_get(order_id)
16
- get 'pay/v1/order/get', via: 'app', params: {order_id: order_id}
16
+ get 'pay/v1/order/get', params: {order_id: order_id}
17
17
  end
18
18
  end
19
19
  end
@@ -0,0 +1,16 @@
1
+ module Lark
2
+ module Apis
3
+ module Search
4
+ def user(query:, user_access_token:, page_size: 20, page_token: nil)
5
+ get 'search/v1/user', {
6
+ access_token: user_access_token,
7
+ params: {
8
+ query: query,
9
+ page_size: page_size,
10
+ page_token: page_token
11
+ }.compact
12
+ }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -7,7 +7,7 @@ module Lark
7
7
  class_eval <<-CODE, __FILE__, __LINE__ + 1
8
8
  def #{name.to_s.gsub('/', '_')}
9
9
  @#{name.to_s.gsub('/', '_')} ||= Class.new(SimpleDelegator) do
10
- include Apis::#{name.to_s.classify}
10
+ include ::Lark::Apis::#{name.to_s.classify}
11
11
  end.new(self)
12
12
  end
13
13
  CODE
@@ -4,14 +4,14 @@ module Lark
4
4
  class Request
5
5
  attr_reader :ssl_context, :http
6
6
 
7
- def initialize(skip_verify_ssl=true)
7
+ def initialize(skip_verify_ssl = true)
8
8
  @http = HTTP.timeout(**Lark.http_timeout_options)
9
9
  @ssl_context = OpenSSL::SSL::SSLContext.new
10
10
  @ssl_context.ssl_version = :TLSv1
11
11
  @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE if skip_verify_ssl
12
12
  end
13
13
 
14
- def get(path, get_header={})
14
+ def get(path, get_header = {})
15
15
  request(path, get_header) do |url, header|
16
16
  params = header.delete(:params)
17
17
  http.headers(header).get(url, params: params, ssl_context: ssl_context)
@@ -19,7 +19,7 @@ module Lark
19
19
  end
20
20
  alias delete get
21
21
 
22
- def post(path, post_body, post_header={})
22
+ def post(path, post_body, post_header = {})
23
23
  request(path, post_header) do |url, header|
24
24
  Lark.logger.info "payload: #{post_body}"
25
25
  params = header.delete(:params)
@@ -27,7 +27,7 @@ module Lark
27
27
  end
28
28
  end
29
29
 
30
- def post_file(path, file, post_header={})
30
+ def post_file(path, file, post_header = {})
31
31
  request(path, post_header) do |url, header|
32
32
  params = header.delete(:params)
33
33
  http.headers(header).post(
@@ -44,13 +44,16 @@ module Lark
44
44
 
45
45
  private
46
46
 
47
- def request(path, header={}, &_block)
48
- url = URI::join(API_BASE_URL, path)
47
+ def request(path, header = {}, &_block)
48
+ url = URI.join(API_BASE_URL, path)
49
49
  Lark.logger.info "request url(#{url}) with headers: #{header}"
50
50
  as = header.delete(:as)
51
51
  header['Accept'] = 'application/json'
52
52
  response = yield(url, header)
53
- raise ResponseError.new(response.status) unless response.status.success?
53
+ unless response.status.success?
54
+ Lark.logger.error "request #{url} happen error: #{response.body}"
55
+ raise ResponseError.new(response.status, response.body)
56
+ end
54
57
  handle_response(response, as || :json)
55
58
  end
56
59
 
@@ -77,6 +80,7 @@ module Lark
77
80
  data = JSON.parse body.to_s
78
81
  result = Result.new(data)
79
82
  raise ::Lark::AccessTokenExpiredError if [99991663, 99991664].include?(result.code)
83
+
80
84
  result
81
85
  end
82
86
 
@@ -99,7 +103,7 @@ module Lark
99
103
  end
100
104
 
101
105
  def success?
102
- code == 0
106
+ code.zero?
103
107
  end
104
108
  end
105
109
  end
@@ -1,3 +1,3 @@
1
1
  module Lark
2
- VERSION = '1.0.9'.freeze
2
+ VERSION = '1.1.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lark-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Dong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-13 00:00:00.000000000 Z
11
+ date: 2020-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -123,10 +123,12 @@ files:
123
123
  - lib/lark/apis/drive/folder.rb
124
124
  - lib/lark/apis/drive/platform.rb
125
125
  - lib/lark/apis/image.rb
126
+ - lib/lark/apis/interactive.rb
126
127
  - lib/lark/apis/message.rb
127
128
  - lib/lark/apis/mina.rb
128
129
  - lib/lark/apis/notify.rb
129
130
  - lib/lark/apis/pay.rb
131
+ - lib/lark/apis/search.rb
130
132
  - lib/lark/apis/user.rb
131
133
  - lib/lark/cipher.rb
132
134
  - lib/lark/config.rb