dropbox_api 0.1.1 → 0.1.3

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/CHANGES.md +7 -0
  4. data/README.md +37 -12
  5. data/TODO.md +33 -3
  6. data/api_coverage.md +8 -6
  7. data/api_reference.md +25 -0
  8. data/lib/dropbox_api.rb +25 -1
  9. data/lib/dropbox_api/authenticator.rb +5 -9
  10. data/lib/dropbox_api/endpoints/base.rb +11 -0
  11. data/lib/dropbox_api/endpoints/files/get_thumbnail.rb +30 -6
  12. data/lib/dropbox_api/endpoints/files/upload.rb +18 -6
  13. data/lib/dropbox_api/endpoints/sharing/add_file_member.rb +60 -0
  14. data/lib/dropbox_api/endpoints/sharing/add_folder_member.rb +11 -8
  15. data/lib/dropbox_api/endpoints/sharing/list_folder_members.rb +16 -6
  16. data/lib/dropbox_api/endpoints/users/get_account_batch.rb +19 -0
  17. data/lib/dropbox_api/endpoints/users/get_current_account.rb +16 -0
  18. data/lib/dropbox_api/endpoints/users/get_space_usage.rb +16 -0
  19. data/lib/dropbox_api/errors/add_file_member_error.rb +6 -0
  20. data/lib/dropbox_api/errors/basic_error.rb +3 -0
  21. data/lib/dropbox_api/errors/file_member_action_error.rb +10 -0
  22. data/lib/dropbox_api/errors/sharing_file_access_error.rb +11 -0
  23. data/lib/dropbox_api/errors/too_many_requests_error.rb +19 -0
  24. data/lib/dropbox_api/metadata/access_level.rb +18 -0
  25. data/lib/dropbox_api/metadata/add_file_member_result.rb +19 -0
  26. data/lib/dropbox_api/metadata/add_member.rb +26 -54
  27. data/lib/dropbox_api/metadata/base.rb +53 -10
  28. data/lib/dropbox_api/metadata/basic_account.rb +19 -20
  29. data/lib/dropbox_api/metadata/deleted.rb +7 -8
  30. data/lib/dropbox_api/metadata/field.rb +3 -2
  31. data/lib/dropbox_api/metadata/file.rb +20 -17
  32. data/lib/dropbox_api/metadata/file_link.rb +26 -27
  33. data/lib/dropbox_api/metadata/file_member_action.rb +30 -0
  34. data/lib/dropbox_api/metadata/folder.rb +11 -8
  35. data/lib/dropbox_api/metadata/folder_sharing_info.rb +5 -6
  36. data/lib/dropbox_api/metadata/link_permissions.rb +9 -10
  37. data/lib/dropbox_api/metadata/member.rb +47 -0
  38. data/lib/dropbox_api/metadata/member_action_collection.rb +44 -0
  39. data/lib/dropbox_api/metadata/member_permission.rb +7 -0
  40. data/lib/dropbox_api/metadata/member_permission_list.rb +7 -0
  41. data/lib/dropbox_api/metadata/name.rb +7 -8
  42. data/lib/dropbox_api/metadata/parent_folder_access_info.rb +7 -0
  43. data/lib/dropbox_api/metadata/shared_folder.rb +14 -15
  44. data/lib/dropbox_api/metadata/shared_folder_policy.rb +5 -6
  45. data/lib/dropbox_api/metadata/space_allocation.rb +10 -0
  46. data/lib/dropbox_api/metadata/space_usage.rb +14 -0
  47. data/lib/dropbox_api/metadata/team_member_info.rb +9 -10
  48. data/lib/dropbox_api/result_builder.rb +1 -1
  49. data/lib/dropbox_api/results/add_file_member_result_list.rb +20 -0
  50. data/lib/dropbox_api/results/basic_account_batch.rb +7 -0
  51. data/lib/dropbox_api/version.rb +1 -1
  52. data/rails_setup.md +84 -0
  53. metadata +26 -2
