docbase 1.0.1 → 2.1.2
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/.travis.yml +2 -6
- data/CHANGELOG.md +23 -0
- data/Gemfile +2 -2
- data/README.md +18 -13
- data/docbase.gemspec +2 -2
- data/lib/docbase/client.rb +53 -27
- data/lib/docbase/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20af66cc5d5085854e9aef5f65e57383291a8f217961a4fa6cead0bb2e678941
|
4
|
+
data.tar.gz: 24cf39072ac1eaf9c4cc700f6ee2bcc694939b5c4d26427cb932aedeabf499f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12a494552034d86ba01f68a95e30a438ed068307223d83dd23b9e92fa23f15a85dc98cee60577342696b123ec2b5153f0935d77b58a3887f810da919beb7b0f8
|
7
|
+
data.tar.gz: d5dc0fea1f5d08a13ea5df13c38c504e11a80b5a82f121ce9afe7d087cb1d4b06d48188434939bd41758a67029aacc692fd7db8466fd5db9c1f2fe6023a3ef7c
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
## 2.1.2
|
2
|
+
|
3
|
+
* 利用制限時にリトライできるように
|
4
|
+
|
5
|
+
## 2.1.1
|
6
|
+
|
7
|
+
* グループ取得APIにグループ名/ページネーションが渡せてるように fix: #17
|
8
|
+
|
9
|
+
## 2.1.0
|
10
|
+
|
11
|
+
* faradayを1.0.0以上でも使えるように
|
12
|
+
* ruby 2.4をサポート対象外に
|
13
|
+
|
14
|
+
## 2.0.1
|
15
|
+
|
16
|
+
* ファイルダウンロードAPIに対応
|
17
|
+
|
18
|
+
## 2.0.0
|
19
|
+
|
20
|
+
* DocBaseAPIv2用としてリリース
|
21
|
+
* チーム一覧APIを廃止
|
22
|
+
* 環境変数`DOCBASE_ACCESS_TOKEN`でのトークン読み込みを廃止
|
23
|
+
|
1
24
|
## 1.0.0
|
2
25
|
|
3
26
|
* DocBaseAPIv1用としてリリース
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -26,20 +26,15 @@ Or install it yourself as:
|
|
26
26
|
client = DocBase::Client.new(access_token: 'your_access_token', team: 'your_team')
|
27
27
|
```
|
28
28
|
|
29
|
-
|
29
|
+
### Docbase::Client.new options
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
```ruby
|
40
|
-
client.teams.body
|
41
|
-
# => [{ domain: 'kray', name: 'kray' }, { domain: 'danny', name: 'danny' }]
|
42
|
-
```
|
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
|
43
38
|
|
44
39
|
### users
|
45
40
|
|
@@ -63,6 +58,8 @@ client.tags.body
|
|
63
58
|
|
64
59
|
```ruby
|
65
60
|
client.groups.body
|
61
|
+
client.groups(name: 'developers').body
|
62
|
+
client.groups(page: 2, per_page: 10).body
|
66
63
|
```
|
67
64
|
|
68
65
|
#### Show
|
@@ -200,6 +197,13 @@ client.upload('./test.jpg')
|
|
200
197
|
client.upload(['./test.jpg', './README.md'])
|
201
198
|
```
|
202
199
|
|
200
|
+
#### Download
|
201
|
+
|
202
|
+
```ruby
|
203
|
+
response = client.attachment(file_id)
|
204
|
+
File.open(file_id, 'wb') { |f| f.write(response.body) }
|
205
|
+
```
|
206
|
+
|
203
207
|
### switch team
|
204
208
|
|
205
209
|
```ruby
|
@@ -208,6 +212,7 @@ client.tags.body
|
|
208
212
|
# => [{ name: 'ruby' }, { name: 'rails' }]
|
209
213
|
|
210
214
|
client.team = 'danny'
|
215
|
+
client.access_token = 'danny_team_access_token'
|
211
216
|
client.tags.body
|
212
217
|
# => [{ name: 'javascript' }, { name: 'react' }]
|
213
218
|
```
|
data/docbase.gemspec
CHANGED
@@ -17,6 +17,6 @@ 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 'faraday', '
|
21
|
-
spec.add_dependency 'faraday_middleware', '
|
20
|
+
spec.add_dependency 'faraday', '>= 0.15.2'
|
21
|
+
spec.add_dependency 'faraday_middleware', '>= 0.12.2'
|
22
22
|
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
|
10
|
+
attr_accessor :team, :access_token, :retry_on_rate_limit_exceeded
|
10
11
|
|
11
|
-
def initialize(access_token: nil, url: nil, team: nil)
|
12
|
-
|
12
|
+
def initialize(access_token: nil, url: nil, team: nil, retry_on_rate_limit_exceeded: false)
|
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,28 +21,24 @@ module DocBase
|
|
19
21
|
@team
|
20
22
|
end
|
21
23
|
|
22
|
-
def teams
|
23
|
-
connection.get('/teams')
|
24
|
-
end
|
25
|
-
|
26
24
|
def users(q: nil, page: 1, per_page: 100, include_user_groups: false)
|
27
|
-
|
25
|
+
request(method: :get, path: "/teams/#{team!}/users", params: { q: q, page: page, per_page: per_page, include_user_groups: include_user_groups })
|
28
26
|
end
|
29
27
|
|
30
28
|
def tags
|
31
|
-
|
29
|
+
request(method: :get, path: "/teams/#{team!}/tags")
|
32
30
|
end
|
33
31
|
|
34
|
-
def groups
|
35
|
-
|
32
|
+
def groups(name: nil, page: 1, per_page: 100)
|
33
|
+
request(method: :get, path: "/teams/#{team!}/groups", params: { name: name, page: page, per_page: per_page })
|
36
34
|
end
|
37
35
|
|
38
36
|
def group(id)
|
39
|
-
|
37
|
+
request(method: :get, path: "/teams/#{team!}/groups/#{id}")
|
40
38
|
end
|
41
39
|
|
42
40
|
def create_group(params)
|
43
|
-
|
41
|
+
request(method: :post, path: "/teams/#{team!}/groups", params: params)
|
44
42
|
end
|
45
43
|
|
46
44
|
def add_users_to_group(params)
|
@@ -48,7 +46,7 @@ module DocBase
|
|
48
46
|
raise NotSetTeamError if group_id <= 0
|
49
47
|
|
50
48
|
users_params = except(params, :group_id)
|
51
|
-
|
49
|
+
request(method: :post, path: "/teams/#{team!}/groups/#{group_id}/users", params: users_params)
|
52
50
|
end
|
53
51
|
|
54
52
|
def remove_users_from_group(params)
|
@@ -56,19 +54,19 @@ module DocBase
|
|
56
54
|
raise NotSetTeamError if group_id <= 0
|
57
55
|
|
58
56
|
users_params = except(params, :group_id)
|
59
|
-
|
57
|
+
request(method: :delete, path: "/teams/#{team!}/groups/#{group_id}/users", params: users_params)
|
60
58
|
end
|
61
59
|
|
62
60
|
def post(id)
|
63
|
-
|
61
|
+
request(method: :get, path: "/teams/#{team!}/posts/#{id}")
|
64
62
|
end
|
65
63
|
|
66
64
|
def posts(q: '*', page: 1, per_page: 20)
|
67
|
-
|
65
|
+
request(method: :get, path: "/teams/#{team!}/posts", params: { q: q, page: page, per_page: per_page })
|
68
66
|
end
|
69
67
|
|
70
68
|
def create_post(params)
|
71
|
-
|
69
|
+
request(method: :post, path: "/teams/#{team!}/posts", params: params)
|
72
70
|
end
|
73
71
|
|
74
72
|
def update_post(params)
|
@@ -76,19 +74,19 @@ module DocBase
|
|
76
74
|
raise NotSetTeamError if post_id <= 0
|
77
75
|
|
78
76
|
post_params = except(params, :id)
|
79
|
-
|
77
|
+
request(method: :patch, path: "/teams/#{team!}/posts/#{post_id}", params: post_params)
|
80
78
|
end
|
81
79
|
|
82
80
|
def delete_post(id)
|
83
|
-
|
81
|
+
request(method: :delete, path: "/teams/#{team!}/posts/#{id}")
|
84
82
|
end
|
85
83
|
|
86
84
|
def archive_post(id)
|
87
|
-
|
85
|
+
request(method: :put, path: "/teams/#{team!}/posts/#{id}/archive")
|
88
86
|
end
|
89
87
|
|
90
88
|
def unarchive_post(id)
|
91
|
-
|
89
|
+
request(method: :put, path: "/teams/#{team!}/posts/#{id}/unarchive")
|
92
90
|
end
|
93
91
|
|
94
92
|
def create_comment(params)
|
@@ -96,11 +94,11 @@ module DocBase
|
|
96
94
|
raise NotSetTeamError if post_id <= 0
|
97
95
|
|
98
96
|
comment_params = except(params, :post_id)
|
99
|
-
|
97
|
+
request(method: :post, path: "/teams/#{team!}/posts/#{post_id}/comments", params: params)
|
100
98
|
end
|
101
99
|
|
102
100
|
def delete_comment(id)
|
103
|
-
|
101
|
+
request(method: :delete, path: "/teams/#{team!}/comments/#{id}")
|
104
102
|
end
|
105
103
|
|
106
104
|
def upload(paths)
|
@@ -114,7 +112,11 @@ module DocBase
|
|
114
112
|
}
|
115
113
|
end
|
116
114
|
|
117
|
-
|
115
|
+
request(method: :post, path: "/teams/#{team!}/attachments", params: params)
|
116
|
+
end
|
117
|
+
|
118
|
+
def attachment(id)
|
119
|
+
request(method: :get, path: "/teams/#{team!}/attachments/#{id}", for_binary: true)
|
118
120
|
end
|
119
121
|
|
120
122
|
private
|
@@ -131,13 +133,37 @@ module DocBase
|
|
131
133
|
end
|
132
134
|
end
|
133
135
|
|
136
|
+
def connection_for_binary
|
137
|
+
@connection ||= Faraday.new({ url: @url, headers: headers }) do |faraday|
|
138
|
+
faraday.request :json
|
139
|
+
faraday.adapter Faraday.default_adapter
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
134
143
|
def headers
|
135
144
|
{
|
136
145
|
'Accept' => 'application/json',
|
137
146
|
'User-Agent' => USER_AGENT,
|
138
|
-
'X-DocBaseToken' =>
|
139
|
-
'X-Api-Version' => '
|
147
|
+
'X-DocBaseToken' => access_token,
|
148
|
+
'X-Api-Version' => '2',
|
140
149
|
}
|
141
150
|
end
|
151
|
+
|
152
|
+
def request(method:, path:, params: nil, for_binary: false)
|
153
|
+
response = for_binary ? connection_for_binary.send(method, path, params) : connection.send(method, path, params)
|
154
|
+
raise TooManyRequestError if retry_on_rate_limit_exceeded && response.status == 429
|
155
|
+
response
|
156
|
+
rescue TooManyRequestError
|
157
|
+
reset_time = response.headers['x-ratelimit-reset'].to_i
|
158
|
+
puts "DocBase API Rate limit exceeded: will retry at #{Time.at(reset_time).strftime("%Y/%m/%d %H:%M:%S")}."
|
159
|
+
wait_for(reset_time)
|
160
|
+
retry
|
161
|
+
end
|
162
|
+
|
163
|
+
def wait_for(reset_time)
|
164
|
+
wait_time = reset_time - Time.now.to_i
|
165
|
+
return if wait_time <= 0
|
166
|
+
sleep wait_time
|
167
|
+
end
|
142
168
|
end
|
143
169
|
end
|
data/lib/docbase/version.rb
CHANGED
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docbase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ttakuru88
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.15.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.15.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday_middleware
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.12.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.12.2
|
41
41
|
description: DocBase API Client, written in Ruby
|
@@ -79,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '0'
|
81
81
|
requirements: []
|
82
|
-
rubygems_version: 3.
|
82
|
+
rubygems_version: 3.1.4
|
83
83
|
signing_key:
|
84
84
|
specification_version: 4
|
85
85
|
summary: DocBase API Client, written in Ruby
|