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