boxr 0.19.0 → 0.20.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/README.md +10 -0
- data/bin/boxr +9 -0
- data/examples/enterprise_events.rb +3 -3
- data/examples/use_events_to_send_sms.rb +1 -1
- data/examples/use_events_to_warn_about_sharing.rb +1 -1
- data/lib/boxr.rb +1 -0
- data/lib/boxr/collaborations.rb +0 -1
- data/lib/boxr/files.rb +19 -1
- data/lib/boxr/users.rb +30 -0
- data/lib/boxr/version.rb +1 -1
- data/spec/boxr_spec.rb +34 -5
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0379d9a2e8adda91ee993826569aad62126edc32
|
4
|
+
data.tar.gz: 293610fefe3d43d506fe1b0f1b724792ef77e2e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5756edcdb7821e4b2bad784e55d6359c1652a35e441eb6143be5bfb990800baeaeb88e7c8beba416ff3cb995e9ae7933504b0f5113d2526ad87c871bd92a8b42
|
7
|
+
data.tar.gz: 04d9a0b727ffd182e9e69be9995a9e53f81129369c05a611752ab646d3bcd33c2cc21ed153f844ce6c5614bfc23f6ae49d1db2adaed42b0561cd850dff03670e
|
data/README.md
CHANGED
@@ -158,6 +158,10 @@ alias :file :file_from_id
|
|
158
158
|
|
159
159
|
update_file(file, name: nil, description: nil, parent: nil, shared_link: nil, tags: nil, if_match: nil)
|
160
160
|
|
161
|
+
lock_file(file, expires_at: nil, is_download_prevented: false, if_match: nil)
|
162
|
+
|
163
|
+
unlock_file(file, if_match: nil)
|
164
|
+
|
161
165
|
move_file(file, new_parent, name: nil, if_match: nil)
|
162
166
|
|
163
167
|
download_file(file, version: nil, follow_redirect: true)
|
@@ -261,6 +265,12 @@ update_user(user, notify: nil, enterprise: true, name: nil, role: nil, language:
|
|
261
265
|
can_see_managed_users: nil, status: nil, timezone: nil, is_exempt_from_device_limits: nil,
|
262
266
|
is_exempt_from_login_verification: nil, is_exempt_from_reset_required: nil, is_external_collab_restricted: nil)
|
263
267
|
|
268
|
+
email_aliases_for_user(user)
|
269
|
+
|
270
|
+
add_email_alias_for_user(user, email)
|
271
|
+
|
272
|
+
remove_email_alias_for_user(user, email_alias)
|
273
|
+
|
264
274
|
delete_user(user, notify: nil, force: nil)
|
265
275
|
```
|
266
276
|
#### [Groups](https://developers.box.com/docs/#groups)
|
data/bin/boxr
ADDED
@@ -4,7 +4,7 @@ require 'awesome_print'
|
|
4
4
|
|
5
5
|
client = Boxr::Client.new(ENV['BOX_DEVELOPER_TOKEN'])
|
6
6
|
|
7
|
-
now = Time.now
|
7
|
+
now = Time.now.utc
|
8
8
|
start_date = now - (60*60*24) #one day ago
|
9
9
|
|
10
10
|
puts "fetching historic enterprise events..."
|
@@ -16,8 +16,8 @@ ap output
|
|
16
16
|
|
17
17
|
#now that we have the latest stream position let's start monitoring in real-time
|
18
18
|
puts "listening for new enterprise events..."
|
19
|
-
client.enterprise_events_stream(result.next_stream_position) do |result|
|
20
|
-
result.events.each{|e|
|
19
|
+
client.enterprise_events_stream(result.next_stream_position, refresh_period: 5) do |result|
|
20
|
+
result.events.each{|e| ap e}
|
21
21
|
output={count: result.events.count, next_stream_position: result.next_stream_position}
|
22
22
|
ap output
|
23
23
|
puts "waiting..."
|
@@ -33,7 +33,7 @@ end
|
|
33
33
|
|
34
34
|
#need to look back in time to make sure we get a valid stream position;
|
35
35
|
#normally your app will be persisting the last known stream position and you wouldn't have to look this up
|
36
|
-
now = Time.now
|
36
|
+
now = Time.now.utc
|
37
37
|
start_date = now - (60*60*24) #one day ago
|
38
38
|
result = @box_client.enterprise_events(created_after: start_date, created_before: now)
|
39
39
|
|
@@ -56,7 +56,7 @@ end
|
|
56
56
|
|
57
57
|
#need to look back in time to make sure we get a valid stream position;
|
58
58
|
#normally your app will be persisting the last known stream position and you wouldn't have to look this up
|
59
|
-
now = Time.now
|
59
|
+
now = Time.now.utc
|
60
60
|
start_date = now - (60*60*24) #one day ago
|
61
61
|
result = @box_client.enterprise_events(created_after: start_date, created_before: now)
|
62
62
|
|
data/lib/boxr.rb
CHANGED
@@ -43,6 +43,7 @@ module Boxr
|
|
43
43
|
#HTTPClient is high-performance, thread-safe, and supports persistent HTTPS connections
|
44
44
|
#http://bibwild.wordpress.com/2012/04/30/ruby-http-performance-shootout-redux/
|
45
45
|
BOX_CLIENT = HTTPClient.new
|
46
|
+
BOX_CLIENT.cookie_manager = nil
|
46
47
|
BOX_CLIENT.send_timeout = 3600 #one hour; needed for lengthy uploads
|
47
48
|
BOX_CLIENT.agent_name = "Boxr/#{Boxr::VERSION}"
|
48
49
|
BOX_CLIENT.transparent_gzip_decompression = true
|
data/lib/boxr/collaborations.rb
CHANGED
@@ -10,7 +10,6 @@ module Boxr
|
|
10
10
|
collaborations['entries']
|
11
11
|
end
|
12
12
|
|
13
|
-
#make sure 'role' value is a string as Box has role values with spaces and dashes; e.g. 'previewer uploader'
|
14
13
|
def add_collaboration(folder, accessible_by, role, fields: [], notify: nil)
|
15
14
|
folder_id = ensure_id(folder)
|
16
15
|
query = build_fields_query(fields, COLLABORATION_FIELDS_QUERY)
|
data/lib/boxr/files.rb
CHANGED
@@ -26,7 +26,7 @@ module Boxr
|
|
26
26
|
end
|
27
27
|
alias :file :file_from_id
|
28
28
|
|
29
|
-
def update_file(file, name: nil, description: nil, parent: nil, shared_link: nil, tags: nil, if_match: nil)
|
29
|
+
def update_file(file, name: nil, description: nil, parent: nil, shared_link: nil, tags: nil, lock: nil, if_match: nil)
|
30
30
|
file_id = ensure_id(file)
|
31
31
|
parent_id = ensure_id(parent)
|
32
32
|
uri = "#{FILES_URI}/#{file_id}"
|
@@ -37,6 +37,24 @@ module Boxr
|
|
37
37
|
attributes[:parent] = {id: parent_id} unless parent_id.nil?
|
38
38
|
attributes[:shared_link] = shared_link unless shared_link.nil?
|
39
39
|
attributes[:tags] = tags unless tags.nil?
|
40
|
+
attributes[:lock] = lock unless lock.nil?
|
41
|
+
|
42
|
+
updated_file, response = put(uri, attributes, if_match: if_match)
|
43
|
+
updated_file
|
44
|
+
end
|
45
|
+
|
46
|
+
def lock_file(file, expires_at: nil, is_download_prevented: false, if_match: nil)
|
47
|
+
lock = {type: "lock"}
|
48
|
+
lock[:expires_at] = expires_at.to_datetime.rfc3339 unless expires_at.nil?
|
49
|
+
lock[:is_download_prevented] = is_download_prevented unless is_download_prevented.nil?
|
50
|
+
|
51
|
+
update_file(file, lock: lock, if_match: if_match)
|
52
|
+
end
|
53
|
+
|
54
|
+
def unlock_file(file, if_match: nil)
|
55
|
+
file_id = ensure_id(file)
|
56
|
+
uri = "#{FILES_URI}/#{file_id}"
|
57
|
+
attributes = {lock: nil}
|
40
58
|
|
41
59
|
updated_file, response = put(uri, attributes, if_match: if_match)
|
42
60
|
updated_file
|
data/lib/boxr/users.rb
CHANGED
@@ -4,6 +4,7 @@ module Boxr
|
|
4
4
|
def current_user(fields: [])
|
5
5
|
uri = "#{USERS_URI}/me"
|
6
6
|
query = build_fields_query(fields, USER_FIELDS_QUERY)
|
7
|
+
|
7
8
|
user, response = get(uri, query: query)
|
8
9
|
user
|
9
10
|
end
|
@@ -13,6 +14,7 @@ module Boxr
|
|
13
14
|
user_id = ensure_id(user_id)
|
14
15
|
uri = "#{USERS_URI}/#{user_id}"
|
15
16
|
query = build_fields_query(fields, USER_FIELDS_QUERY)
|
17
|
+
|
16
18
|
user, response = get(uri, query: query)
|
17
19
|
user
|
18
20
|
end
|
@@ -28,6 +30,7 @@ module Boxr
|
|
28
30
|
else
|
29
31
|
query[:offset] = offset
|
30
32
|
query[:limit] = limit
|
33
|
+
|
31
34
|
users, response = get(uri, query: query)
|
32
35
|
users['entries']
|
33
36
|
end
|
@@ -97,9 +100,36 @@ module Boxr
|
|
97
100
|
query = {}
|
98
101
|
query[:notify] = notify unless notify.nil?
|
99
102
|
query[:force] = force unless force.nil?
|
103
|
+
|
100
104
|
result, response = delete(uri, query: query)
|
101
105
|
result
|
102
106
|
end
|
103
107
|
|
108
|
+
def email_aliases_for_user(user)
|
109
|
+
user_id = ensure_id(user)
|
110
|
+
uri = "#{USERS_URI}/#{user_id}/email_aliases"
|
111
|
+
|
112
|
+
aliases, response = get(uri)
|
113
|
+
aliases['entries']
|
114
|
+
end
|
115
|
+
|
116
|
+
def add_email_alias_for_user(user, email)
|
117
|
+
user_id = ensure_id(user)
|
118
|
+
uri = "#{USERS_URI}/#{user_id}/email_aliases"
|
119
|
+
attributes = {email: email}
|
120
|
+
|
121
|
+
updated_user, response = post(uri, attributes)
|
122
|
+
updated_user
|
123
|
+
end
|
124
|
+
|
125
|
+
def remove_email_alias_for_user(user, email_alias)
|
126
|
+
user_id = ensure_id(user)
|
127
|
+
email_alias_id = ensure_id(email_alias)
|
128
|
+
uri = "#{USERS_URI}/#{user_id}/email_aliases/#{email_alias_id}"
|
129
|
+
|
130
|
+
result, response = delete(uri)
|
131
|
+
result
|
132
|
+
end
|
133
|
+
|
104
134
|
end
|
105
135
|
end
|
data/lib/boxr/version.rb
CHANGED
data/spec/boxr_spec.rb
CHANGED
@@ -46,9 +46,9 @@ describe Boxr::Client do
|
|
46
46
|
@test_folder = new_folder
|
47
47
|
|
48
48
|
all_users = BOX_CLIENT.all_users
|
49
|
-
|
50
|
-
|
51
|
-
BOX_CLIENT.delete_user(
|
49
|
+
test_users = all_users.select{|u| u.name == TEST_USER_NAME}
|
50
|
+
test_users.each do |u|
|
51
|
+
BOX_CLIENT.delete_user(u, force: true)
|
52
52
|
end
|
53
53
|
sleep BOX_SERVER_SLEEP
|
54
54
|
test_user = BOX_CLIENT.create_user(TEST_USER_LOGIN, TEST_USER_NAME)
|
@@ -148,8 +148,24 @@ describe Boxr::Client do
|
|
148
148
|
|
149
149
|
puts "update file"
|
150
150
|
new_description = 'this file is used to test Boxr'
|
151
|
-
|
151
|
+
tags = ['tag one','tag two']
|
152
|
+
updated_file_info = BOX_CLIENT.update_file(test_file, description: new_description, tags: tags)
|
152
153
|
expect(updated_file_info.description).to eq(new_description)
|
154
|
+
tag_file_info = BOX_CLIENT.file(updated_file_info, fields: [:tags])
|
155
|
+
expect(tag_file_info.tags.length).to eq(2)
|
156
|
+
|
157
|
+
puts "lock file"
|
158
|
+
expires_at_utc = Time.now.utc + (60*60*24) #one day from now
|
159
|
+
locked_file = BOX_CLIENT.lock_file(test_file, expires_at: expires_at_utc, is_download_prevented: true)
|
160
|
+
locked_file = BOX_CLIENT.file(locked_file, fields: [:lock])
|
161
|
+
expect(locked_file.lock.type).to eq('lock')
|
162
|
+
expect(locked_file.lock.expires_at).to_not be_nil
|
163
|
+
expect(locked_file.lock.is_download_prevented).to eq(true)
|
164
|
+
|
165
|
+
puts "unlock file"
|
166
|
+
unlocked_file = BOX_CLIENT.unlock_file(locked_file)
|
167
|
+
unlocked_file = BOX_CLIENT.file(unlocked_file, fields: [:lock])
|
168
|
+
expect(unlocked_file.lock).to be_nil
|
153
169
|
|
154
170
|
puts "download file"
|
155
171
|
file = BOX_CLIENT.download_file(test_file)
|
@@ -236,12 +252,25 @@ describe Boxr::Client do
|
|
236
252
|
test_user = all_users.find{|u| u.id == @test_user.id}
|
237
253
|
expect(test_user).to_not be_nil
|
238
254
|
|
255
|
+
#create user is tested in the before method
|
256
|
+
|
239
257
|
puts "update user"
|
240
258
|
new_name = "Chuck Nevitt"
|
241
259
|
user = BOX_CLIENT.update_user(@test_user, name: new_name)
|
242
260
|
expect(user.name).to eq(new_name)
|
243
261
|
|
244
|
-
|
262
|
+
puts "add email alias for user"
|
263
|
+
email_alias = "test-boxr-user-alias@boxntest.com" #{('a'..'z').to_a.shuffle[0,10].join}.com"
|
264
|
+
new_alias = BOX_CLIENT.add_email_alias_for_user(@test_user, email_alias)
|
265
|
+
expect(new_alias.type).to eq('email_alias')
|
266
|
+
|
267
|
+
puts "get email aliases for user"
|
268
|
+
email_aliases = BOX_CLIENT.email_aliases_for_user(@test_user)
|
269
|
+
expect(email_aliases.first.id).to eq(new_alias.id)
|
270
|
+
|
271
|
+
puts "remove email alias for user"
|
272
|
+
result = BOX_CLIENT.remove_email_alias_for_user(@test_user, new_alias.id)
|
273
|
+
expect(result).to eq({})
|
245
274
|
|
246
275
|
puts "delete user"
|
247
276
|
result = BOX_CLIENT.delete_user(@test_user, force: true)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boxr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Burnette
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -167,7 +167,8 @@ dependencies:
|
|
167
167
|
description: ''
|
168
168
|
email:
|
169
169
|
- chadburnette@me.com
|
170
|
-
executables:
|
170
|
+
executables:
|
171
|
+
- boxr
|
171
172
|
extensions: []
|
172
173
|
extra_rdoc_files: []
|
173
174
|
files:
|
@@ -177,6 +178,7 @@ files:
|
|
177
178
|
- LICENSE.txt
|
178
179
|
- README.md
|
179
180
|
- Rakefile
|
181
|
+
- bin/boxr
|
180
182
|
- boxr.gemspec
|
181
183
|
- examples/enterprise_events.rb
|
182
184
|
- examples/oauth.rb
|