dropbox_api 0.1.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 +7 -0
- data/.gitignore +9 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/README.md +118 -0
- data/Rakefile +6 -0
- data/TODO.md +8 -0
- data/api_coverage.md +107 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/dropbox_api.gemspec +30 -0
- data/lib/dropbox_api.rb +102 -0
- data/lib/dropbox_api/authenticator.rb +20 -0
- data/lib/dropbox_api/client.rb +13 -0
- data/lib/dropbox_api/connection_builder.rb +17 -0
- data/lib/dropbox_api/endpoints/base.rb +44 -0
- data/lib/dropbox_api/endpoints/content_download.rb +33 -0
- data/lib/dropbox_api/endpoints/content_upload.rb +25 -0
- data/lib/dropbox_api/endpoints/files/copy.rb +22 -0
- data/lib/dropbox_api/endpoints/files/create_folder.rb +19 -0
- data/lib/dropbox_api/endpoints/files/delete.rb +25 -0
- data/lib/dropbox_api/endpoints/files/download.rb +16 -0
- data/lib/dropbox_api/endpoints/files/get_metadata.rb +29 -0
- data/lib/dropbox_api/endpoints/files/get_preview.rb +18 -0
- data/lib/dropbox_api/endpoints/files/get_temporary_link.rb +18 -0
- data/lib/dropbox_api/endpoints/files/get_thumbnail.rb +34 -0
- data/lib/dropbox_api/endpoints/files/list_folder.rb +38 -0
- data/lib/dropbox_api/endpoints/files/list_folder_continue.rb +21 -0
- data/lib/dropbox_api/endpoints/files/list_folder_get_latest_cursor.rb +40 -0
- data/lib/dropbox_api/endpoints/files/list_folder_longpoll.rb +36 -0
- data/lib/dropbox_api/endpoints/files/list_revisions.rb +27 -0
- data/lib/dropbox_api/endpoints/files/move.rb +22 -0
- data/lib/dropbox_api/endpoints/files/restore.rb +20 -0
- data/lib/dropbox_api/endpoints/files/search.rb +44 -0
- data/lib/dropbox_api/endpoints/files/upload.rb +26 -0
- data/lib/dropbox_api/endpoints/options_validator.rb +11 -0
- data/lib/dropbox_api/endpoints/rpc.rb +18 -0
- data/lib/dropbox_api/endpoints/rpc_notify.rb +11 -0
- data/lib/dropbox_api/endpoints/sharing/add_folder_member.rb +54 -0
- data/lib/dropbox_api/endpoints/sharing/create_shared_link_with_settings.rb +23 -0
- data/lib/dropbox_api/endpoints/sharing/list_folder_members.rb +31 -0
- data/lib/dropbox_api/endpoints/sharing/list_shared_links.rb +31 -0
- data/lib/dropbox_api/endpoints/sharing/share_folder.rb +58 -0
- data/lib/dropbox_api/endpoints/users/get_account.rb +17 -0
- data/lib/dropbox_api/errors/add_folder_member_error.rb +16 -0
- data/lib/dropbox_api/errors/add_member_selector_error.rb +11 -0
- data/lib/dropbox_api/errors/already_shared_error.rb +7 -0
- data/lib/dropbox_api/errors/basic_error.rb +83 -0
- data/lib/dropbox_api/errors/create_folder_error.rb +7 -0
- data/lib/dropbox_api/errors/create_shared_link_with_settings_error.rb +11 -0
- data/lib/dropbox_api/errors/delete_error.rb +8 -0
- data/lib/dropbox_api/errors/download_error.rb +7 -0
- data/lib/dropbox_api/errors/get_account_error.rb +7 -0
- data/lib/dropbox_api/errors/get_metadata_error.rb +7 -0
- data/lib/dropbox_api/errors/http_error.rb +6 -0
- data/lib/dropbox_api/errors/list_folder_continue_error.rb +8 -0
- data/lib/dropbox_api/errors/list_folder_error.rb +7 -0
- data/lib/dropbox_api/errors/list_folder_longpoll_error.rb +7 -0
- data/lib/dropbox_api/errors/list_revisions_error.rb +7 -0
- data/lib/dropbox_api/errors/list_shared_links_error.rb +8 -0
- data/lib/dropbox_api/errors/lookup_error.rb +11 -0
- data/lib/dropbox_api/errors/preview_error.rb +10 -0
- data/lib/dropbox_api/errors/relocation_error.rb +13 -0
- data/lib/dropbox_api/errors/restore_error.rb +9 -0
- data/lib/dropbox_api/errors/search_error.rb +7 -0
- data/lib/dropbox_api/errors/settings_error.rb +8 -0
- data/lib/dropbox_api/errors/share_folder_error.rb +11 -0
- data/lib/dropbox_api/errors/share_path_error.rb +17 -0
- data/lib/dropbox_api/errors/shared_folder_access_error.rb +10 -0
- data/lib/dropbox_api/errors/upload_error.rb +7 -0
- data/lib/dropbox_api/errors/upload_write_failed_error.rb +7 -0
- data/lib/dropbox_api/errors/write_conflict_error.rb +9 -0
- data/lib/dropbox_api/errors/write_error.rb +11 -0
- data/lib/dropbox_api/metadata/add_member.rb +62 -0
- data/lib/dropbox_api/metadata/base.rb +22 -0
- data/lib/dropbox_api/metadata/basic_account.rb +29 -0
- data/lib/dropbox_api/metadata/deleted.rb +15 -0
- data/lib/dropbox_api/metadata/field.rb +34 -0
- data/lib/dropbox_api/metadata/file.rb +30 -0
- data/lib/dropbox_api/metadata/file_link.rb +46 -0
- data/lib/dropbox_api/metadata/folder.rb +17 -0
- data/lib/dropbox_api/metadata/folder_link.rb +12 -0
- data/lib/dropbox_api/metadata/folder_sharing_info.rb +13 -0
- data/lib/dropbox_api/metadata/link_permissions.rb +19 -0
- data/lib/dropbox_api/metadata/name.rb +16 -0
- data/lib/dropbox_api/metadata/resource.rb +31 -0
- data/lib/dropbox_api/metadata/shared_folder.rb +26 -0
- data/lib/dropbox_api/metadata/shared_folder_policy.rb +12 -0
- data/lib/dropbox_api/metadata/shared_link.rb +26 -0
- data/lib/dropbox_api/metadata/team.rb +6 -0
- data/lib/dropbox_api/metadata/team_member_info.rb +17 -0
- data/lib/dropbox_api/middleware/decode_result.rb +26 -0
- data/lib/dropbox_api/result_builder.rb +31 -0
- data/lib/dropbox_api/results/base.rb +7 -0
- data/lib/dropbox_api/results/get_temporary_link_result.rb +11 -0
- data/lib/dropbox_api/results/list_folder_get_latest_cursor_result.rb +7 -0
- data/lib/dropbox_api/results/list_folder_longpoll_result.rb +15 -0
- data/lib/dropbox_api/results/list_folder_result.rb +22 -0
- data/lib/dropbox_api/results/list_revisions_result.rb +14 -0
- data/lib/dropbox_api/results/list_shared_links_result.rb +22 -0
- data/lib/dropbox_api/results/search/match.rb +15 -0
- data/lib/dropbox_api/results/search_result.rb +22 -0
- data/lib/dropbox_api/results/share_folder_launch.rb +14 -0
- data/lib/dropbox_api/results/shared_folder_members.rb +19 -0
- data/lib/dropbox_api/results/void_result.rb +4 -0
- data/lib/dropbox_api/version.rb +3 -0
- metadata +256 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class AddFolderMemberError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:access_error => SharedFolderAccessError,
|
|
5
|
+
:email_unverified => EmailUnverifiedError,
|
|
6
|
+
:bad_member => AddMemberSelectorError,
|
|
7
|
+
:cant_share_outside_team => CantShareOutsideTeamError,
|
|
8
|
+
:too_many_members => TooManyMembersError,
|
|
9
|
+
:too_many_pending_invites => TooManyPendingInvitesError,
|
|
10
|
+
:rate_limit => RateLimitError,
|
|
11
|
+
:insufficient_plan => InsufficientPlanError,
|
|
12
|
+
:team_folder => TeamFolderError,
|
|
13
|
+
:no_permission => NoPermissionError
|
|
14
|
+
}.freeze
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class AddMemberSelectorError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:invalid_dropbox_id => InvalidDropboxIdError,
|
|
5
|
+
:invalid_email => InvalidEmailError,
|
|
6
|
+
:unverified_dropbox_id => UnverifiedDropboxId,
|
|
7
|
+
:group_deleted => GroupDeletedError,
|
|
8
|
+
:group_not_on_team => GroupNotOnTeamError
|
|
9
|
+
}.freeze
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class BasicError < StandardError
|
|
3
|
+
def initialize(message, metadata)
|
|
4
|
+
@metadata = metadata
|
|
5
|
+
super message
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
def build(message, metadata)
|
|
10
|
+
subtype, metadata = find_subtype metadata
|
|
11
|
+
|
|
12
|
+
if subtype.nil?
|
|
13
|
+
new message, metadata
|
|
14
|
+
else
|
|
15
|
+
subtype.build message, metadata
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def find_subtype(metadata)
|
|
20
|
+
if defined? self::ErrorSubtypes
|
|
21
|
+
discriminator = metadata[".tag"]
|
|
22
|
+
metadata = metadata[discriminator] unless metadata[discriminator].nil?
|
|
23
|
+
[self::ErrorSubtypes[discriminator.to_sym], metadata]
|
|
24
|
+
else
|
|
25
|
+
[nil, metadata]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class BadPathError < BasicError; end
|
|
32
|
+
class CantCopySharedFolderError < BasicError; end
|
|
33
|
+
class CantMoveFolderIntoItselfError < BasicError; end
|
|
34
|
+
class CantNestSharedFolderError < BasicError; end
|
|
35
|
+
class CantShareOutsideTeamError < BasicError; end
|
|
36
|
+
class ContainsSharedFolderError < BasicError; end
|
|
37
|
+
class DisallowedNameError < BasicError; end
|
|
38
|
+
class DisallowedSharedLinkPolicyError < BasicError; end
|
|
39
|
+
class EmailUnverifiedError < BasicError; end
|
|
40
|
+
class FileAncestorConflictError < BasicError; end
|
|
41
|
+
class FileConflictError < BasicError; end
|
|
42
|
+
class FolderConflictError < BasicError; end
|
|
43
|
+
class GroupDeletedError < BasicError; end
|
|
44
|
+
class GroupNotOnTeamError < BasicError; end
|
|
45
|
+
class InProgressError < BasicError; end
|
|
46
|
+
class InsideAppFolderError < BasicError; end
|
|
47
|
+
class InsideOsxPackageError < BasicError; end
|
|
48
|
+
class InsidePublicFolderError < BasicError; end
|
|
49
|
+
class InsideSharedFolderError < BasicError; end
|
|
50
|
+
class InsufficientPlanError < BasicError; end
|
|
51
|
+
class InsufficientSpaceError < BasicError; end
|
|
52
|
+
class InvalidCursorError < BasicError; end
|
|
53
|
+
class InvalidDropboxIdError < BasicError; end
|
|
54
|
+
class InvalidEmailError < BasicError; end
|
|
55
|
+
class InvalidIdError < BasicError; end
|
|
56
|
+
class InvalidPathError < BasicError; end
|
|
57
|
+
class InvalidRevisionError < BasicError; end
|
|
58
|
+
class InvalidSettingsError < BasicError; end
|
|
59
|
+
class IsAppFolderError < BasicError; end
|
|
60
|
+
class IsFileError < BasicError; end
|
|
61
|
+
class IsOsxPackageError < BasicError; end
|
|
62
|
+
class IsPublicFolderError < BasicError; end
|
|
63
|
+
class MalformedPathError < BasicError; end
|
|
64
|
+
class NoAccountError < BasicError; end
|
|
65
|
+
class NoPermissionError < BasicError; end
|
|
66
|
+
class NoWritePermissionError < BasicError; end
|
|
67
|
+
class NotAMemberError < BasicError; end
|
|
68
|
+
class NotFileError < BasicError; end
|
|
69
|
+
class NotFolderError < BasicError; end
|
|
70
|
+
class NotFoundError < BasicError; end
|
|
71
|
+
class RateLimitError < BasicError; end
|
|
72
|
+
class RestrictedContentError < BasicError; end
|
|
73
|
+
class SharedLinkAlreadyExistsError < BasicError; end
|
|
74
|
+
class TeamFolderError < BasicError; end
|
|
75
|
+
class TeamPolicyDisallowsMemberPolicyError < BasicError; end
|
|
76
|
+
class TooManyFilesError < BasicError; end
|
|
77
|
+
class TooManyMembersError < BasicError; end
|
|
78
|
+
class TooManyPendingInvitesError < BasicError; end
|
|
79
|
+
class UnmountedError < BasicError; end
|
|
80
|
+
class UnsupportedContentError < BasicError; end
|
|
81
|
+
class UnsupportedExtensionError < BasicError; end
|
|
82
|
+
class UnverifiedDropboxId < BasicError; end
|
|
83
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class CreateSharedLinkWithSettingsError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:path => LookupError,
|
|
5
|
+
:email_not_verified => EmailUnverifiedError,
|
|
6
|
+
:shared_link_already_exists => SharedLinkAlreadyExistsError,
|
|
7
|
+
:settings_error => SettingsError,
|
|
8
|
+
:access_denied => NoPermissionError
|
|
9
|
+
}.freeze
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class LookupError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:malformed_path => MalformedPathError,
|
|
5
|
+
:not_found => NotFoundError,
|
|
6
|
+
:not_file => NotFileError,
|
|
7
|
+
:not_folder => NotFolderError,
|
|
8
|
+
:restricted_content => RestrictedContentError
|
|
9
|
+
}.freeze
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class PreviewError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:path => LookupError,
|
|
5
|
+
:in_progress => InProgressError,
|
|
6
|
+
:unsupported_extension => UnsupportedExtensionError,
|
|
7
|
+
:unsupported_content => UnsupportedContentError
|
|
8
|
+
}.freeze
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class RelocationError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:from_lookup => LookupError,
|
|
5
|
+
:from_write => WriteError,
|
|
6
|
+
:to => WriteError,
|
|
7
|
+
:cant_copy_shared_folder => CantCopySharedFolderError,
|
|
8
|
+
:cant_nest_shared_folder => CantNestSharedFolderError,
|
|
9
|
+
:cant_move_folder_into_itself => CantMoveFolderIntoItselfError,
|
|
10
|
+
:too_many_files => TooManyFilesError
|
|
11
|
+
}.freeze
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class ShareFolderError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:email_unverified => EmailUnverifiedError,
|
|
5
|
+
:bad_path => SharePathError,
|
|
6
|
+
:team_policy_disallows_member_policy => TeamPolicyDisallowsMemberPolicyError,
|
|
7
|
+
:disallowed_shared_link_policy => DisallowedSharedLinkPolicyError,
|
|
8
|
+
:no_permission => NoPermissionError
|
|
9
|
+
}.freeze
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class SharePathError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:is_file => IsFileError,
|
|
5
|
+
:inside_shared_folder => InsideSharedFolderError,
|
|
6
|
+
:contains_shared_folder => ContainsSharedFolderError,
|
|
7
|
+
:is_app_folder => IsAppFolderError,
|
|
8
|
+
:inside_app_folder => InsideAppFolderError,
|
|
9
|
+
:is_public_folder => IsPublicFolderError,
|
|
10
|
+
:inside_public_folder => InsidePublicFolderError,
|
|
11
|
+
:already_shared => AlreadySharedError,
|
|
12
|
+
:invalid_path => InvalidPathError,
|
|
13
|
+
:is_osx_package => IsOsxPackageError,
|
|
14
|
+
:inside_osx_package => InsideOsxPackageError,
|
|
15
|
+
}.freeze
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module DropboxApi::Errors
|
|
2
|
+
class WriteError < BasicError
|
|
3
|
+
ErrorSubtypes = {
|
|
4
|
+
:malformed_path => MalformedPathError,
|
|
5
|
+
:conflict => WriteConflictError,
|
|
6
|
+
:no_write_permission => NoWritePermissionError,
|
|
7
|
+
:insufficient_space => InsufficientSpaceError,
|
|
8
|
+
:disallowed_name => DisallowedNameError
|
|
9
|
+
}
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module DropboxApi::Metadata
|
|
2
|
+
# Examples of serialized `AddMember` objects:
|
|
3
|
+
#
|
|
4
|
+
# {
|
|
5
|
+
# "member": {
|
|
6
|
+
# ".tag": "email",
|
|
7
|
+
# "email": "justin@example.com"
|
|
8
|
+
# },
|
|
9
|
+
# "access_level": {
|
|
10
|
+
# ".tag": "editor"
|
|
11
|
+
# }
|
|
12
|
+
# },
|
|
13
|
+
# {
|
|
14
|
+
# "member": {
|
|
15
|
+
# ".tag": "dropbox_id",
|
|
16
|
+
# "dropbox_id": "dbid:AAEufNrMPSPe0dMQijRP0N_aZtBJRm26W4Q"
|
|
17
|
+
# },
|
|
18
|
+
# "access_level": {
|
|
19
|
+
# ".tag": "viewer"
|
|
20
|
+
# }
|
|
21
|
+
# }
|
|
22
|
+
class AddMember
|
|
23
|
+
# Builds an AddMember object that can be used as an argument for
|
|
24
|
+
# `add_folder_member`.
|
|
25
|
+
#
|
|
26
|
+
# @param member [String] Email address or Dropbox ID.
|
|
27
|
+
# @param acl [:editor, :viewer] Access level, defaults to :editor.
|
|
28
|
+
def initialize(member, acl = :editor)
|
|
29
|
+
@member = member
|
|
30
|
+
@acl = acl
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def to_hash
|
|
34
|
+
{
|
|
35
|
+
:member => member_to_hash,
|
|
36
|
+
:access_level => acl_to_hash
|
|
37
|
+
}
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def member_to_hash
|
|
43
|
+
if @member.start_with? "dbid:"
|
|
44
|
+
{
|
|
45
|
+
:".tag" => :dropbox_id,
|
|
46
|
+
:dropbox_id => @member
|
|
47
|
+
}
|
|
48
|
+
else
|
|
49
|
+
{
|
|
50
|
+
:".tag" => :email,
|
|
51
|
+
:email => @member
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def acl_to_hash
|
|
57
|
+
{
|
|
58
|
+
:".tag" => @acl
|
|
59
|
+
}
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|