dropbox_api 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|