docbase 2.1.1 → 3.0.0
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 +4 -4
- data/CHANGELOG.md +14 -0
- data/README.md +79 -1
- data/docbase.gemspec +1 -0
- data/lib/docbase/client.rb +108 -25
- data/lib/docbase/version.rb +1 -1
- metadata +17 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 04de1814e9cdba377e46783519ead41b3471972cd19d4e32c058eb952ad9261d
|
|
4
|
+
data.tar.gz: 30f7944856b0157e89cc178b72f2d437a2ae1b1a6352b6437840566d461115fa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 63c7b0575d1b5ca821ae2cf0c6cde0ba94514321ce061f7f8f4c1e8a63e6ab8040e2d219a857d87b5b71e375e539faf16e427f900fa5265b2fcda755bc901644
|
|
7
|
+
data.tar.gz: af1764af0574365f63fdc14e9a206fb983632cb17c705cb442f68f9228c92b87a4c4c8af2fa66bf31200c77b0b02a408c85fa023445d62c0cfe9c4565d61dc2c
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## 3.0.0
|
|
2
|
+
|
|
3
|
+
* DocBase API v3対応
|
|
4
|
+
* プロフィール、所属グループ一覧、メンバー削除、コメント一覧、メモ本文部分更新、グッジョブAPIを追加
|
|
5
|
+
* `users`の`include_user_groups`引数を削除(v3で廃止)
|
|
6
|
+
* Ruby 3.4以降向けに`base64`依存を追加
|
|
7
|
+
* `X-Api-Version`ヘッダを削除(v3トークンでAPIバージョンが決まる)
|
|
8
|
+
* `create_comment`が`post_id`をリクエストボディに含めてしまう不具合を修正
|
|
9
|
+
* バイナリ取得用コネクションがJSON用と共有されていた不具合を修正
|
|
10
|
+
|
|
11
|
+
## 2.1.2
|
|
12
|
+
|
|
13
|
+
* 利用制限時にリトライできるように
|
|
14
|
+
|
|
1
15
|
## 2.1.1
|
|
2
16
|
|
|
3
17
|
* グループ取得APIにグループ名/ページネーションが渡せてるように fix: #17
|
data/README.md
CHANGED
|
@@ -26,13 +26,43 @@ Or install it yourself as:
|
|
|
26
26
|
client = DocBase::Client.new(access_token: 'your_access_token', team: 'your_team')
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
### Docbase::Client.new options
|
|
30
|
+
|
|
31
|
+
* access_token
|
|
32
|
+
* access token
|
|
33
|
+
* team
|
|
34
|
+
* team subdomain
|
|
35
|
+
* retry_on_rate_limit_exceeded
|
|
36
|
+
* [#16](https://github.com/krayinc/docbase-ruby/issues/16)
|
|
37
|
+
* true or false
|
|
38
|
+
|
|
39
|
+
### profile
|
|
40
|
+
|
|
41
|
+
```ruby
|
|
42
|
+
client.profile.body
|
|
43
|
+
```
|
|
44
|
+
|
|
29
45
|
### users
|
|
30
46
|
|
|
31
47
|
```ruby
|
|
32
48
|
client.users(q: 'name')
|
|
33
49
|
client.users(q: 'name', page: 2)
|
|
34
50
|
client.users(q: 'name', page: 1, per_page: 100)
|
|
35
|
-
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
所属グループはv3ではユーザー検索APIのレスポンスに含まれません。`user_groups`を利用してください。
|
|
54
|
+
|
|
55
|
+
#### User groups
|
|
56
|
+
|
|
57
|
+
```ruby
|
|
58
|
+
client.user_groups(1).body
|
|
59
|
+
client.user_groups(1, page: 2, per_page: 20).body
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### Delete user
|
|
63
|
+
|
|
64
|
+
```ruby
|
|
65
|
+
client.delete_user(1)
|
|
36
66
|
```
|
|
37
67
|
|
|
38
68
|
### tags
|
|
@@ -140,6 +170,25 @@ params = {
|
|
|
140
170
|
client.update_post(params)
|
|
141
171
|
```
|
|
142
172
|
|
|
173
|
+
#### Partial body update
|
|
174
|
+
|
|
175
|
+
```ruby
|
|
176
|
+
params = {
|
|
177
|
+
id: 1,
|
|
178
|
+
operations: [
|
|
179
|
+
{
|
|
180
|
+
start: 3,
|
|
181
|
+
end: 5,
|
|
182
|
+
old_content: "line3\r\nline4\r\nline5",
|
|
183
|
+
content: 'new text',
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
notice: true,
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
client.update_post_body(params)
|
|
190
|
+
```
|
|
191
|
+
|
|
143
192
|
#### Archive
|
|
144
193
|
|
|
145
194
|
```ruby
|
|
@@ -160,6 +209,13 @@ client.delete_post(1)
|
|
|
160
209
|
|
|
161
210
|
### Comment
|
|
162
211
|
|
|
212
|
+
#### List
|
|
213
|
+
|
|
214
|
+
```ruby
|
|
215
|
+
client.comments(1).body
|
|
216
|
+
client.comments(1, page: 2, per_page: 20, order: 'desc').body
|
|
217
|
+
```
|
|
218
|
+
|
|
163
219
|
#### Create
|
|
164
220
|
|
|
165
221
|
```ruby
|
|
@@ -178,6 +234,28 @@ client.create_comment(params)
|
|
|
178
234
|
client.delete_comment(1)
|
|
179
235
|
```
|
|
180
236
|
|
|
237
|
+
### good jobs
|
|
238
|
+
|
|
239
|
+
#### List
|
|
240
|
+
|
|
241
|
+
```ruby
|
|
242
|
+
client.good_jobs(1).body
|
|
243
|
+
client.good_jobs(1, page: 2, per_page: 100, order: 'desc').body
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
#### Create
|
|
247
|
+
|
|
248
|
+
```ruby
|
|
249
|
+
client.create_good_job(1)
|
|
250
|
+
client.create_good_job(1, notice: false)
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
#### Delete
|
|
254
|
+
|
|
255
|
+
```ruby
|
|
256
|
+
client.delete_good_job(1, 111)
|
|
257
|
+
```
|
|
258
|
+
|
|
181
259
|
### attachments
|
|
182
260
|
|
|
183
261
|
#### Create
|
data/docbase.gemspec
CHANGED
|
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
18
18
|
spec.require_paths = ['lib']
|
|
19
19
|
|
|
20
|
+
spec.add_dependency 'base64'
|
|
20
21
|
spec.add_dependency 'faraday', '>= 0.15.2'
|
|
21
22
|
spec.add_dependency 'faraday_middleware', '>= 0.12.2'
|
|
22
23
|
end
|
data/lib/docbase/client.rb
CHANGED
|
@@ -5,13 +5,15 @@ module DocBase
|
|
|
5
5
|
|
|
6
6
|
class NotSetTeamError < StandardError; end
|
|
7
7
|
class NotSetPostIdError < StandardError; end
|
|
8
|
+
class TooManyRequestError < StandardError; end
|
|
8
9
|
|
|
9
|
-
attr_accessor :team, :access_token
|
|
10
|
+
attr_accessor :team, :access_token, :retry_on_rate_limit_exceeded
|
|
10
11
|
|
|
11
|
-
def initialize(access_token: nil, url: nil, team: nil)
|
|
12
|
+
def initialize(access_token: nil, url: nil, team: nil, retry_on_rate_limit_exceeded: false)
|
|
12
13
|
self.access_token = access_token
|
|
13
14
|
self.team = team
|
|
14
15
|
@url = url || DEFAULT_URL
|
|
16
|
+
self.retry_on_rate_limit_exceeded = retry_on_rate_limit_exceeded
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
def team!
|
|
@@ -19,24 +21,44 @@ module DocBase
|
|
|
19
21
|
@team
|
|
20
22
|
end
|
|
21
23
|
|
|
22
|
-
def
|
|
23
|
-
|
|
24
|
+
def profile
|
|
25
|
+
request(method: :get, path: "/teams/#{team!}/profile")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def users(q: nil, page: 1, per_page: 100)
|
|
29
|
+
request(
|
|
30
|
+
method: :get,
|
|
31
|
+
path: "/teams/#{team!}/users",
|
|
32
|
+
params: { q: q, page: page, per_page: per_page }
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def user_groups(user_id, page: 1, per_page: 20)
|
|
37
|
+
request(
|
|
38
|
+
method: :get,
|
|
39
|
+
path: "/teams/#{team!}/users/#{user_id}/groups",
|
|
40
|
+
params: { page: page, per_page: per_page }
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def delete_user(id)
|
|
45
|
+
request(method: :delete, path: "/teams/#{team!}/users/#{id}")
|
|
24
46
|
end
|
|
25
47
|
|
|
26
48
|
def tags
|
|
27
|
-
|
|
49
|
+
request(method: :get, path: "/teams/#{team!}/tags")
|
|
28
50
|
end
|
|
29
51
|
|
|
30
52
|
def groups(name: nil, page: 1, per_page: 100)
|
|
31
|
-
|
|
53
|
+
request(method: :get, path: "/teams/#{team!}/groups", params: { name: name, page: page, per_page: per_page })
|
|
32
54
|
end
|
|
33
55
|
|
|
34
56
|
def group(id)
|
|
35
|
-
|
|
57
|
+
request(method: :get, path: "/teams/#{team!}/groups/#{id}")
|
|
36
58
|
end
|
|
37
59
|
|
|
38
60
|
def create_group(params)
|
|
39
|
-
|
|
61
|
+
request(method: :post, path: "/teams/#{team!}/groups", params: params)
|
|
40
62
|
end
|
|
41
63
|
|
|
42
64
|
def add_users_to_group(params)
|
|
@@ -44,7 +66,7 @@ module DocBase
|
|
|
44
66
|
raise NotSetTeamError if group_id <= 0
|
|
45
67
|
|
|
46
68
|
users_params = except(params, :group_id)
|
|
47
|
-
|
|
69
|
+
request(method: :post, path: "/teams/#{team!}/groups/#{group_id}/users", params: users_params)
|
|
48
70
|
end
|
|
49
71
|
|
|
50
72
|
def remove_users_from_group(params)
|
|
@@ -52,51 +74,95 @@ module DocBase
|
|
|
52
74
|
raise NotSetTeamError if group_id <= 0
|
|
53
75
|
|
|
54
76
|
users_params = except(params, :group_id)
|
|
55
|
-
|
|
77
|
+
request(method: :delete, path: "/teams/#{team!}/groups/#{group_id}/users", params: users_params)
|
|
56
78
|
end
|
|
57
79
|
|
|
58
80
|
def post(id)
|
|
59
|
-
|
|
81
|
+
request(method: :get, path: "/teams/#{team!}/posts/#{id}")
|
|
60
82
|
end
|
|
61
83
|
|
|
62
84
|
def posts(q: '*', page: 1, per_page: 20)
|
|
63
|
-
|
|
85
|
+
request(method: :get, path: "/teams/#{team!}/posts", params: { q: q, page: page, per_page: per_page })
|
|
64
86
|
end
|
|
65
87
|
|
|
66
88
|
def create_post(params)
|
|
67
|
-
|
|
89
|
+
request(method: :post, path: "/teams/#{team!}/posts", params: params)
|
|
68
90
|
end
|
|
69
91
|
|
|
70
92
|
def update_post(params)
|
|
71
93
|
post_id = params[:id].to_i
|
|
72
|
-
raise
|
|
94
|
+
raise NotSetPostIdError if post_id <= 0
|
|
73
95
|
|
|
74
96
|
post_params = except(params, :id)
|
|
75
|
-
|
|
97
|
+
request(method: :patch, path: "/teams/#{team!}/posts/#{post_id}", params: post_params)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def update_post_body(params)
|
|
101
|
+
post_id = params[:id].to_i
|
|
102
|
+
raise NotSetPostIdError if post_id <= 0
|
|
103
|
+
|
|
104
|
+
body_params = except(params, :id)
|
|
105
|
+
request(method: :patch, path: "/teams/#{team!}/posts/#{post_id}/body", params: body_params)
|
|
76
106
|
end
|
|
77
107
|
|
|
78
108
|
def delete_post(id)
|
|
79
|
-
|
|
109
|
+
request(method: :delete, path: "/teams/#{team!}/posts/#{id}")
|
|
80
110
|
end
|
|
81
111
|
|
|
82
112
|
def archive_post(id)
|
|
83
|
-
|
|
113
|
+
request(method: :put, path: "/teams/#{team!}/posts/#{id}/archive")
|
|
84
114
|
end
|
|
85
115
|
|
|
86
116
|
def unarchive_post(id)
|
|
87
|
-
|
|
117
|
+
request(method: :put, path: "/teams/#{team!}/posts/#{id}/unarchive")
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def comments(post_id, page: 1, per_page: 20, order: 'asc', created_after: nil, created_before: nil)
|
|
121
|
+
request(
|
|
122
|
+
method: :get,
|
|
123
|
+
path: "/teams/#{team!}/posts/#{post_id}/comments",
|
|
124
|
+
params: {
|
|
125
|
+
page: page,
|
|
126
|
+
per_page: per_page,
|
|
127
|
+
order: order,
|
|
128
|
+
created_after: created_after,
|
|
129
|
+
created_before: created_before,
|
|
130
|
+
}
|
|
131
|
+
)
|
|
88
132
|
end
|
|
89
133
|
|
|
90
134
|
def create_comment(params)
|
|
91
135
|
post_id = params[:post_id].to_i
|
|
92
|
-
raise
|
|
136
|
+
raise NotSetPostIdError if post_id <= 0
|
|
93
137
|
|
|
94
138
|
comment_params = except(params, :post_id)
|
|
95
|
-
|
|
139
|
+
request(method: :post, path: "/teams/#{team!}/posts/#{post_id}/comments", params: comment_params)
|
|
96
140
|
end
|
|
97
141
|
|
|
98
142
|
def delete_comment(id)
|
|
99
|
-
|
|
143
|
+
request(method: :delete, path: "/teams/#{team!}/comments/#{id}")
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def good_jobs(post_id, page: 1, per_page: 100, order: 'asc', created_after: nil, created_before: nil)
|
|
147
|
+
request(
|
|
148
|
+
method: :get,
|
|
149
|
+
path: "/teams/#{team!}/posts/#{post_id}/good_jobs",
|
|
150
|
+
params: {
|
|
151
|
+
page: page,
|
|
152
|
+
per_page: per_page,
|
|
153
|
+
order: order,
|
|
154
|
+
created_after: created_after,
|
|
155
|
+
created_before: created_before,
|
|
156
|
+
}
|
|
157
|
+
)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def create_good_job(post_id, params = {})
|
|
161
|
+
request(method: :post, path: "/teams/#{team!}/posts/#{post_id}/good_jobs", params: params)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def delete_good_job(post_id, good_job_id)
|
|
165
|
+
request(method: :delete, path: "/teams/#{team!}/posts/#{post_id}/good_jobs/#{good_job_id}")
|
|
100
166
|
end
|
|
101
167
|
|
|
102
168
|
def upload(paths)
|
|
@@ -110,11 +176,11 @@ module DocBase
|
|
|
110
176
|
}
|
|
111
177
|
end
|
|
112
178
|
|
|
113
|
-
|
|
179
|
+
request(method: :post, path: "/teams/#{team!}/attachments", params: params)
|
|
114
180
|
end
|
|
115
181
|
|
|
116
182
|
def attachment(id)
|
|
117
|
-
|
|
183
|
+
request(method: :get, path: "/teams/#{team!}/attachments/#{id}", for_binary: true)
|
|
118
184
|
end
|
|
119
185
|
|
|
120
186
|
private
|
|
@@ -132,7 +198,7 @@ module DocBase
|
|
|
132
198
|
end
|
|
133
199
|
|
|
134
200
|
def connection_for_binary
|
|
135
|
-
@
|
|
201
|
+
@connection_for_binary ||= Faraday.new({ url: @url, headers: headers }) do |faraday|
|
|
136
202
|
faraday.request :json
|
|
137
203
|
faraday.adapter Faraday.default_adapter
|
|
138
204
|
end
|
|
@@ -143,8 +209,25 @@ module DocBase
|
|
|
143
209
|
'Accept' => 'application/json',
|
|
144
210
|
'User-Agent' => USER_AGENT,
|
|
145
211
|
'X-DocBaseToken' => access_token,
|
|
146
|
-
'X-Api-Version' => '2',
|
|
147
212
|
}
|
|
148
213
|
end
|
|
214
|
+
|
|
215
|
+
def request(method:, path:, params: nil, for_binary: false)
|
|
216
|
+
conn = for_binary ? connection_for_binary : connection
|
|
217
|
+
response = conn.send(method, path, params)
|
|
218
|
+
raise TooManyRequestError if retry_on_rate_limit_exceeded && response.status == 429
|
|
219
|
+
response
|
|
220
|
+
rescue TooManyRequestError
|
|
221
|
+
reset_time = response.headers['x-ratelimit-reset'].to_i
|
|
222
|
+
puts "DocBase API Rate limit exceeded: will retry at #{Time.at(reset_time).strftime("%Y/%m/%d %H:%M:%S")}."
|
|
223
|
+
wait_for(reset_time)
|
|
224
|
+
retry
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def wait_for(reset_time)
|
|
228
|
+
wait_time = reset_time - Time.now.to_i
|
|
229
|
+
return if wait_time <= 0
|
|
230
|
+
sleep wait_time
|
|
231
|
+
end
|
|
149
232
|
end
|
|
150
233
|
end
|
data/lib/docbase/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: docbase
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ttakuru88
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: base64
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0'
|
|
13
26
|
- !ruby/object:Gem::Dependency
|
|
14
27
|
name: faraday
|
|
15
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -64,7 +77,6 @@ homepage: https://github.com/krayinc/docbase-ruby
|
|
|
64
77
|
licenses:
|
|
65
78
|
- MIT
|
|
66
79
|
metadata: {}
|
|
67
|
-
post_install_message:
|
|
68
80
|
rdoc_options: []
|
|
69
81
|
require_paths:
|
|
70
82
|
- lib
|
|
@@ -79,8 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
79
91
|
- !ruby/object:Gem::Version
|
|
80
92
|
version: '0'
|
|
81
93
|
requirements: []
|
|
82
|
-
rubygems_version:
|
|
83
|
-
signing_key:
|
|
94
|
+
rubygems_version: 4.0.10
|
|
84
95
|
specification_version: 4
|
|
85
96
|
summary: DocBase API Client, written in Ruby
|
|
86
97
|
test_files: []
|