lark-sdk 1.0.9 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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