boxr 1.22.0 → 1.23.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/.github/workflows/ruby-tests.yml +52 -0
- data/.gitignore +1 -0
- data/.rspec +0 -1
- data/.rubocop.yml +22 -0
- data/README.md +34 -5
- data/Rakefile +3 -4
- data/bin/boxr +5 -2
- data/boxr.gemspec +30 -25
- data/examples/enterprise_events.rb +15 -11
- data/examples/jwt_auth.rb +6 -5
- data/examples/metadata_search.rb +12 -11
- data/examples/oauth.rb +8 -11
- data/examples/remove_collaborators.rb +6 -5
- data/examples/use_events_to_send_sms.rb +35 -34
- data/examples/use_events_to_warn_about_sharing.rb +35 -31
- data/examples/user_events.rb +8 -7
- data/lib/boxr/auth.rb +41 -36
- data/lib/boxr/chunked_uploads.rb +56 -32
- data/lib/boxr/client.rb +117 -102
- data/lib/boxr/collaborations.rb +21 -14
- data/lib/boxr/collections.rb +5 -5
- data/lib/boxr/comments.rb +13 -13
- data/lib/boxr/errors.rb +25 -21
- data/lib/boxr/files.rb +87 -73
- data/lib/boxr/folders.rb +32 -29
- data/lib/boxr/groups.rb +22 -22
- data/lib/boxr/metadata.rb +23 -22
- data/lib/boxr/search.rb +34 -28
- data/lib/boxr/shared_items.rb +7 -5
- data/lib/boxr/tasks.rb +18 -18
- data/lib/boxr/users.rb +63 -38
- data/lib/boxr/version.rb +3 -1
- data/lib/boxr/watermarking.rb +10 -17
- data/lib/boxr/web_links.rb +14 -17
- data/lib/boxr/webhooks.rb +8 -7
- data/lib/boxr.rb +13 -11
- metadata +86 -28
data/lib/boxr/web_links.rb
CHANGED
@@ -1,33 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Boxr
|
2
4
|
class Client
|
3
|
-
|
4
5
|
def create_web_link(url, parent, name: nil, description: nil)
|
5
|
-
|
6
6
|
parent_id = ensure_id(parent)
|
7
7
|
web_link_url = verify_url(url)
|
8
|
-
uri =
|
8
|
+
uri = WEB_LINKS_URI.to_s
|
9
9
|
|
10
10
|
attributes = {}
|
11
11
|
attributes[:url] = web_link_url
|
12
|
-
attributes[:parent] = {:
|
12
|
+
attributes[:parent] = { id: parent_id }
|
13
13
|
attributes[:name] = name unless name.nil?
|
14
14
|
attributes[:description] = description unless description.nil?
|
15
15
|
|
16
|
-
created_link,
|
16
|
+
created_link, = post(uri, attributes)
|
17
17
|
created_link
|
18
18
|
end
|
19
19
|
|
20
20
|
def get_web_link(web_link)
|
21
|
-
|
22
21
|
web_link_id = ensure_id(web_link)
|
23
22
|
uri = "#{WEB_LINKS_URI}/#{web_link_id}"
|
24
23
|
|
25
|
-
web_link,
|
24
|
+
web_link, = get(uri)
|
26
25
|
web_link
|
27
26
|
end
|
28
27
|
|
29
28
|
def update_web_link(web_link, url: nil, parent: nil, name: nil, description: nil)
|
30
|
-
|
31
29
|
web_link_id = ensure_id(web_link)
|
32
30
|
parent_id = ensure_id(parent)
|
33
31
|
uri = "#{WEB_LINKS_URI}/#{web_link_id}"
|
@@ -36,18 +34,17 @@ module Boxr
|
|
36
34
|
attributes[:url] = url unless url.nil?
|
37
35
|
attributes[:name] = name unless name.nil?
|
38
36
|
attributes[:description] = description unless description.nil?
|
39
|
-
attributes[:parent] = {id: parent_id} unless parent_id.nil?
|
37
|
+
attributes[:parent] = { id: parent_id } unless parent_id.nil?
|
40
38
|
|
41
|
-
updated_web_link,
|
39
|
+
updated_web_link, = put(uri, attributes)
|
42
40
|
updated_web_link
|
43
41
|
end
|
44
42
|
|
45
43
|
def delete_web_link(web_link)
|
46
|
-
|
47
44
|
web_link_id = ensure_id(web_link)
|
48
45
|
uri = "#{WEB_LINKS_URI}/#{web_link_id}"
|
49
46
|
|
50
|
-
result,
|
47
|
+
result, = delete(uri)
|
51
48
|
result
|
52
49
|
end
|
53
50
|
|
@@ -56,15 +53,15 @@ module Boxr
|
|
56
53
|
uri = "#{WEB_LINKS_URI}/#{web_link_id}/trash"
|
57
54
|
query = build_fields_query(fields, WEB_LINK_FIELDS_QUERY)
|
58
55
|
|
59
|
-
web_link,
|
56
|
+
web_link, = get(uri, query: query)
|
60
57
|
web_link
|
61
58
|
end
|
62
|
-
alias
|
59
|
+
alias get_trashed_web_link trashed_web_link
|
63
60
|
|
64
61
|
def delete_trashed_web_link(web_link)
|
65
62
|
web_link_id = ensure_id(web_link)
|
66
63
|
uri = "#{WEB_LINKS_URI}/#{web_link_id}/trash"
|
67
|
-
result,
|
64
|
+
result, = delete(uri)
|
68
65
|
result
|
69
66
|
end
|
70
67
|
|
@@ -79,9 +76,9 @@ module Boxr
|
|
79
76
|
private
|
80
77
|
|
81
78
|
def verify_url(item)
|
82
|
-
return item if item.
|
79
|
+
return item if item.is_a?(String) && (item.include?('https://') || item.include?('http://'))
|
80
|
+
|
83
81
|
raise BoxrError.new(boxr_message: "Invalid url. Must include 'http://' or 'https://'")
|
84
82
|
end
|
85
|
-
|
86
83
|
end
|
87
84
|
end
|
data/lib/boxr/webhooks.rb
CHANGED
@@ -3,36 +3,37 @@
|
|
3
3
|
module Boxr
|
4
4
|
class Client
|
5
5
|
def create_webhook(target_id, target_type, triggers, address)
|
6
|
-
attributes = { target: { id: target_id, type: target_type }, triggers: triggers,
|
7
|
-
|
6
|
+
attributes = { target: { id: target_id, type: target_type }, triggers: triggers,
|
7
|
+
address: address }
|
8
|
+
new_webhook, = post(WEBHOOKS_URI, attributes)
|
8
9
|
new_webhook
|
9
10
|
end
|
10
11
|
|
11
12
|
def get_webhooks(marker: nil, limit: nil)
|
12
13
|
query_params = { marker: marker, limit: limit }.compact
|
13
|
-
webhooks,
|
14
|
+
webhooks, = get(WEBHOOKS_URI, query: query_params)
|
14
15
|
webhooks
|
15
16
|
end
|
16
17
|
|
17
18
|
def get_webhook(webhook)
|
18
19
|
webhook_id = ensure_id(webhook)
|
19
20
|
uri = "#{WEBHOOKS_URI}/#{webhook_id}"
|
20
|
-
webhook,
|
21
|
+
webhook, = get(uri)
|
21
22
|
webhook
|
22
23
|
end
|
23
24
|
|
24
25
|
def update_webhook(webhook, attributes = {})
|
25
26
|
webhook_id = ensure_id(webhook)
|
26
27
|
uri = "#{WEBHOOKS_URI}/#{webhook_id}"
|
27
|
-
updated_webhook,
|
28
|
+
updated_webhook, = put(uri, attributes)
|
28
29
|
updated_webhook
|
29
30
|
end
|
30
31
|
|
31
32
|
def delete_webhook(webhook)
|
32
33
|
webhook_id = ensure_id(webhook)
|
33
34
|
uri = "#{WEBHOOKS_URI}/#{webhook_id}"
|
34
|
-
result,
|
35
|
+
result, = delete(uri)
|
35
36
|
result
|
36
37
|
end
|
37
38
|
end
|
38
|
-
end
|
39
|
+
end
|
data/lib/boxr.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
require 'httpclient'
|
3
5
|
require 'hashie'
|
@@ -28,6 +30,7 @@ require 'boxr/webhooks'
|
|
28
30
|
require 'boxr/webhook_validator'
|
29
31
|
require 'boxr/zip_downloads'
|
30
32
|
|
33
|
+
# Simple wrapper around Array
|
31
34
|
class BoxrCollection < Array
|
32
35
|
def files
|
33
36
|
collection_for_type('file')
|
@@ -49,33 +52,32 @@ class BoxrCollection < Array
|
|
49
52
|
end
|
50
53
|
end
|
51
54
|
|
55
|
+
# Simple wrapper around Hashie::Mash
|
52
56
|
class BoxrMash < Hashie::Mash
|
53
|
-
|
54
|
-
self.disable_warnings
|
57
|
+
disable_warnings
|
55
58
|
|
56
59
|
def entries
|
57
|
-
self[
|
60
|
+
self['entries']
|
58
61
|
end
|
59
62
|
|
60
63
|
def size
|
61
|
-
self[
|
64
|
+
self['size']
|
62
65
|
end
|
63
66
|
end
|
64
67
|
|
65
68
|
module Boxr
|
66
|
-
#The root folder in Box is always identified by 0
|
67
|
-
ROOT = 0
|
69
|
+
ROOT = 0 # The root folder in Box is always identified by 0
|
68
70
|
|
69
|
-
#HTTPClient is high-performance, thread-safe, and supports persistent HTTPS connections
|
70
|
-
#http://bibwild.wordpress.com/2012/04/30/ruby-http-performance-shootout-redux/
|
71
|
+
# HTTPClient is high-performance, thread-safe, and supports persistent HTTPS connections
|
72
|
+
# http://bibwild.wordpress.com/2012/04/30/ruby-http-performance-shootout-redux/
|
71
73
|
BOX_CLIENT = HTTPClient.new
|
72
74
|
BOX_CLIENT.cookie_manager = nil
|
73
|
-
BOX_CLIENT.send_timeout = 3600 #one hour; needed for lengthy uploads
|
75
|
+
BOX_CLIENT.send_timeout = 3600 # one hour; needed for lengthy uploads
|
74
76
|
BOX_CLIENT.agent_name = "Boxr/#{Boxr::VERSION}"
|
75
77
|
BOX_CLIENT.transparent_gzip_decompression = true
|
76
|
-
#BOX_CLIENT.ssl_config.add_trust_ca("/Users/cburnette/code/ssh-keys/dev_root_ca.pem")
|
78
|
+
# BOX_CLIENT.ssl_config.add_trust_ca("/Users/cburnette/code/ssh-keys/dev_root_ca.pem")
|
77
79
|
|
78
|
-
def self.turn_on_debugging(device=
|
80
|
+
def self.turn_on_debugging(device = $stdout)
|
79
81
|
BOX_CLIENT.debug_dev = device
|
80
82
|
BOX_CLIENT.transparent_gzip_decompression = false
|
81
83
|
nil
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boxr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Burnette
|
@@ -9,22 +9,64 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2025-09-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: awesome_print
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.8'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.8'
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: bundler
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '2.4'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '2.4'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: dotenv
|
16
44
|
requirement: !ruby/object:Gem::Requirement
|
17
45
|
requirements:
|
18
46
|
- - "~>"
|
19
47
|
- !ruby/object:Gem::Version
|
20
|
-
version: '2.
|
48
|
+
version: '2.8'
|
21
49
|
type: :development
|
22
50
|
prerelease: false
|
23
51
|
version_requirements: !ruby/object:Gem::Requirement
|
24
52
|
requirements:
|
25
53
|
- - "~>"
|
26
54
|
- !ruby/object:Gem::Version
|
27
|
-
version: '2.
|
55
|
+
version: '2.8'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: parallel
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.0'
|
28
70
|
- !ruby/object:Gem::Dependency
|
29
71
|
name: rake
|
30
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,100 +87,114 @@ dependencies:
|
|
45
87
|
requirements:
|
46
88
|
- - "~>"
|
47
89
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
90
|
+
version: 3.13.1
|
49
91
|
type: :development
|
50
92
|
prerelease: false
|
51
93
|
version_requirements: !ruby/object:Gem::Requirement
|
52
94
|
requirements:
|
53
95
|
- - "~>"
|
54
96
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
97
|
+
version: 3.13.1
|
56
98
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
99
|
+
name: rubocop
|
58
100
|
requirement: !ruby/object:Gem::Requirement
|
59
101
|
requirements:
|
60
102
|
- - "~>"
|
61
103
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0
|
104
|
+
version: '1.0'
|
63
105
|
type: :development
|
64
106
|
prerelease: false
|
65
107
|
version_requirements: !ruby/object:Gem::Requirement
|
66
108
|
requirements:
|
67
109
|
- - "~>"
|
68
110
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0
|
111
|
+
version: '1.0'
|
70
112
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
113
|
+
name: rubocop-rake
|
72
114
|
requirement: !ruby/object:Gem::Requirement
|
73
115
|
requirements:
|
74
116
|
- - "~>"
|
75
117
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
118
|
+
version: 0.7.1
|
77
119
|
type: :development
|
78
120
|
prerelease: false
|
79
121
|
version_requirements: !ruby/object:Gem::Requirement
|
80
122
|
requirements:
|
81
123
|
- - "~>"
|
82
124
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
125
|
+
version: 0.7.1
|
84
126
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
127
|
+
name: rubocop-rspec
|
86
128
|
requirement: !ruby/object:Gem::Requirement
|
87
129
|
requirements:
|
88
130
|
- - "~>"
|
89
131
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
132
|
+
version: 3.7.0
|
91
133
|
type: :development
|
92
134
|
prerelease: false
|
93
135
|
version_requirements: !ruby/object:Gem::Requirement
|
94
136
|
requirements:
|
95
137
|
- - "~>"
|
96
138
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
139
|
+
version: 3.7.0
|
98
140
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
141
|
+
name: rubyzip
|
100
142
|
requirement: !ruby/object:Gem::Requirement
|
101
143
|
requirements:
|
102
144
|
- - "~>"
|
103
145
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
146
|
+
version: '2.3'
|
105
147
|
type: :development
|
106
148
|
prerelease: false
|
107
149
|
version_requirements: !ruby/object:Gem::Requirement
|
108
150
|
requirements:
|
109
151
|
- - "~>"
|
110
152
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
153
|
+
version: '2.3'
|
112
154
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
155
|
+
name: simplecov
|
114
156
|
requirement: !ruby/object:Gem::Requirement
|
115
157
|
requirements:
|
116
158
|
- - "~>"
|
117
159
|
- !ruby/object:Gem::Version
|
118
|
-
version: '
|
160
|
+
version: '0.22'
|
119
161
|
type: :development
|
120
162
|
prerelease: false
|
121
163
|
version_requirements: !ruby/object:Gem::Requirement
|
122
164
|
requirements:
|
123
165
|
- - "~>"
|
124
166
|
- !ruby/object:Gem::Version
|
125
|
-
version: '
|
167
|
+
version: '0.22'
|
126
168
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
169
|
+
name: sin_lru_redux
|
128
170
|
requirement: !ruby/object:Gem::Requirement
|
129
171
|
requirements:
|
130
172
|
- - "~>"
|
131
173
|
- !ruby/object:Gem::Version
|
132
|
-
version: '2.
|
174
|
+
version: '2.5'
|
133
175
|
type: :development
|
134
176
|
prerelease: false
|
135
177
|
version_requirements: !ruby/object:Gem::Requirement
|
136
178
|
requirements:
|
137
179
|
- - "~>"
|
138
180
|
- !ruby/object:Gem::Version
|
139
|
-
version: '2.
|
181
|
+
version: '2.5'
|
140
182
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
183
|
+
name: webmock
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '3.19'
|
189
|
+
type: :development
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - "~>"
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '3.19'
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: addressable
|
142
198
|
requirement: !ruby/object:Gem::Requirement
|
143
199
|
requirements:
|
144
200
|
- - "~>"
|
@@ -172,7 +228,7 @@ dependencies:
|
|
172
228
|
- !ruby/object:Gem::Version
|
173
229
|
version: '6'
|
174
230
|
- !ruby/object:Gem::Dependency
|
175
|
-
name:
|
231
|
+
name: httpclient
|
176
232
|
requirement: !ruby/object:Gem::Requirement
|
177
233
|
requirements:
|
178
234
|
- - "~>"
|
@@ -217,8 +273,10 @@ files:
|
|
217
273
|
- ".env.example"
|
218
274
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
219
275
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
276
|
+
- ".github/workflows/ruby-tests.yml"
|
220
277
|
- ".gitignore"
|
221
278
|
- ".rspec"
|
279
|
+
- ".rubocop.yml"
|
222
280
|
- Gemfile
|
223
281
|
- LICENSE.txt
|
224
282
|
- README.md
|
@@ -268,14 +326,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
268
326
|
requirements:
|
269
327
|
- - ">="
|
270
328
|
- !ruby/object:Gem::Version
|
271
|
-
version: '2.
|
329
|
+
version: '2.7'
|
272
330
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
273
331
|
requirements:
|
274
332
|
- - ">="
|
275
333
|
- !ruby/object:Gem::Version
|
276
334
|
version: '0'
|
277
335
|
requirements: []
|
278
|
-
rubygems_version: 3.
|
336
|
+
rubygems_version: 3.1.6
|
279
337
|
signing_key:
|
280
338
|
specification_version: 4
|
281
339
|
summary: A Ruby client library for the Box V2 Content API.
|