@@ -0,0 +1,10 @@
1
+ module DropboxApi::Metadata
2
+ # Example of a serialized {SpaceAllocation} object:
3
+ # {
4
+ # ".tag": "individual",
5
+ # "allocated": 2147483648
6
+ # }
7
+ class SpaceAllocation < Base
8
+ field :allocated, Integer
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ module DropboxApi::Metadata
2
+ # Example of a serialized {SpaceUsage} object:
3
+ # {
4
+ # "used": 167685342,
5
+ # "allocation": {
6
+ # ".tag": "individual",
7
+ # "allocated": 2147483648
8
+ # }
9
+ # }
10
+ class SpaceUsage < Base
11
+ field :used, String
12
+ field :allocation, DropboxApi::Metadata::SpaceAllocation
13
+ end
14
+ end
@@ -1,14 +1,13 @@
1
1
  module DropboxApi::Metadata
2
- # NOTE: We should have a test to cover the initialization of this object.
3
- # Sample:
4
- # {
5
- # "team_info": {
6
- # "id": "dbtid:AAFdgehTzw7WlXhZJsbGCLePe8RvQGYDr-I",
7
- # "name": "Acme, Inc."
8
- # },
9
- # "display_name": "Roger Rabbit",
10
- # "member_id": "dbmid:abcd1234"
11
- # }
2
+ # Example of a serialized {TeamMemberInfo} object:
3
+ # {
4
+ # "team_info": {
5
+ # "id": "dbtid:AAFdgehTzw7WlXhZJsbGCLePe8RvQGYDr-I",
6
+ # "name": "Acme, Inc."
7
+ # },
8
+ # "display_name": "Roger Rabbit",
9
+ # "member_id": "dbmid:abcd1234"
10
+ # }
12
11
  class TeamMemberInfo < Base
13
12
  field :team_info, DropboxApi::Metadata::Team
14
13
  field :display_name, String
@@ -5,7 +5,7 @@ module DropboxApi
5
5
  end
6
6
 
7
7
  def error_summary
8
- @response_data["error_summary"]
8
+ @response_data["error_summary"] if @response_data.is_a? Hash
9
9
  end
10
10
 
11
11
  def error
@@ -0,0 +1,20 @@
1
+ module DropboxApi::Results
2
+ # Example of a result of the +add_file_member+ endpoint:
3
+ # [{
4
+ # "member":{
5
+ # ".tag": "email",
6
+ # "email": "somebody@test.com"
7
+ # },
8
+ # "result": {
9
+ # ".tag": "success",
10
+ # "success": {
11
+ # ".tag": "viewer"
12
+ # }
13
+ # }
14
+ # }]
15
+ class AddFileMemberResultList < Array
16
+ def initialize(members)
17
+ super(members.map { |m| DropboxApi::Metadata::AddFileMemberResult.new m })
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ module DropboxApi::Results
2
+ class BasicAccountBatch < Array
3
+ def initialize(accounts)
4
+ super(accounts.map { |a| DropboxApi::Metadata::BasicAccount.new a })
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module DropboxApi
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.3'.freeze
3
3
  end
