dropbox_api 0.1.10 → 0.1.11
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 +24 -12
- data/RELEASING.md +5 -0
- data/api_coverage.md +9 -0
- data/lib/dropbox_api.rb +23 -4
- data/lib/dropbox_api/chunked_uploader.rb +48 -0
- data/lib/dropbox_api/endpoints/content_upload.rb +16 -9
- data/lib/dropbox_api/endpoints/file_requests/create_file_request.rb +21 -0
- data/lib/dropbox_api/endpoints/files/get_metadata.rb +1 -1
- data/lib/dropbox_api/endpoints/files/get_thumbnail.rb +4 -4
- data/lib/dropbox_api/endpoints/files/get_thumbnail_batch.rb +38 -0
- data/lib/dropbox_api/endpoints/files/list_folder.rb +16 -1
- data/lib/dropbox_api/endpoints/files/list_folder_get_latest_cursor.rb +8 -9
- data/lib/dropbox_api/endpoints/files/list_folder_longpoll.rb +1 -1
- data/lib/dropbox_api/endpoints/files/list_revisions.rb +1 -1
- data/lib/dropbox_api/endpoints/files/move.rb +2 -2
- data/lib/dropbox_api/endpoints/files/save_url_check_job_status.rb +1 -1
- data/lib/dropbox_api/endpoints/files/search.rb +1 -1
- data/lib/dropbox_api/endpoints/files/upload.rb +17 -27
- data/lib/dropbox_api/endpoints/files/upload_session_append_v2.rb +7 -5
- data/lib/dropbox_api/endpoints/files/upload_session_finish.rb +5 -3
- data/lib/dropbox_api/endpoints/files/upload_session_start.rb +3 -3
- data/lib/dropbox_api/endpoints/rpc_content.rb +9 -0
- data/lib/dropbox_api/endpoints/sharing/add_file_member.rb +6 -6
- data/lib/dropbox_api/endpoints/sharing/add_folder_member.rb +5 -5
- data/lib/dropbox_api/endpoints/sharing/create_shared_link_with_settings.rb +2 -2
- data/lib/dropbox_api/endpoints/sharing/list_folder_members.rb +1 -1
- data/lib/dropbox_api/endpoints/sharing/list_shared_links.rb +1 -1
- data/lib/dropbox_api/endpoints/sharing/share_folder.rb +1 -1
- data/lib/dropbox_api/endpoints/virtual/upload_by_chunks.rb +49 -0
- data/lib/dropbox_api/errors/basic_error.rb +2 -0
- data/lib/dropbox_api/errors/create_file_request_error.rb +6 -0
- data/lib/dropbox_api/errors/thumbnail_batch_error.rb +7 -0
- data/lib/dropbox_api/errors/thumbnail_error.rb +10 -0
- data/lib/dropbox_api/metadata/access_level.rb +7 -4
- data/lib/dropbox_api/metadata/add_file_member_result.rb +13 -10
- data/lib/dropbox_api/metadata/add_member.rb +19 -16
- data/lib/dropbox_api/metadata/basic_account.rb +18 -15
- data/lib/dropbox_api/metadata/commit_info.rb +35 -1
- data/lib/dropbox_api/metadata/deleted.rb +9 -6
- data/lib/dropbox_api/metadata/file.rb +18 -15
- data/lib/dropbox_api/metadata/file_link_metadata.rb +48 -0
- data/lib/dropbox_api/metadata/file_member_action.rb +8 -5
- data/lib/dropbox_api/metadata/file_request.rb +30 -0
- data/lib/dropbox_api/metadata/folder.rb +9 -6
- data/lib/dropbox_api/metadata/{folder_link.rb → folder_link_metadata.rb} +1 -1
- data/lib/dropbox_api/metadata/folder_sharing_info.rb +7 -4
- data/lib/dropbox_api/metadata/link_permissions.rb +11 -8
- data/lib/dropbox_api/metadata/media_info.rb +14 -7
- data/lib/dropbox_api/metadata/media_metadata.rb +14 -12
- data/lib/dropbox_api/metadata/member.rb +12 -9
- data/lib/dropbox_api/metadata/member_action.rb +13 -10
- data/lib/dropbox_api/metadata/member_permission.rb +11 -8
- data/lib/dropbox_api/metadata/member_permission_list.rb +19 -17
- data/lib/dropbox_api/metadata/name.rb +9 -6
- data/lib/dropbox_api/metadata/photo_metadata.rb +14 -11
- data/lib/dropbox_api/metadata/resource.rb +1 -1
- data/lib/dropbox_api/metadata/shared_folder.rb +16 -13
- data/lib/dropbox_api/metadata/shared_folder_policy.rb +7 -4
- data/lib/dropbox_api/metadata/shared_link.rb +30 -18
- data/lib/dropbox_api/metadata/shared_link_metadata.rb +26 -0
- data/lib/dropbox_api/metadata/space_allocation.rb +7 -4
- data/lib/dropbox_api/metadata/space_usage.rb +9 -6
- data/lib/dropbox_api/metadata/{symbol.rb → tag.rb} +1 -1
- data/lib/dropbox_api/metadata/team_member_info.rb +11 -8
- data/lib/dropbox_api/metadata/thumbnail_batch_result_data.rb +6 -0
- data/lib/dropbox_api/metadata/thumbnail_batch_result_entry.rb +23 -0
- data/lib/dropbox_api/metadata/upload_session_cursor.rb +7 -4
- data/lib/dropbox_api/metadata/video_metadata.rb +15 -12
- data/lib/dropbox_api/metadata/write_mode.rb +3 -3
- data/lib/dropbox_api/{endpoints/options_validator.rb → options_validator.rb} +1 -1
- data/lib/dropbox_api/results/add_file_member_result_list.rb +1 -1
- data/lib/dropbox_api/results/get_thumbnail_batch_result.rb +9 -0
- data/lib/dropbox_api/results/list_shared_links_result.rb +1 -1
- data/lib/dropbox_api/version.rb +1 -1
- metadata +20 -6
- data/lib/dropbox_api/metadata/file_link.rb +0 -45
@@ -1,20 +1,23 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# An action will be one of the following:
|
3
3
|
#
|
4
|
-
# -
|
4
|
+
# - `:leave_a_copy`: Allow the member to keep a copy of the folder when
|
5
5
|
# removing.
|
6
|
-
# -
|
7
|
-
# -
|
8
|
-
# -
|
9
|
-
# -
|
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
|
10
10
|
# commenting permissions.
|
11
|
-
# -
|
11
|
+
# - `:remove`: Remove the member from the folder.
|
12
12
|
#
|
13
13
|
# Example of a serialized {MemberAction} object:
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
|
14
|
+
#
|
15
|
+
# ```json
|
16
|
+
# {
|
17
|
+
# ".tag": "leave_a_copy"
|
18
|
+
# }
|
19
|
+
# ```
|
20
|
+
class MemberAction < DropboxApi::Metadata::Tag
|
18
21
|
VALID_MEMBER_ACTIONS = [
|
19
22
|
:leave_a_copy,
|
20
23
|
:make_editor,
|
@@ -1,14 +1,17 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# This is an example of a serialized {MemberPermission}:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# "
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# "action": {
|
7
|
+
# ".tag": "remove"
|
8
|
+
# },
|
9
|
+
# "allow": false,
|
10
|
+
# "reason": {
|
11
|
+
# ".tag": "target_is_self"
|
11
12
|
# }
|
13
|
+
# }
|
14
|
+
# ```
|
12
15
|
#
|
13
16
|
# This is normally contained in a {MemberPermissionList} object.
|
14
17
|
class MemberPermission < Base
|
@@ -3,23 +3,25 @@ module DropboxApi::Metadata
|
|
3
3
|
# shared file or folder.
|
4
4
|
#
|
5
5
|
# This is an example of a serialized {MemberActionList}:
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
# }
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
# }
|
6
|
+
# ```json
|
7
|
+
# [{
|
8
|
+
# "action": {
|
9
|
+
# ".tag": "remove"
|
10
|
+
# },
|
11
|
+
# "allow": false,
|
12
|
+
# "reason": {
|
13
|
+
# ".tag": "target_is_self"
|
14
|
+
# }
|
15
|
+
# }, {
|
16
|
+
# "action": {
|
17
|
+
# ".tag": "make_owner"
|
18
|
+
# },
|
19
|
+
# "allow": false,
|
20
|
+
# "reason": {
|
21
|
+
# ".tag": "target_is_self"
|
22
|
+
# }
|
23
|
+
# }]
|
24
|
+
# ```
|
23
25
|
class MemberPermissionList < Array
|
24
26
|
def initialize(list)
|
25
27
|
super(list.map { |i| DropboxApi::Metadata::MemberPermission.new i })
|
@@ -1,11 +1,14 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {Name} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# "given_name": "Franz",
|
7
|
+
# "surname": "Ferdinand",
|
8
|
+
# "familiar_name": "Franz",
|
9
|
+
# "display_name": "Franz Ferdinand (Personal)"
|
10
|
+
# }
|
11
|
+
# ```
|
9
12
|
class Name < Base
|
10
13
|
field :given_name, String
|
11
14
|
field :surname, String
|
@@ -1,17 +1,20 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {PhotoMetadata} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# "
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# "
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# ".tag": "photo",
|
7
|
+
# "dimensions": {
|
8
|
+
# "height": 1500,
|
9
|
+
# "width": 1500
|
10
|
+
# },
|
11
|
+
# "location": {
|
12
|
+
# "latitude": 10.123456,
|
13
|
+
# "longitude": 5.123456
|
14
14
|
# }
|
15
|
+
# "time_taken": "2016-09-04T17:00:27Z"
|
16
|
+
# }
|
17
|
+
# ```
|
15
18
|
class PhotoMetadata < Base
|
16
19
|
field :dimensions, DropboxApi::Metadata::Dimensions, :optional
|
17
20
|
field :location, DropboxApi::Metadata::Location, :optional
|
@@ -2,7 +2,7 @@ module DropboxApi::Metadata
|
|
2
2
|
# This class is used as an adapter so we can create an object of the pertinent
|
3
3
|
# class when we need to infer the type from the data.
|
4
4
|
#
|
5
|
-
# For example, calling
|
5
|
+
# For example, calling `Resource.new({".tag" => "file", :name => ...})` will
|
6
6
|
# instantiate a `File` object.
|
7
7
|
#
|
8
8
|
# So this could initalize an object of either `File`, `Folder` or `Deleted`.
|
@@ -1,18 +1,21 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {SharedFolder} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# },
|
11
|
-
# "
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# ".tag" => "complete",
|
7
|
+
# "access_type" => {".tag"=>"owner"},
|
8
|
+
# "is_team_folder" => false,
|
9
|
+
# "policy" => {
|
10
|
+
# "acl_update_policy" => { ".tag" => "owner" },
|
11
|
+
# "shared_link_policy" => { ".tag" => "anyone" }
|
12
|
+
# },
|
13
|
+
# "path_lower" => "/folder_a",
|
14
|
+
# "name" => "folder_a",
|
15
|
+
# "shared_folder_id" => "1231266557",
|
16
|
+
# "time_invited" => "2016-06-04T10:00:35Z"
|
17
|
+
# }
|
18
|
+
# ```
|
16
19
|
class SharedFolder < Base
|
17
20
|
field :access_type, String
|
18
21
|
field :is_team_folder, :boolean
|
@@ -1,9 +1,12 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {SharedFolderPolicy} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
# }
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# "acl_update_policy" => { ".tag" => "owner" },
|
7
|
+
# "shared_link_policy" => { ".tag" => "anyone" }
|
8
|
+
# }
|
9
|
+
# ```
|
7
10
|
class SharedFolderPolicy < Base
|
8
11
|
field :acl_update_policy, Symbol
|
9
12
|
field :shared_link_policy, Symbol
|
@@ -1,26 +1,38 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
2
|
+
class SharedLink < Base
|
3
|
+
VALID_KEYS = [:url, :password]
|
4
|
+
|
5
|
+
def initialize(param)
|
6
|
+
@shared_link =
|
7
|
+
case param
|
8
|
+
when String
|
9
|
+
{:url => param}
|
10
|
+
when Hash
|
11
|
+
param
|
12
|
+
end
|
11
13
|
|
12
|
-
|
14
|
+
check_validity
|
15
|
+
end
|
16
|
+
|
17
|
+
def check_validity
|
18
|
+
if @shared_link[:url].nil?
|
19
|
+
raise ArgumentError, "Missing `:url` option"
|
20
|
+
end
|
13
21
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
DropboxApi::Metadata::FileLink
|
18
|
-
when :folder
|
19
|
-
DropboxApi::Metadata::FolderLink
|
20
|
-
else
|
21
|
-
raise ArgumentError, "Unable to infer resource type for `#{tag}`"
|
22
|
+
@shared_link.keys.each do |key|
|
23
|
+
unless VALID_KEYS.include? key
|
24
|
+
raise ArgumentError, "Invalid option `#{key.inspect}`"
|
22
25
|
end
|
23
26
|
end
|
24
27
|
end
|
28
|
+
|
29
|
+
def to_hash
|
30
|
+
@shared_link
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def valid_keys
|
36
|
+
end
|
25
37
|
end
|
26
38
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module DropboxApi::Metadata
|
2
|
+
# This class is used as an adapter so we can create an object of the pertinent
|
3
|
+
# class when we need to infer the type from the data.
|
4
|
+
#
|
5
|
+
# This same pattern is used in `DropboxApi::Metadata::Resource`
|
6
|
+
class SharedLinkMetadata
|
7
|
+
class << self
|
8
|
+
def new(data)
|
9
|
+
class_for(data[".tag"].to_sym).new(data)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def class_for(tag)
|
15
|
+
case tag
|
16
|
+
when :file
|
17
|
+
DropboxApi::Metadata::FileLinkMetadata
|
18
|
+
when :folder
|
19
|
+
DropboxApi::Metadata::FolderLinkMetadata
|
20
|
+
else
|
21
|
+
raise ArgumentError, "Unable to infer resource type for `#{tag}`"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,9 +1,12 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {SpaceAllocation} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# ".tag": "individual",
|
7
|
+
# "allocated": 2147483648
|
8
|
+
# }
|
9
|
+
# ```
|
7
10
|
class SpaceAllocation < Base
|
8
11
|
field :allocated, Integer
|
9
12
|
end
|
@@ -1,12 +1,15 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {SpaceUsage} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# "used": 167685342,
|
7
|
+
# "allocation": {
|
8
|
+
# ".tag": "individual",
|
9
|
+
# "allocated": 2147483648
|
9
10
|
# }
|
11
|
+
# }
|
12
|
+
# ```
|
10
13
|
class SpaceUsage < Base
|
11
14
|
field :used, String
|
12
15
|
field :allocation, DropboxApi::Metadata::SpaceAllocation
|
@@ -1,13 +1,16 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {TeamMemberInfo} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# "
|
9
|
-
#
|
10
|
-
#
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# "team_info": {
|
7
|
+
# "id": "dbtid:AAFdgehTzw7WlXhZJsbGCLePe8RvQGYDr-I",
|
8
|
+
# "name": "Acme, Inc."
|
9
|
+
# },
|
10
|
+
# "display_name": "Roger Rabbit",
|
11
|
+
# "member_id": "dbmid:abcd1234"
|
12
|
+
# }
|
13
|
+
# ```
|
11
14
|
class TeamMemberInfo < Base
|
12
15
|
field :team_info, DropboxApi::Metadata::Team
|
13
16
|
field :display_name, String
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module DropboxApi::Metadata
|
2
|
+
# This class is used as an adapter so we can create an object of the pertinent
|
3
|
+
# class when we need to infer the type from the data.
|
4
|
+
#
|
5
|
+
# This same pattern is used in `DropboxApi::Metadata::Resource`
|
6
|
+
#
|
7
|
+
# So this could initalize an object of either `ThumbnailBatchResultData`
|
8
|
+
# or `ThumbnailError`.
|
9
|
+
class ThumbnailBatchResultEntry
|
10
|
+
class << self
|
11
|
+
def new(data)
|
12
|
+
case data[".tag"].to_sym
|
13
|
+
when :success
|
14
|
+
DropboxApi::Metadata::ThumbnailBatchResultData.new(data)
|
15
|
+
when :failure
|
16
|
+
DropboxApi::Errors::ThumbnailError.build("Thumbnail generation failed", data["failure"])
|
17
|
+
else
|
18
|
+
raise NotImplementedError, "Unknown result type: #{data[".tag"]}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,9 +1,12 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {UploadSessionCursor} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# "session_id": "AAAAAAAABCJ61k9yZZtn8Q",
|
7
|
+
# "offset":9
|
8
|
+
# }
|
9
|
+
# ```
|
7
10
|
class UploadSessionCursor < Base
|
8
11
|
field :session_id, String
|
9
12
|
field :offset, Integer
|
@@ -1,18 +1,21 @@
|
|
1
1
|
module DropboxApi::Metadata
|
2
2
|
# Example of a serialized {MediaInfo} object:
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# "
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# "
|
14
|
-
# "duration": 6000
|
3
|
+
#
|
4
|
+
# ```json
|
5
|
+
# {
|
6
|
+
# ".tag": "video",
|
7
|
+
# "dimensions": {
|
8
|
+
# "height": 1500,
|
9
|
+
# "width": 1500
|
10
|
+
# },
|
11
|
+
# "location": {
|
12
|
+
# "latitude": 10.123456,
|
13
|
+
# "longitude": 5.123456
|
15
14
|
# }
|
15
|
+
# "time_taken": "2016-09-04T17:00:27Z",
|
16
|
+
# "duration": 6000
|
17
|
+
# }
|
18
|
+
# ```
|
16
19
|
class VideoMetadata < Base
|
17
20
|
field :dimensions, DropboxApi::Metadata::Dimensions, :optional
|
18
21
|
field :location, DropboxApi::Metadata::Location, :optional
|