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,20 @@
|
|
|
1
|
+
require 'oauth2'
|
|
2
|
+
|
|
3
|
+
module DropboxApi
|
|
4
|
+
class Authenticator < OAuth2::Client
|
|
5
|
+
def initialize(client_id, client_secret)
|
|
6
|
+
@oauth_client = OAuth2::Client.new(client_id, client_secret, {
|
|
7
|
+
:authorize_url => 'https://www.dropbox.com/1/oauth2/authorize',
|
|
8
|
+
:token_url => 'https://api.dropboxapi.com/1/oauth2/token'
|
|
9
|
+
})
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def authorize_url
|
|
13
|
+
@oauth_client.auth_code.authorize_url
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def get_token(oauth_code)
|
|
17
|
+
@oauth_client.auth_code.get_token oauth_code
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module DropboxApi
|
|
2
|
+
class Client
|
|
3
|
+
def initialize(oauth_bearer = ENV["DROPBOX_OAUTH_BEARER"])
|
|
4
|
+
@connection_builder = ConnectionBuilder.new(oauth_bearer)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def self.add_endpoint(name, endpoint)
|
|
8
|
+
define_method(name) do |*args, &block|
|
|
9
|
+
endpoint.new(@connection_builder).send(name, *args, &block)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module DropboxApi
|
|
2
|
+
class ConnectionBuilder
|
|
3
|
+
def initialize(oauth_bearer)
|
|
4
|
+
@oauth_bearer = oauth_bearer
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def build(url)
|
|
8
|
+
Faraday.new(url) do |c|
|
|
9
|
+
c.authorization :Bearer, @oauth_bearer
|
|
10
|
+
|
|
11
|
+
yield c
|
|
12
|
+
|
|
13
|
+
c.adapter Faraday.default_adapter
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module DropboxApi::Endpoints
|
|
2
|
+
class Base
|
|
3
|
+
def self.add_endpoint(name, &block)
|
|
4
|
+
define_method(name, block)
|
|
5
|
+
DropboxApi::Client.add_endpoint(name, self)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
def perform_request(params)
|
|
11
|
+
process_response(get_response(params))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def get_response(*args)
|
|
15
|
+
run_request(*build_request(*args))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def process_response(raw_response)
|
|
19
|
+
case raw_response.status
|
|
20
|
+
when 200, 409
|
|
21
|
+
# Status code 409 is "Endpoint-specific error". We need to look at
|
|
22
|
+
# the response body to build an exception.
|
|
23
|
+
build_result(raw_response.env[:api_result])
|
|
24
|
+
else
|
|
25
|
+
raise DropboxApi::Errors::HttpError,
|
|
26
|
+
"HTTP #{raw_response.status}: #{raw_response.body}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def build_result(api_result)
|
|
31
|
+
result_builder = DropboxApi::ResultBuilder.new(api_result)
|
|
32
|
+
|
|
33
|
+
if result_builder.has_error?
|
|
34
|
+
raise result_builder.build_error(self.class::ErrorType)
|
|
35
|
+
else
|
|
36
|
+
result_builder.build(self.class::ResultType)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def run_request(body, headers)
|
|
41
|
+
@connection.run_request(self.class::Method, self.class::Path, body, headers)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module DropboxApi::Endpoints
|
|
2
|
+
class ContentDownload < DropboxApi::Endpoints::Base
|
|
3
|
+
def initialize(builder)
|
|
4
|
+
@connection = builder.build("https://content.dropboxapi.com") do |c|
|
|
5
|
+
c.response :decode_result
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def build_request(params)
|
|
10
|
+
body = nil
|
|
11
|
+
headers = {
|
|
12
|
+
'Dropbox-API-Arg' => JSON.dump(params),
|
|
13
|
+
'Content-Type' => ''
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return body, headers
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def perform_request(params)
|
|
20
|
+
response = get_response(params)
|
|
21
|
+
api_result = process_response response
|
|
22
|
+
|
|
23
|
+
# TODO: Stream response, current implementation will fail with very large
|
|
24
|
+
# files.
|
|
25
|
+
yield response.body if block_given?
|
|
26
|
+
|
|
27
|
+
api_result
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
# TODO:
|
|
32
|
+
# 1. Combine ContentDownload and ContentUpload to share its initialize method.
|
|
33
|
+
# 2. Reorganize the methods which create the request.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module DropboxApi::Endpoints
|
|
2
|
+
class ContentUpload < DropboxApi::Endpoints::Base
|
|
3
|
+
def initialize(builder)
|
|
4
|
+
@connection = builder.build("https://content.dropboxapi.com") do |c|
|
|
5
|
+
c.response :decode_result
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def build_request(params, content)
|
|
10
|
+
# TODO: It would be better to have a stream object on which we can call
|
|
11
|
+
# #read, rather than the full file content.
|
|
12
|
+
body = content
|
|
13
|
+
headers = {
|
|
14
|
+
'Dropbox-API-Arg' => JSON.dump(params),
|
|
15
|
+
'Content-Type' => 'application/octet-stream'
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return body, headers
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def perform_request(params, content)
|
|
22
|
+
process_response(get_response(params, content))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class Copy < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/copy".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::Resource
|
|
6
|
+
ErrorType = DropboxApi::Errors::RelocationError
|
|
7
|
+
|
|
8
|
+
# @method copy(from, to)
|
|
9
|
+
# Copy a file or folder to a different location in the user's Dropbox.
|
|
10
|
+
# If the source path is a folder all its contents will be copied.
|
|
11
|
+
#
|
|
12
|
+
# @param from [String] Path in the user's Dropbox to be copied or moved.
|
|
13
|
+
# @param to [String] Path in the user's Dropbox that is the destination.
|
|
14
|
+
# @return The moved file.
|
|
15
|
+
add_endpoint :copy do |from, to|
|
|
16
|
+
perform_request({
|
|
17
|
+
:from_path => from,
|
|
18
|
+
:to_path => to
|
|
19
|
+
})
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class CreateFolder < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/create_folder".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::Folder
|
|
6
|
+
ErrorType = DropboxApi::Errors::CreateFolderError
|
|
7
|
+
|
|
8
|
+
# @method create_folder(path)
|
|
9
|
+
# Create a folder at a given path.
|
|
10
|
+
#
|
|
11
|
+
# @param path [String] Path in the user's Dropbox to create.
|
|
12
|
+
# @return [DropboxApi::Metadata::Folder] The new folder.
|
|
13
|
+
add_endpoint :create_folder do |path|
|
|
14
|
+
perform_request({
|
|
15
|
+
:path => path
|
|
16
|
+
})
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class Delete < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/delete".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::Resource
|
|
6
|
+
ErrorType = DropboxApi::Errors::DeleteError
|
|
7
|
+
|
|
8
|
+
# @method delete(path)
|
|
9
|
+
# Delete the file or folder at a given path.
|
|
10
|
+
#
|
|
11
|
+
# If the path is a folder, all its contents will be deleted too.
|
|
12
|
+
#
|
|
13
|
+
# A successful response indicates that the file or folder was deleted.
|
|
14
|
+
# The returned metadata will be the corresponding FileMetadata or
|
|
15
|
+
# FolderMetadata for the item at time of deletion, and not a
|
|
16
|
+
# DeletedMetadata object.
|
|
17
|
+
#
|
|
18
|
+
# @param path [String] Path in the user's Dropbox to delete.
|
|
19
|
+
add_endpoint :delete do |path|
|
|
20
|
+
perform_request({
|
|
21
|
+
:path => path
|
|
22
|
+
})
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class Download < DropboxApi::Endpoints::ContentDownload
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/download".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::File
|
|
6
|
+
ErrorType = DropboxApi::Errors::DownloadError
|
|
7
|
+
|
|
8
|
+
# @method download(path)
|
|
9
|
+
# Download a file from a user's Dropbox.
|
|
10
|
+
#
|
|
11
|
+
# @param path [String] The path of the file to download.
|
|
12
|
+
add_endpoint :download do |path, &block|
|
|
13
|
+
perform_request({:path => path}, &block)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class GetMetadata < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/get_metadata".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::Resource
|
|
6
|
+
ErrorType = DropboxApi::Errors::GetMetadataError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method get_metadata(path, options = {})
|
|
11
|
+
# Returns the metadata for a file or folder.
|
|
12
|
+
#
|
|
13
|
+
# Note: Metadata for the root folder is unsupported.
|
|
14
|
+
#
|
|
15
|
+
# @param path [String] The path of a file or folder on Dropbox.
|
|
16
|
+
# @option include_media_info [Boolean] If `true`, FileMetadata.media_info
|
|
17
|
+
# is set for photo and video. The default for this field is `false`.
|
|
18
|
+
# @option include_deleted [Boolean] If `true`, DeletedMetadata will be
|
|
19
|
+
# returned for deleted file or folder, otherwise LookupError.not_found
|
|
20
|
+
# will be returned. The default for this field is False.
|
|
21
|
+
add_endpoint :get_metadata do |path, options = {}|
|
|
22
|
+
validate_options([:include_media_info, :include_deleted], options)
|
|
23
|
+
|
|
24
|
+
perform_request(options.merge({
|
|
25
|
+
:path => path
|
|
26
|
+
}))
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class GetPreview < DropboxApi::Endpoints::ContentDownload
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/get_preview".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::File
|
|
6
|
+
ErrorType = DropboxApi::Errors::PreviewError
|
|
7
|
+
|
|
8
|
+
# @method get_preview(path)
|
|
9
|
+
# Get a preview for a file. Currently previews are only generated for the
|
|
10
|
+
# files with the following extensions: .doc, .docx, .docm, .ppt, .pps,
|
|
11
|
+
# .ppsx, .ppsm, .pptx, .pptm, .xls, .xlsx, .xlsm, .rtf
|
|
12
|
+
#
|
|
13
|
+
# @param path [String] The path of the file to preview.
|
|
14
|
+
add_endpoint :get_preview do |path, &block|
|
|
15
|
+
perform_request({:path => path}, &block)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class GetTemporaryLink < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/get_temporary_link".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::GetTemporaryLinkResult
|
|
6
|
+
ErrorType = DropboxApi::Errors::GetMetadataError
|
|
7
|
+
|
|
8
|
+
# @method get_temporary_link(path)
|
|
9
|
+
# Get a temporary link to stream content of a file. This link will expire
|
|
10
|
+
# in four hours and afterwards you will get 410 Gone. Content-Type of the
|
|
11
|
+
# link is determined automatically by the file's mime type.
|
|
12
|
+
#
|
|
13
|
+
# @param path [String] The path to the file you want a temporary link to.
|
|
14
|
+
add_endpoint :get_temporary_link do |path|
|
|
15
|
+
perform_request({:path => path})
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class GetThumbnail < DropboxApi::Endpoints::ContentDownload
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/get_thumbnail".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::File
|
|
6
|
+
ErrorType = DropboxApi::Errors::PreviewError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method get_thumbnail(path, options = {})
|
|
11
|
+
# Get a thumbnail for an image.
|
|
12
|
+
#
|
|
13
|
+
# This method currently supports files with the following file extensions:
|
|
14
|
+
# jpg, jpeg, png, tiff, tif, gif and bmp. Photos that are larger than 20MB
|
|
15
|
+
# in size won't be converted to a thumbnail.
|
|
16
|
+
#
|
|
17
|
+
# @param path [String] The path to the image file you want to thumbnail.
|
|
18
|
+
# @option format [:jpeg, :png] The format for the thumbnail image, jpeg
|
|
19
|
+
# (default) or png. For images that are photos, jpeg should be preferred,
|
|
20
|
+
# while png is better for screenshots and digital arts. The default is
|
|
21
|
+
# :jpeg.
|
|
22
|
+
# @option size [:w32h32, :w64h64, :w128h128, :w640h480, :w1024h768] The
|
|
23
|
+
# size for the thumbnail image. The default is :w64h64
|
|
24
|
+
add_endpoint :get_thumbnail do |path, options = {}, &block|
|
|
25
|
+
validate_options([:format, :size], options)
|
|
26
|
+
options[:format] ||= :jpeg
|
|
27
|
+
options[:size] ||= :w64h64
|
|
28
|
+
|
|
29
|
+
perform_request(options.merge({
|
|
30
|
+
:path => path
|
|
31
|
+
}), &block)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class ListFolder < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/list_folder".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::ListFolderResult
|
|
6
|
+
ErrorType = DropboxApi::Errors::ListFolderError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method list_folder(path, options = {})
|
|
11
|
+
# Returns the contents of a folder.
|
|
12
|
+
#
|
|
13
|
+
# @param path [String] The path to the folder you want to read.
|
|
14
|
+
# @option recursive [Boolean] If `true`, the list folder operation will be
|
|
15
|
+
# applied recursively to all subfolders and the response will contain
|
|
16
|
+
# contents of all subfolders. The default for this field is `false`.
|
|
17
|
+
# @option include_media_info [Boolean] If `true`, FileMetadata.media_info
|
|
18
|
+
# is set for photo and video. The default for this field is `false`.
|
|
19
|
+
# @option include_deleted [Boolean] If `true`, DeletedMetadata will be
|
|
20
|
+
# returned for deleted file or folder, otherwise LookupError.not_found
|
|
21
|
+
# will be returned. The default for this field is `false`.
|
|
22
|
+
add_endpoint :list_folder do |path, options = {}|
|
|
23
|
+
validate_options([
|
|
24
|
+
:recursive,
|
|
25
|
+
:include_media_info,
|
|
26
|
+
:include_deleted,
|
|
27
|
+
:include_has_explicit_shared_members
|
|
28
|
+
], options)
|
|
29
|
+
options[:recursive] ||= false
|
|
30
|
+
options[:include_media_info] ||= false
|
|
31
|
+
options[:include_deleted] ||= false
|
|
32
|
+
|
|
33
|
+
perform_request options.merge({
|
|
34
|
+
:path => path
|
|
35
|
+
})
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class ListFolderContinue < DropboxApi::Endpoints::Rpc
|
|
3
|
+
# NOTE: This hasn't been tested with real data, I couldn't make a query
|
|
4
|
+
# long enough to enable the `has_more` attribute in the
|
|
5
|
+
# `ListFolderResult`.
|
|
6
|
+
Method = :post
|
|
7
|
+
Path = "/2/files/list_folder/continue".freeze
|
|
8
|
+
ResultType = DropboxApi::Results::ListFolderResult
|
|
9
|
+
ErrorType = DropboxApi::Errors::ListFolderContinueError
|
|
10
|
+
|
|
11
|
+
# @method list_folder_continue(cursor)
|
|
12
|
+
# Once a cursor has been retrieved from `list_folder`, use this to paginate
|
|
13
|
+
# through all files and retrieve updates to the folder.
|
|
14
|
+
#
|
|
15
|
+
# @param cursor [String] The cursor returned by your last call to
|
|
16
|
+
# list_folder or list_folder_continue.
|
|
17
|
+
add_endpoint :list_folder_continue do |cursor|
|
|
18
|
+
perform_request :cursor => cursor
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class ListFolderGetLatestCursor < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/list_folder/get_latest_cursor".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::ListFolderGetLatestCursorResult
|
|
6
|
+
ErrorType = DropboxApi::Errors::ListFolderError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method list_folder_get_latest_cursor(options)
|
|
11
|
+
# A way to quickly get a cursor for the folder's state. Unlike list_folder,
|
|
12
|
+
# list_folder_get_latest_cursor doesn't return any entries. This endpoint
|
|
13
|
+
# is for app which only needs to know about new files and modifications and
|
|
14
|
+
# doesn't need to know about files that already exist in Dropbox.
|
|
15
|
+
#
|
|
16
|
+
# @param path [String] The path to the folder you want to read.
|
|
17
|
+
# @option recursive [Boolean] If `true`, the list folder operation will be
|
|
18
|
+
# applied recursively to all subfolders and the response will contain
|
|
19
|
+
# contents of all subfolders. The default for this field is `false`.
|
|
20
|
+
# @option include_media_info [Boolean] If `true`, FileMetadata.media_info
|
|
21
|
+
# is set for photo and video. The default for this field is `false`.
|
|
22
|
+
# @option include_deleted [Boolean] If `true`, DeletedMetadata will be
|
|
23
|
+
# returned for deleted file or folder, otherwise LookupError.not_found
|
|
24
|
+
# will be returned. The default for this field is False.
|
|
25
|
+
add_endpoint :list_folder_get_latest_cursor do |options = {}|
|
|
26
|
+
validate_options([
|
|
27
|
+
:path,
|
|
28
|
+
:recursive,
|
|
29
|
+
:include_media_info,
|
|
30
|
+
:include_deleted,
|
|
31
|
+
:include_has_explicit_shared_members
|
|
32
|
+
], options)
|
|
33
|
+
options[:recursive] ||= false
|
|
34
|
+
options[:include_media_info] ||= false
|
|
35
|
+
options[:include_deleted] ||= false
|
|
36
|
+
|
|
37
|
+
perform_request options
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|