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.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/CHANGES.md +7 -0
- data/README.md +37 -12
- data/TODO.md +33 -3
- data/api_coverage.md +8 -6
- data/api_reference.md +25 -0
- data/lib/dropbox_api.rb +25 -1
- data/lib/dropbox_api/authenticator.rb +5 -9
- data/lib/dropbox_api/endpoints/base.rb +11 -0
- data/lib/dropbox_api/endpoints/files/get_thumbnail.rb +30 -6
- data/lib/dropbox_api/endpoints/files/upload.rb +18 -6
- data/lib/dropbox_api/endpoints/sharing/add_file_member.rb +60 -0
- data/lib/dropbox_api/endpoints/sharing/add_folder_member.rb +11 -8
- data/lib/dropbox_api/endpoints/sharing/list_folder_members.rb +16 -6
- data/lib/dropbox_api/endpoints/users/get_account_batch.rb +19 -0
- data/lib/dropbox_api/endpoints/users/get_current_account.rb +16 -0
- data/lib/dropbox_api/endpoints/users/get_space_usage.rb +16 -0
- data/lib/dropbox_api/errors/add_file_member_error.rb +6 -0
- data/lib/dropbox_api/errors/basic_error.rb +3 -0
- data/lib/dropbox_api/errors/file_member_action_error.rb +10 -0
- data/lib/dropbox_api/errors/sharing_file_access_error.rb +11 -0
- data/lib/dropbox_api/errors/too_many_requests_error.rb +19 -0
- data/lib/dropbox_api/metadata/access_level.rb +18 -0
- data/lib/dropbox_api/metadata/add_file_member_result.rb +19 -0
- data/lib/dropbox_api/metadata/add_member.rb +26 -54
- data/lib/dropbox_api/metadata/base.rb +53 -10
- data/lib/dropbox_api/metadata/basic_account.rb +19 -20
- data/lib/dropbox_api/metadata/deleted.rb +7 -8
- data/lib/dropbox_api/metadata/field.rb +3 -2
- data/lib/dropbox_api/metadata/file.rb +20 -17
- data/lib/dropbox_api/metadata/file_link.rb +26 -27
- data/lib/dropbox_api/metadata/file_member_action.rb +30 -0
- data/lib/dropbox_api/metadata/folder.rb +11 -8
- data/lib/dropbox_api/metadata/folder_sharing_info.rb +5 -6
- data/lib/dropbox_api/metadata/link_permissions.rb +9 -10
- data/lib/dropbox_api/metadata/member.rb +47 -0
- data/lib/dropbox_api/metadata/member_action_collection.rb +44 -0
- data/lib/dropbox_api/metadata/member_permission.rb +7 -0
- data/lib/dropbox_api/metadata/member_permission_list.rb +7 -0
- data/lib/dropbox_api/metadata/name.rb +7 -8
- data/lib/dropbox_api/metadata/parent_folder_access_info.rb +7 -0
- data/lib/dropbox_api/metadata/shared_folder.rb +14 -15
- data/lib/dropbox_api/metadata/shared_folder_policy.rb +5 -6
- data/lib/dropbox_api/metadata/space_allocation.rb +10 -0
- data/lib/dropbox_api/metadata/space_usage.rb +14 -0
- data/lib/dropbox_api/metadata/team_member_info.rb +9 -10
- data/lib/dropbox_api/result_builder.rb +1 -1
- data/lib/dropbox_api/results/add_file_member_result_list.rb +20 -0
- data/lib/dropbox_api/results/basic_account_batch.rb +7 -0
- data/lib/dropbox_api/version.rb +1 -1
- data/rails_setup.md +84 -0
- metadata +26 -2
@@ -1,12 +1,11 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# }
|
2
|
+
# Example of a serialized {Deleted} object:
|
3
|
+
# {
|
4
|
+
# ".tag": "deleted",
|
5
|
+
# "name": "file.txt",
|
6
|
+
# "path_lower": "/file.txt",
|
7
|
+
# "path_display": "/file.txt"
|
8
|
+
# }
|
10
9
|
class Deleted < Base
|
11
10
|
field :name, String
|
12
11
|
field :path_lower, String
|
@@ -6,7 +6,8 @@ module DropboxApi::Metadata
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def cast(object)
|
9
|
-
if object.nil?
|
9
|
+
if object.nil?
|
10
|
+
raise ArgumentError unless @options.include? :optional
|
10
11
|
nil
|
11
12
|
else
|
12
13
|
force_cast object
|
@@ -27,7 +28,7 @@ module DropboxApi::Metadata
|
|
27
28
|
elsif @type.ancestors.include? DropboxApi::Metadata::Base
|
28
29
|
@type.new(object)
|
29
30
|
else
|
30
|
-
raise NotImplementedError, "Can't cast `#{type}`"
|
31
|
+
raise NotImplementedError, "Can't cast `#{@type}`"
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
@@ -1,22 +1,21 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
2
|
+
# Example of a serialized {File} object:
|
3
|
+
# {
|
4
|
+
# ".tag": "file",
|
5
|
+
# "name": "Prime_Numbers.txt",
|
6
|
+
# "path_lower": "/homework/math/prime_numbers.txt",
|
7
|
+
# "path_display": "/Homework/math/Prime_Numbers.txt",
|
8
|
+
# "id": "id:a4ayc_80_OEAAAAAAAAAXw",
|
9
|
+
# "client_modified": "2015-05-12T15:50:38Z",
|
10
|
+
# "server_modified": "2015-05-12T15:50:38Z",
|
11
|
+
# "rev": "a1c10ce0dd78",
|
12
|
+
# "size": 7212,
|
13
|
+
# "sharing_info": {
|
14
|
+
# "read_only": true,
|
15
|
+
# "parent_shared_folder_id": "84528192421",
|
16
|
+
# "modified_by": "dbid:AAH4f99T0taONIb-OurWxbNQ6ywGRopQngc"
|
17
|
+
# }
|
18
18
|
# }
|
19
|
-
# }
|
20
19
|
class File < Base
|
21
20
|
field :name, String
|
22
21
|
field :path_lower, String
|
@@ -26,5 +25,9 @@ module DropboxApi::Metadata
|
|
26
25
|
field :server_modified, Time
|
27
26
|
field :rev, String
|
28
27
|
field :size, Integer
|
28
|
+
|
29
|
+
def to_hash
|
30
|
+
super.merge(".tag" => "file")
|
31
|
+
end
|
29
32
|
end
|
30
33
|
end
|
@@ -1,34 +1,33 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
2
|
+
# Example of a serialized {FileLink} object:
|
3
|
+
# {
|
4
|
+
# ".tag": "file",
|
5
|
+
# "url": "https://www.dropbox.com/s/2sn712vy1ovegw8/Prime_Numbers.txt?dl=0",
|
6
|
+
# "name": "Prime_Numbers.txt",
|
7
|
+
# "link_permissions": {
|
8
|
+
# "can_revoke": false,
|
9
|
+
# "resolved_visibility": {
|
10
|
+
# ".tag": "public"
|
11
|
+
# },
|
12
|
+
# "revoke_failure_reason": {
|
13
|
+
# ".tag": "owner_only"
|
14
|
+
# }
|
12
15
|
# },
|
13
|
-
# "
|
14
|
-
#
|
16
|
+
# "client_modified": "2015-05-12T15:50:38Z",
|
17
|
+
# "server_modified": "2015-05-12T15:50:38Z",
|
18
|
+
# "rev": "a1c10ce0dd78",
|
19
|
+
# "size": 7212,
|
20
|
+
# "id": "id:a4ayc_80_OEAAAAAAAAAXw",
|
21
|
+
# "path_lower": "/homework/math/prime_numbers.txt",
|
22
|
+
# "team_member_info": {
|
23
|
+
# "team_info": {
|
24
|
+
# "id": "dbtid:AAFdgehTzw7WlXhZJsbGCLePe8RvQGYDr-I",
|
25
|
+
# "name": "Acme, Inc."
|
26
|
+
# },
|
27
|
+
# "display_name": "Roger Rabbit",
|
28
|
+
# "member_id": "dbmid:abcd1234"
|
15
29
|
# }
|
16
|
-
# },
|
17
|
-
# "client_modified": "2015-05-12T15:50:38Z",
|
18
|
-
# "server_modified": "2015-05-12T15:50:38Z",
|
19
|
-
# "rev": "a1c10ce0dd78",
|
20
|
-
# "size": 7212,
|
21
|
-
# "id": "id:a4ayc_80_OEAAAAAAAAAXw",
|
22
|
-
# "path_lower": "/homework/math/prime_numbers.txt",
|
23
|
-
# "team_member_info": {
|
24
|
-
# "team_info": {
|
25
|
-
# "id": "dbtid:AAFdgehTzw7WlXhZJsbGCLePe8RvQGYDr-I",
|
26
|
-
# "name": "Acme, Inc."
|
27
|
-
# },
|
28
|
-
# "display_name": "Roger Rabbit",
|
29
|
-
# "member_id": "dbmid:abcd1234"
|
30
30
|
# }
|
31
|
-
# }
|
32
31
|
class FileLink < Base
|
33
32
|
field :url, String
|
34
33
|
field :name, String
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module DropboxApi::Metadata
|
2
|
+
# Example of a serialized FileMemberAction:
|
3
|
+
# {
|
4
|
+
# ".tag": "success",
|
5
|
+
# "success": {
|
6
|
+
# ".tag": "viewer"
|
7
|
+
# }
|
8
|
+
# }
|
9
|
+
class FileMemberAction < Base
|
10
|
+
class << self
|
11
|
+
def new(data)
|
12
|
+
tag = data[".tag"]
|
13
|
+
class_for(tag.to_sym).new(data[tag])
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def class_for(tag)
|
19
|
+
case tag
|
20
|
+
when :success
|
21
|
+
DropboxApi::Metadata::AccessLevel
|
22
|
+
when :member_error
|
23
|
+
DropboxApi::Errors::FileMemberActionError
|
24
|
+
else
|
25
|
+
raise ArgumentError, "Unable to build individual result with `#{tag}`"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,17 +1,20 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# }
|
2
|
+
# Example of a serialized {Folder} object:
|
3
|
+
# {
|
4
|
+
# "name": "arizona_baby",
|
5
|
+
# "path_lower": "/arizona_baby",
|
6
|
+
# "path_display": "/arizona_baby",
|
7
|
+
# "id": "id:7eWkV5hcfzAAAAAAAAAAAQ"
|
8
|
+
# }
|
10
9
|
class Folder < Base
|
11
10
|
field :name, String
|
12
11
|
field :path_lower, String
|
13
12
|
field :path_display, String
|
14
13
|
field :id, String
|
15
14
|
field :sharing_info, DropboxApi::Metadata::FolderSharingInfo, :optional
|
15
|
+
|
16
|
+
def to_hash
|
17
|
+
super.merge(".tag" => "folder")
|
18
|
+
end
|
16
19
|
end
|
17
20
|
end
|
@@ -1,10 +1,9 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# }
|
2
|
+
# Example of a serialized {FolderSharingInfo} object:
|
3
|
+
# {
|
4
|
+
# "read_only": false,
|
5
|
+
# "parent_shared_folder_id": "84528192421"
|
6
|
+
# }
|
8
7
|
class FolderSharingInfo < Base
|
9
8
|
field :read_only, :boolean
|
10
9
|
field :parent_shared_folder_id, String, :optional
|
@@ -1,15 +1,14 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
2
|
+
# Example of a serialized {LinkPermissions} object:
|
3
|
+
# {
|
4
|
+
# "can_revoke": false,
|
5
|
+
# "resolved_visibility": {
|
6
|
+
# ".tag": "public"
|
7
|
+
# },
|
8
|
+
# "revoke_failure_reason": {
|
9
|
+
# ".tag": "owner_only"
|
10
|
+
# }
|
11
11
|
# }
|
12
|
-
# }
|
13
12
|
class LinkPermissions < Base
|
14
13
|
field :can_revoke, :boolean
|
15
14
|
field :resolved_visibility, Symbol, :optional
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module DropboxApi::Metadata
|
2
|
+
# Examples of serialized {AddMember} objects:
|
3
|
+
# [
|
4
|
+
# {
|
5
|
+
# ".tag": "email",
|
6
|
+
# "email": "justin@example.com"
|
7
|
+
# }, {
|
8
|
+
# ".tag": "dropbox_id",
|
9
|
+
# "dropbox_id": "dbid:AAEufNrMPSPe0dMQijRP0N_aZtBJRm26W4Q"
|
10
|
+
# }
|
11
|
+
# ]
|
12
|
+
class Member < Base
|
13
|
+
class << self
|
14
|
+
def build_from_email_or_dropbox_id(email_or_id)
|
15
|
+
if email_or_id.start_with? "dbid:"
|
16
|
+
build_from_dropbox_id email_or_id
|
17
|
+
elsif email_or_id =~ /\A[^@\s]+@[^@\s]+\z/
|
18
|
+
build_from_email email_or_id
|
19
|
+
else
|
20
|
+
raise ArgumentError, "Invalid email or Dropbox ID: #{email_or_id}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def build_from_dropbox_id(dropbox_id)
|
25
|
+
new({
|
26
|
+
:".tag" => :dropbox_id,
|
27
|
+
:dropbox_id => dropbox_id
|
28
|
+
})
|
29
|
+
end
|
30
|
+
|
31
|
+
def build_from_email(email)
|
32
|
+
new({
|
33
|
+
:".tag" => :email,
|
34
|
+
:email => email
|
35
|
+
})
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def initialize(member)
|
40
|
+
@member = member
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_hash
|
44
|
+
@member
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module DropboxApi::Metadata
|
2
|
+
# This represents a collection of actions that may be taken on members of a
|
3
|
+
# shared folder. Each action will be one of the following:
|
4
|
+
#
|
5
|
+
# - leave_a_copy: Allow the member to keep a copy of the folder when removing.
|
6
|
+
# - make_editor: Make the member an editor of the folder.
|
7
|
+
# - make_owner: Make the member an owner of the folder.
|
8
|
+
# - make_viewer: Make the member a viewer of the folder.
|
9
|
+
# - make_viewer_no_comment: Make the member a viewer of the folder without commenting permissions.
|
10
|
+
# - remove: Remove the member from the folder.
|
11
|
+
#
|
12
|
+
# TODO: Split this object in two: MemberAction & MemberActionList,
|
13
|
+
# DropboxApi::Metadata::MemberPermission will use it.
|
14
|
+
class MemberActionCollection < Array
|
15
|
+
ValidActions = [
|
16
|
+
:leave_a_copy,
|
17
|
+
:make_editor,
|
18
|
+
:make_owner,
|
19
|
+
:make_viewer,
|
20
|
+
:make_viewer_no_comment,
|
21
|
+
:remove
|
22
|
+
]
|
23
|
+
|
24
|
+
def initialize(actions)
|
25
|
+
actions = symbolize actions
|
26
|
+
validate actions
|
27
|
+
|
28
|
+
super(actions)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def symbolize(actions)
|
34
|
+
actions.map &:to_sym
|
35
|
+
end
|
36
|
+
|
37
|
+
def validate(actions)
|
38
|
+
actions.each do |action|
|
39
|
+
raise ArgumentError,
|
40
|
+
"Invalid action: `#{action}`" unless ValidActions.include? action
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -1,12 +1,11 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# },
|
2
|
+
# Example of a serialized {Name} object:
|
3
|
+
# {
|
4
|
+
# "given_name": "Franz",
|
5
|
+
# "surname": "Ferdinand",
|
6
|
+
# "familiar_name": "Franz",
|
7
|
+
# "display_name": "Franz Ferdinand (Personal)"
|
8
|
+
# }
|
10
9
|
class Name < Base
|
11
10
|
field :given_name, String
|
12
11
|
field :surname, String
|
@@ -1,19 +1,18 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
# }
|
2
|
+
# Example of a serialized {SharedFolder} object:
|
3
|
+
# {
|
4
|
+
# ".tag" => "complete",
|
5
|
+
# "access_type" => {".tag"=>"owner"},
|
6
|
+
# "is_team_folder" => false,
|
7
|
+
# "policy" => {
|
8
|
+
# "acl_update_policy" => { ".tag" => "owner" },
|
9
|
+
# "shared_link_policy" => { ".tag" => "anyone" }
|
10
|
+
# },
|
11
|
+
# "path_lower" => "/folder_a",
|
12
|
+
# "name" => "folder_a",
|
13
|
+
# "shared_folder_id" => "1231266557",
|
14
|
+
# "time_invited" => "2016-06-04T10:00:35Z"
|
15
|
+
# }
|
17
16
|
class SharedFolder < Base
|
18
17
|
field :access_type, String
|
19
18
|
field :is_team_folder, :boolean
|
@@ -1,10 +1,9 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
#
|
3
|
-
#
|
4
|
-
# {
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# }
|
2
|
+
# Example of a serialized {SharedFolderPolicy} object:
|
3
|
+
# {
|
4
|
+
# "acl_update_policy" => { ".tag" => "owner" },
|
5
|
+
# "shared_link_policy" => { ".tag" => "anyone" }
|
6
|
+
# }
|
8
7
|
class SharedFolderPolicy < Base
|
9
8
|
field :acl_update_policy, Symbol
|
10
9
|
field :shared_link_policy, Symbol
|