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,36 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class ListFolderLongpoll < DropboxApi::Endpoints::RpcNotify
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/list_folder/longpoll".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::ListFolderLongpollResult
|
|
6
|
+
ErrorType = DropboxApi::Errors::ListFolderLongpollError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method list_folder_longpoll(path, options = {})
|
|
11
|
+
# A longpoll endpoint to wait for changes on an account. In conjunction
|
|
12
|
+
# with list_folder, this call gives you a low-latency way to monitor an
|
|
13
|
+
# account for file changes. The connection will block until there are
|
|
14
|
+
# changes available or a timeout occurs. This endpoint is useful mostly
|
|
15
|
+
# for client-side apps. If you're looking for server-side notifications,
|
|
16
|
+
# check out our webhooks documentation.
|
|
17
|
+
#
|
|
18
|
+
# @param cursor [String] A cursor as returned by list_folder or
|
|
19
|
+
# list_folder_continue.
|
|
20
|
+
# @option timeout [Numeric] A timeout in seconds. The request will block
|
|
21
|
+
# for at most this length of time, plus up to 90 seconds of random jitter
|
|
22
|
+
# added to avoid the thundering herd problem. Care should be taken when
|
|
23
|
+
# using this parameter, as some network infrastructure does not support
|
|
24
|
+
# long timeouts. The default for this field is 30.
|
|
25
|
+
add_endpoint :list_folder_longpoll do |cursor, options = {}|
|
|
26
|
+
validate_options([
|
|
27
|
+
:timeout
|
|
28
|
+
], options)
|
|
29
|
+
options[:timeout] ||= 30
|
|
30
|
+
|
|
31
|
+
perform_request options.merge({
|
|
32
|
+
:cursor => cursor
|
|
33
|
+
})
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class ListRevisions < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/list_revisions".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::ListRevisionsResult
|
|
6
|
+
ErrorType = DropboxApi::Errors::ListRevisionsError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method list_revisions(path, options = {})
|
|
11
|
+
# Return revisions of a file
|
|
12
|
+
#
|
|
13
|
+
# @param path [String] The path to file you want to see the revisions of.
|
|
14
|
+
# @option limit [Numeric] The maximum number of revision entries returned.
|
|
15
|
+
# The default for this field is 10.
|
|
16
|
+
add_endpoint :list_revisions do |path, options = {}|
|
|
17
|
+
validate_options([
|
|
18
|
+
:limit
|
|
19
|
+
], options)
|
|
20
|
+
options[:limit] ||= 10
|
|
21
|
+
|
|
22
|
+
perform_request options.merge({
|
|
23
|
+
:path => path
|
|
24
|
+
})
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class Move < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/move".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::Resource
|
|
6
|
+
ErrorType = DropboxApi::Errors::RelocationError
|
|
7
|
+
|
|
8
|
+
# @method move(from, to)
|
|
9
|
+
# Move a file or folder to a different location in the user's Dropbox.
|
|
10
|
+
#
|
|
11
|
+
# If the source path is a folder all its contents will be moved.
|
|
12
|
+
#
|
|
13
|
+
# @param from [String] Path in the user's Dropbox to be copied or moved.
|
|
14
|
+
# @param to [String] Path in the user's Dropbox that is the destination.
|
|
15
|
+
add_endpoint :move do |from, to|
|
|
16
|
+
perform_request({
|
|
17
|
+
:from_path => from,
|
|
18
|
+
:to_path => to
|
|
19
|
+
})
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class Restore < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/restore".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::File
|
|
6
|
+
ErrorType = DropboxApi::Errors::RestoreError
|
|
7
|
+
|
|
8
|
+
# @method restore(path, rev)
|
|
9
|
+
# Restore a file to a specific revision
|
|
10
|
+
#
|
|
11
|
+
# @param path [String] The path to the file you want to restore.
|
|
12
|
+
# @param rev [String] The revision to restore for the file.
|
|
13
|
+
add_endpoint :restore do |path, rev|
|
|
14
|
+
perform_request({
|
|
15
|
+
:path => path,
|
|
16
|
+
:rev => rev
|
|
17
|
+
})
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class Search < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/search".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::SearchResult
|
|
6
|
+
ErrorType = DropboxApi::Errors::SearchError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method search(query, path = "", options = {})
|
|
11
|
+
# Searches for files and folders.
|
|
12
|
+
#
|
|
13
|
+
# Note: Recent changes may not immediately be reflected in search results
|
|
14
|
+
# due to a short delay in indexing.
|
|
15
|
+
#
|
|
16
|
+
# @param query [String] The string to search for. The search string is
|
|
17
|
+
# split on spaces into multiple tokens. For file name searching, the last
|
|
18
|
+
# token is used for prefix matching (i.e. "bat c" matches "bat cave" but
|
|
19
|
+
# not "batman car").
|
|
20
|
+
# @param path [String] The path in the user's Dropbox to search.
|
|
21
|
+
# @option start [Numeric] The starting index within the search results
|
|
22
|
+
# (used for paging). The default for this field is 0.
|
|
23
|
+
# @option max_results [Numeric] The maximum number of search results to
|
|
24
|
+
# return. The default for this field is 100.
|
|
25
|
+
# @option mode [:filename, :filename_and_content, :deleted_filename] The
|
|
26
|
+
# search mode. Note that searching file content is only available for
|
|
27
|
+
# Dropbox Business accounts. The default is filename.
|
|
28
|
+
add_endpoint :search do |query, path = "", options = {}|
|
|
29
|
+
validate_options([
|
|
30
|
+
:start,
|
|
31
|
+
:max_results,
|
|
32
|
+
:mode
|
|
33
|
+
], options)
|
|
34
|
+
options[:start] ||= 0
|
|
35
|
+
options[:max_results] ||= 100
|
|
36
|
+
options[:mode] ||= :filename
|
|
37
|
+
|
|
38
|
+
perform_request options.merge({
|
|
39
|
+
:query => query,
|
|
40
|
+
:path => path
|
|
41
|
+
})
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Files
|
|
2
|
+
class Upload < DropboxApi::Endpoints::ContentUpload
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/files/upload".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::File
|
|
6
|
+
ErrorType = DropboxApi::Errors::UploadError
|
|
7
|
+
|
|
8
|
+
# @method upload(path)
|
|
9
|
+
# Create a new file with the contents provided in the request.
|
|
10
|
+
# Do not use this to upload a file larger than 150 MB. Instead, create an
|
|
11
|
+
# upload session with #upload_session_start().
|
|
12
|
+
#
|
|
13
|
+
# @param path [String] Path in the user's Dropbox to save the file.
|
|
14
|
+
# @option autorename [Boolean] If there's a conflict, as determined by
|
|
15
|
+
# mode, have the Dropbox server try to autorename the file to avoid
|
|
16
|
+
# conflict. The default for this field is False.
|
|
17
|
+
# @option mute [Boolean] Normally, users are made aware of any file
|
|
18
|
+
# modifications in their Dropbox account via notifications in the client
|
|
19
|
+
# software. If true, this tells the clients that this modification
|
|
20
|
+
# shouldn't result in a user notification. The default for this field is
|
|
21
|
+
# `false`.
|
|
22
|
+
add_endpoint :upload do |path, content, options = {}|
|
|
23
|
+
perform_request({:path => path}, content)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module DropboxApi::Endpoints
|
|
2
|
+
module OptionsValidator
|
|
3
|
+
def validate_options(valid_option_keys, options)
|
|
4
|
+
options.keys.each do |key|
|
|
5
|
+
unless valid_option_keys.include? key.to_sym
|
|
6
|
+
raise ArgumentError, "Invalid option `#{key}`"
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module DropboxApi::Endpoints
|
|
2
|
+
class Rpc < DropboxApi::Endpoints::Base
|
|
3
|
+
def initialize(builder)
|
|
4
|
+
@connection = builder.build("https://api.dropboxapi.com") do |c|
|
|
5
|
+
c.response :decode_result
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def build_request(params)
|
|
10
|
+
body = JSON.dump(params)
|
|
11
|
+
headers = {
|
|
12
|
+
'content-type' => 'application/json'
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return body, headers
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module DropboxApi::Endpoints
|
|
2
|
+
class RpcNotify < DropboxApi::Endpoints::Rpc
|
|
3
|
+
def initialize(builder)
|
|
4
|
+
@connection = builder.build("https://notify.dropboxapi.com") do |c|
|
|
5
|
+
c.headers.delete 'Authorization'
|
|
6
|
+
|
|
7
|
+
c.response :decode_result
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Sharing
|
|
2
|
+
class AddFolderMember < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/sharing/add_folder_member".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::VoidResult
|
|
6
|
+
ErrorType = DropboxApi::Errors::AddFolderMemberError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method add_folder_member(folder_id, members, options)
|
|
11
|
+
# Allows an owner or editor (if the ACL update policy allows) of a shared
|
|
12
|
+
# folder to add another member.
|
|
13
|
+
#
|
|
14
|
+
# For the new member to get access to all the functionality for this folder,
|
|
15
|
+
# you will need to call mount_folder on their behalf.
|
|
16
|
+
#
|
|
17
|
+
# Apps must have full Dropbox access to use this endpoint.
|
|
18
|
+
#
|
|
19
|
+
# @param folder_id [String] The ID for the shared folder.
|
|
20
|
+
# @param members [Array<AddMember,String>] The intended list of members to
|
|
21
|
+
# add. Added members will receive invites to join the shared folder.
|
|
22
|
+
# @option quiet [Boolean] Whether added members should be notified via
|
|
23
|
+
# email and device notifications of their invite. The default for this
|
|
24
|
+
# field is False.
|
|
25
|
+
# @option custom_message [String] Optional message to display to added
|
|
26
|
+
# members in their invitation. This field is optional.
|
|
27
|
+
add_endpoint :add_folder_member do |folder_id, members, options = {}|
|
|
28
|
+
# TODO: It should be possible to take an email (String) as the argument.
|
|
29
|
+
validate_options([:quiet, :custom_message], options)
|
|
30
|
+
options[:quiet] ||= false
|
|
31
|
+
options[:custom_message] ||= nil
|
|
32
|
+
|
|
33
|
+
perform_request options.merge({
|
|
34
|
+
:shared_folder_id => folder_id,
|
|
35
|
+
:members => build_members_param(members)
|
|
36
|
+
})
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def build_members_param(members)
|
|
42
|
+
members.map do |member|
|
|
43
|
+
case member
|
|
44
|
+
when String
|
|
45
|
+
DropboxApi::Metadata::AddMember.new member
|
|
46
|
+
when DropboxApi::Metadata::AddMember
|
|
47
|
+
member
|
|
48
|
+
else
|
|
49
|
+
raise ArgumentError, "Invalid argument type `#{member.class.name}`"
|
|
50
|
+
end
|
|
51
|
+
end.map(&:to_hash)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Sharing
|
|
2
|
+
class CreateSharedLinkWithSettings < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/sharing/create_shared_link_with_settings".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::SharedLink
|
|
6
|
+
ErrorType = DropboxApi::Errors::CreateSharedLinkWithSettingsError
|
|
7
|
+
|
|
8
|
+
# @method create_shared_link_with_settings(path, settings = {})
|
|
9
|
+
# Create a shared link with custom settings. If no settings are given then
|
|
10
|
+
# the default visibility is :public. (The resolved
|
|
11
|
+
# visibility, though, may depend on other aspects such as team and shared
|
|
12
|
+
# folder settings).
|
|
13
|
+
#
|
|
14
|
+
# @param path [String]
|
|
15
|
+
# @option settings [SharedLinkSettings]
|
|
16
|
+
# @return [DropboxApi::Metadata::SharedLink]
|
|
17
|
+
add_endpoint :create_shared_link_with_settings do |path, settings = {}|
|
|
18
|
+
# NOTE: This endpoint accepts an additional option `settings` which
|
|
19
|
+
# hasn't been implemented.
|
|
20
|
+
perform_request :path => path
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Sharing
|
|
2
|
+
class ListFolderMembers < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/sharing/list_folder_members".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::SharedFolderMembers
|
|
6
|
+
ErrorType = DropboxApi::Errors::SharedFolderAccessError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method list_folder_members(folder_id, actions, options)
|
|
11
|
+
# Returns shared folder membership by its folder ID.
|
|
12
|
+
#
|
|
13
|
+
# Apps must have full Dropbox access to use this endpoint.
|
|
14
|
+
#
|
|
15
|
+
# @param folder_id [String] The ID for the shared folder.
|
|
16
|
+
# @option limit [Numeric] The maximum number of results that include
|
|
17
|
+
# members, groups and invitees to return per request. The default for
|
|
18
|
+
# this field is 1000.
|
|
19
|
+
# @return [SharedFolderMembers] Shared folder user and group membership.
|
|
20
|
+
add_endpoint :list_folder_members do |folder_id, options = {}|
|
|
21
|
+
# NOTE: This endpoint accepts an additional option `actions` which hasn't
|
|
22
|
+
# been implemented.
|
|
23
|
+
validate_options([:limit], options)
|
|
24
|
+
options[:limit] ||= 100
|
|
25
|
+
|
|
26
|
+
perform_request options.merge({
|
|
27
|
+
:shared_folder_id => folder_id
|
|
28
|
+
})
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Sharing
|
|
2
|
+
class ListSharedLinks < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/sharing/list_shared_links".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::ListSharedLinksResult
|
|
6
|
+
ErrorType = DropboxApi::Errors::ListSharedLinksError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method list_shared_links(options)
|
|
11
|
+
# List shared links of this user.
|
|
12
|
+
#
|
|
13
|
+
# If no path is given or the path is empty, returns a list of all shared
|
|
14
|
+
# links for the current user.
|
|
15
|
+
#
|
|
16
|
+
# If a non-empty path is given, returns a list of all shared links that
|
|
17
|
+
# allow access to the given path - direct links to the given path and
|
|
18
|
+
# links to parent folders of the given path. Links to parent folders can
|
|
19
|
+
# be suppressed by setting direct_only to true.
|
|
20
|
+
#
|
|
21
|
+
# @option path [String]
|
|
22
|
+
# @option cursor [String] The cursor returned by your last call.
|
|
23
|
+
# @option direct_only [Boolean]
|
|
24
|
+
# @return [ListSharedLinksResult]
|
|
25
|
+
add_endpoint :list_shared_links do |options = {}|
|
|
26
|
+
validate_options([:path, :cursor, :direct_only], options)
|
|
27
|
+
|
|
28
|
+
perform_request options
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Sharing
|
|
2
|
+
class ShareFolder < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/sharing/share_folder".freeze
|
|
5
|
+
ResultType = DropboxApi::Results::ShareFolderLaunch
|
|
6
|
+
ErrorType = DropboxApi::Errors::ShareFolderError
|
|
7
|
+
|
|
8
|
+
include DropboxApi::Endpoints::OptionsValidator
|
|
9
|
+
|
|
10
|
+
# @method share_folder(path, options = {})
|
|
11
|
+
# Share a folder with collaborators.
|
|
12
|
+
#
|
|
13
|
+
# Most sharing will be completed synchronously. Large folders will be
|
|
14
|
+
# completed asynchronously. To make testing the async case repeatable, set
|
|
15
|
+
# `ShareFolderArg.force_async`.
|
|
16
|
+
#
|
|
17
|
+
# If a ShareFolderLaunch.async_job_id is returned, you'll need to call
|
|
18
|
+
# check_share_job_status until the action completes to get the metadata
|
|
19
|
+
# for the folder.
|
|
20
|
+
#
|
|
21
|
+
# Apps must have full Dropbox access to use this endpoint.
|
|
22
|
+
#
|
|
23
|
+
# @param path [String] The path to the folder to share. If it does not
|
|
24
|
+
# exist, then a new one is created.
|
|
25
|
+
# @option member_policy [:anyone, :team] Who can be a member of this shared
|
|
26
|
+
# folder. Only applicable if the current user is on a team. The default
|
|
27
|
+
# is `:anyone`.
|
|
28
|
+
# @option acl_update_policy [:owner, :editors] Who can add and remove
|
|
29
|
+
# members of this shared folder. The default is `:owner`.
|
|
30
|
+
# @option shared_link_policy [:anyone, :members] The policy to apply to
|
|
31
|
+
# shared links created for content inside this shared folder. The
|
|
32
|
+
# current user must be on a team to set this policy to `:members`.
|
|
33
|
+
# The default is `anyone`.
|
|
34
|
+
# @option force_async [Boolean] Whether to force the share to happen
|
|
35
|
+
# asynchronously. The default for this field is `false`.
|
|
36
|
+
# @return [ShareFolderLaunch] Shared folder metadata.
|
|
37
|
+
add_endpoint :share_folder do |path, options = {}|
|
|
38
|
+
validate_options([
|
|
39
|
+
:member_policy,
|
|
40
|
+
:acl_update_policy,
|
|
41
|
+
:shared_link_policy,
|
|
42
|
+
:force_async
|
|
43
|
+
], options)
|
|
44
|
+
options[:member_policy] ||= :anyone
|
|
45
|
+
options[:acl_update_policy] ||= :owner
|
|
46
|
+
options[:shared_link_policy] ||= :anyone
|
|
47
|
+
options[:force_async] ||= false
|
|
48
|
+
|
|
49
|
+
begin
|
|
50
|
+
perform_request options.merge({
|
|
51
|
+
:path => path
|
|
52
|
+
})
|
|
53
|
+
rescue DropboxApi::Errors::AlreadySharedError => error
|
|
54
|
+
error.shared_folder
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module DropboxApi::Endpoints::Users
|
|
2
|
+
class GetAccount < DropboxApi::Endpoints::Rpc
|
|
3
|
+
Method = :post
|
|
4
|
+
Path = "/2/users/get_account".freeze
|
|
5
|
+
ResultType = DropboxApi::Metadata::BasicAccount
|
|
6
|
+
ErrorType = DropboxApi::Errors::GetAccountError
|
|
7
|
+
|
|
8
|
+
# @method get_account(account_id)
|
|
9
|
+
# Get information about a user's account.
|
|
10
|
+
#
|
|
11
|
+
# @param account_id [String] A user's account identifier.
|
|
12
|
+
# @return [BasicAccount] Basic information about any account.
|
|
13
|
+
add_endpoint :get_account do |account_id|
|
|
14
|
+
perform_request :account_id => account_id
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|