data/rails_setup.md ADDED
@@ -0,0 +1,84 @@
1
+ # @title Rails setup
2
+
3
+ # Standard OAuth 2 flow set up
4
+
5
+ This document describes how to implement the OAuth2 flow in a Rails
6
+ application, the process is represented in the following diagram:
7
+
8
+ ![Oauth 2 flow](https://www.dropbox.com/static/images/developers/oauth2-web-diagram.png)
9
+
10
+ Source: [https://www.dropbox.com/developers/reference/oauth-guide#oauth-2-on-the-web](https://www.dropbox.com/developers/reference/oauth-guide#oauth-2-on-the-web)
11
+
12
+ ## 1. Set up some new routes
13
+
14
+ You'll have to create a couple of new routes:
15
+
16
+ ```ruby
17
+ get 'dropbox/auth' => 'dropbox#auth'
18
+ get 'dropbox/auth_callback' => 'dropbox#auth_callback'
19
+ ```
20
+
21
+ We'll use `dropbox/auth` to perform the step 2 in the diagram, i.e. this route
22
+ will redirect to Dropbox.
23
+
24
+ The other route, `dropbox/auth_callback`, will process the authentication token
25
+ that we'll receive from Dropbox. Steps 4 & 5.
26
+
27
+ ## 2. Set up a Dropbox controller
28
+
29
+ ```ruby
30
+ class DropboxController < ApplicationController
31
+ # Example call:
32
+ # GET /dropbox/auth
33
+ def auth
34
+ url = authenticator.authorize_url :redirect_uri => redirect_uri
35
+
36
+ redirect_to url
37
+ end
38
+
39
+ # Example call:
40
+ # GET /dropbox/auth_callback?code=VofXAX8DO1sAAAAAAAACUKBwkDZyMg1zKT0f_FNONeA
41
+ def auth_callback
42
+ auth_bearer = authenticator.get_token(params[:code],
43
+ :redirect_uri => redirect_uri)
44
+ token = auth_bearer.token # This line is step 5 in the diagram.
45
+
46
+ # At this stage you may want to persist the reusable token we've acquired.
47
+ # Remember that it's bound to the Dropbox account of your user.
48
+
49
+ # If you persist this token, you can use it in subsequent requests or
50
+ # background jobs to perform calls to Dropbox API such as the following.
51
+ folders = DropboxApi::Client.new(token).list_folder "/"
52
+ end
53
+
54
+ private
55
+
56
+ def authenticator
57
+ client_id = "az8ykn83kecoodq"
58
+ client_secret = "ozp1pxo8e563fc5"
59
+
60
+ DropboxApi::Authenticator.new(client_id, client_secret)
61
+ end
62
+
63
+ def redirect_uri
64
+ dropbox_auth_callback_url # => http://localhost:3000/dropbox/auth_callback
65
+ end
66
+ end
67
+ ```
68
+
69
+ ## 3. Set up redirect URI in your Dropbox app settings
70
+
71
+ In the previous code, you probably noticed that we're providing a `redirect_uri`
72
+ parameter. This is where the user will be redirected to after accepting our
73
+ application.
74
+
75
+ However, Dropbox will only redirect to a set of whitelisted URIs, so
76
+ you'll need to add yours to the list. That's very easy:
77
+
78
+ 1. Log in to your Dropbox developer account at
79
+ [www.dropbox.com/developers](https://www.dropbox.com/developers).
80
+ 2. On the menu, click on "My Apps". Then click on your application to edit its
81
+ settings.
82
+ 4. On the OAuth 2 section, add the redirect URI that maps to the
83
+ `auth_callback` method that we've implemented above. For example,
84
+ `www.yourapp.com/dropbox/oauth_callback`.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dropbox_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesús Burgos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-29 00:00:00.000000000 Z
11
+ date: 2016-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -124,12 +124,15 @@ files:
124
124
  - ".gitignore"
125
125
  - ".rspec"
126
126
  - ".travis.yml"
127
+ - ".yardopts"
128
+ - CHANGES.md
127
129
  - Gemfile
128
130
  - LICENSE
129
131
  - README.md
130
132
  - Rakefile
131
133
  - TODO.md
132
134
  - api_coverage.md
135
+ - api_reference.md
133
136
  - bin/console
134
137
  - bin/setup
135
138
  - dropbox_api.gemspec
@@ -160,12 +163,17 @@ files:
160
163
  - lib/dropbox_api/endpoints/options_validator.rb
161
164
  - lib/dropbox_api/endpoints/rpc.rb
162
165
  - lib/dropbox_api/endpoints/rpc_notify.rb
166
+ - lib/dropbox_api/endpoints/sharing/add_file_member.rb
163
167
  - lib/dropbox_api/endpoints/sharing/add_folder_member.rb
164
168
  - lib/dropbox_api/endpoints/sharing/create_shared_link_with_settings.rb
165
169
  - lib/dropbox_api/endpoints/sharing/list_folder_members.rb
166
170
  - lib/dropbox_api/endpoints/sharing/list_shared_links.rb
167
171
  - lib/dropbox_api/endpoints/sharing/share_folder.rb
168
172
  - lib/dropbox_api/endpoints/users/get_account.rb
173
+ - lib/dropbox_api/endpoints/users/get_account_batch.rb
174
+ - lib/dropbox_api/endpoints/users/get_current_account.rb
175
+ - lib/dropbox_api/endpoints/users/get_space_usage.rb
176
+ - lib/dropbox_api/errors/add_file_member_error.rb
169
177
  - lib/dropbox_api/errors/add_folder_member_error.rb
170
178
  - lib/dropbox_api/errors/add_member_selector_error.rb
171
179
  - lib/dropbox_api/errors/already_shared_error.rb
@@ -174,6 +182,7 @@ files:
174
182
  - lib/dropbox_api/errors/create_shared_link_with_settings_error.rb
175
183
  - lib/dropbox_api/errors/delete_error.rb
176
184
  - lib/dropbox_api/errors/download_error.rb
185
+ - lib/dropbox_api/errors/file_member_action_error.rb
177
186
  - lib/dropbox_api/errors/get_account_error.rb
178
187
  - lib/dropbox_api/errors/get_metadata_error.rb
179
188
  - lib/dropbox_api/errors/http_error.rb
@@ -191,10 +200,14 @@ files:
191
200
  - lib/dropbox_api/errors/share_folder_error.rb
192
201
  - lib/dropbox_api/errors/share_path_error.rb
193
202
  - lib/dropbox_api/errors/shared_folder_access_error.rb
203
+ - lib/dropbox_api/errors/sharing_file_access_error.rb
204
+ - lib/dropbox_api/errors/too_many_requests_error.rb
194
205
  - lib/dropbox_api/errors/upload_error.rb
195
206
  - lib/dropbox_api/errors/upload_write_failed_error.rb
196
207
  - lib/dropbox_api/errors/write_conflict_error.rb
197
208
  - lib/dropbox_api/errors/write_error.rb
209
+ - lib/dropbox_api/metadata/access_level.rb
210
+ - lib/dropbox_api/metadata/add_file_member_result.rb
198
211
  - lib/dropbox_api/metadata/add_member.rb
199
212
  - lib/dropbox_api/metadata/base.rb
200
213
  - lib/dropbox_api/metadata/basic_account.rb
@@ -202,20 +215,30 @@ files:
202
215
  - lib/dropbox_api/metadata/field.rb
203
216
  - lib/dropbox_api/metadata/file.rb
204
217
  - lib/dropbox_api/metadata/file_link.rb
218
+ - lib/dropbox_api/metadata/file_member_action.rb
205
219
  - lib/dropbox_api/metadata/folder.rb
206
220
  - lib/dropbox_api/metadata/folder_link.rb
207
221
  - lib/dropbox_api/metadata/folder_sharing_info.rb
208
222
  - lib/dropbox_api/metadata/link_permissions.rb
223
+ - lib/dropbox_api/metadata/member.rb
224
+ - lib/dropbox_api/metadata/member_action_collection.rb
225
+ - lib/dropbox_api/metadata/member_permission.rb
226
+ - lib/dropbox_api/metadata/member_permission_list.rb
209
227
  - lib/dropbox_api/metadata/name.rb
228
+ - lib/dropbox_api/metadata/parent_folder_access_info.rb
210
229
  - lib/dropbox_api/metadata/resource.rb
211
230
  - lib/dropbox_api/metadata/shared_folder.rb
212
231
  - lib/dropbox_api/metadata/shared_folder_policy.rb
213
232
  - lib/dropbox_api/metadata/shared_link.rb
233
+ - lib/dropbox_api/metadata/space_allocation.rb
234
+ - lib/dropbox_api/metadata/space_usage.rb
214
235
  - lib/dropbox_api/metadata/team.rb
215
236
  - lib/dropbox_api/metadata/team_member_info.rb
216
237
  - lib/dropbox_api/middleware/decode_result.rb
217
238
  - lib/dropbox_api/result_builder.rb
239
+ - lib/dropbox_api/results/add_file_member_result_list.rb
218
240
  - lib/dropbox_api/results/base.rb
241
+ - lib/dropbox_api/results/basic_account_batch.rb
219
242
  - lib/dropbox_api/results/get_temporary_link_result.rb
220
243
  - lib/dropbox_api/results/list_folder_get_latest_cursor_result.rb
221
244
  - lib/dropbox_api/results/list_folder_longpoll_result.rb
@@ -228,6 +251,7 @@ files:
228
251
  - lib/dropbox_api/results/shared_folder_members.rb
229
252
  - lib/dropbox_api/results/void_result.rb
230
253
  - lib/dropbox_api/version.rb
254
+ - rails_setup.md
231
255
  homepage: https://github.com/Jesus/dropbox_api
232
256
  licenses:
233
257
  - MIT