docbase 2.1.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/CHANGELOG.md +4 -0
- data/README.md +10 -0
- data/lib/docbase/client.rb +39 -20
- data/lib/docbase/version.rb +1 -1
- metadata +3 -3
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/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -26,6 +26,16 @@ 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
|
+
|
29
39
|
### users
|
30
40
|
|
31
41
|
```ruby
|
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!
|
@@ -20,23 +22,23 @@ module DocBase
|
|
20
22
|
end
|
21
23
|
|
22
24
|
def users(q: nil, page: 1, per_page: 100, include_user_groups: false)
|
23
|
-
|
25
|
+
request(method: :get, path: "/teams/#{team!}/users", params: { q: q, page: page, per_page: per_page, include_user_groups: include_user_groups })
|
24
26
|
end
|
25
27
|
|
26
28
|
def tags
|
27
|
-
|
29
|
+
request(method: :get, path: "/teams/#{team!}/tags")
|
28
30
|
end
|
29
31
|
|
30
32
|
def groups(name: nil, page: 1, per_page: 100)
|
31
|
-
|
33
|
+
request(method: :get, path: "/teams/#{team!}/groups", params: { name: name, page: page, per_page: per_page })
|
32
34
|
end
|
33
35
|
|
34
36
|
def group(id)
|
35
|
-
|
37
|
+
request(method: :get, path: "/teams/#{team!}/groups/#{id}")
|
36
38
|
end
|
37
39
|
|
38
40
|
def create_group(params)
|
39
|
-
|
41
|
+
request(method: :post, path: "/teams/#{team!}/groups", params: params)
|
40
42
|
end
|
41
43
|
|
42
44
|
def add_users_to_group(params)
|
@@ -44,7 +46,7 @@ module DocBase
|
|
44
46
|
raise NotSetTeamError if group_id <= 0
|
45
47
|
|
46
48
|
users_params = except(params, :group_id)
|
47
|
-
|
49
|
+
request(method: :post, path: "/teams/#{team!}/groups/#{group_id}/users", params: users_params)
|
48
50
|
end
|
49
51
|
|
50
52
|
def remove_users_from_group(params)
|
@@ -52,19 +54,19 @@ module DocBase
|
|
52
54
|
raise NotSetTeamError if group_id <= 0
|
53
55
|
|
54
56
|
users_params = except(params, :group_id)
|
55
|
-
|
57
|
+
request(method: :delete, path: "/teams/#{team!}/groups/#{group_id}/users", params: users_params)
|
56
58
|
end
|
57
59
|
|
58
60
|
def post(id)
|
59
|
-
|
61
|
+
request(method: :get, path: "/teams/#{team!}/posts/#{id}")
|
60
62
|
end
|
61
63
|
|
62
64
|
def posts(q: '*', page: 1, per_page: 20)
|
63
|
-
|
65
|
+
request(method: :get, path: "/teams/#{team!}/posts", params: { q: q, page: page, per_page: per_page })
|
64
66
|
end
|
65
67
|
|
66
68
|
def create_post(params)
|
67
|
-
|
69
|
+
request(method: :post, path: "/teams/#{team!}/posts", params: params)
|
68
70
|
end
|
69
71
|
|
70
72
|
def update_post(params)
|
@@ -72,19 +74,19 @@ module DocBase
|
|
72
74
|
raise NotSetTeamError if post_id <= 0
|
73
75
|
|
74
76
|
post_params = except(params, :id)
|
75
|
-
|
77
|
+
request(method: :patch, path: "/teams/#{team!}/posts/#{post_id}", params: post_params)
|
76
78
|
end
|
77
79
|
|
78
80
|
def delete_post(id)
|
79
|
-
|
81
|
+
request(method: :delete, path: "/teams/#{team!}/posts/#{id}")
|
80
82
|
end
|
81
83
|
|
82
84
|
def archive_post(id)
|
83
|
-
|
85
|
+
request(method: :put, path: "/teams/#{team!}/posts/#{id}/archive")
|
84
86
|
end
|
85
87
|
|
86
88
|
def unarchive_post(id)
|
87
|
-
|
89
|
+
request(method: :put, path: "/teams/#{team!}/posts/#{id}/unarchive")
|
88
90
|
end
|
89
91
|
|
90
92
|
def create_comment(params)
|
@@ -92,11 +94,11 @@ module DocBase
|
|
92
94
|
raise NotSetTeamError if post_id <= 0
|
93
95
|
|
94
96
|
comment_params = except(params, :post_id)
|
95
|
-
|
97
|
+
request(method: :post, path: "/teams/#{team!}/posts/#{post_id}/comments", params: params)
|
96
98
|
end
|
97
99
|
|
98
100
|
def delete_comment(id)
|
99
|
-
|
101
|
+
request(method: :delete, path: "/teams/#{team!}/comments/#{id}")
|
100
102
|
end
|
101
103
|
|
102
104
|
def upload(paths)
|
@@ -110,11 +112,11 @@ module DocBase
|
|
110
112
|
}
|
111
113
|
end
|
112
114
|
|
113
|
-
|
115
|
+
request(method: :post, path: "/teams/#{team!}/attachments", params: params)
|
114
116
|
end
|
115
117
|
|
116
118
|
def attachment(id)
|
117
|
-
|
119
|
+
request(method: :get, path: "/teams/#{team!}/attachments/#{id}", for_binary: true)
|
118
120
|
end
|
119
121
|
|
120
122
|
private
|
@@ -146,5 +148,22 @@ module DocBase
|
|
146
148
|
'X-Api-Version' => '2',
|
147
149
|
}
|
148
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
|
149
168
|
end
|
150
169
|
end
|
data/lib/docbase/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docbase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.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: 2021-
|
11
|
+
date: 2021-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -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
|