dropbox_api 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE +21 -0
  7. data/README.md +118 -0
  8. data/Rakefile +6 -0
  9. data/TODO.md +8 -0
  10. data/api_coverage.md +107 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +7 -0
  13. data/dropbox_api.gemspec +30 -0
  14. data/lib/dropbox_api.rb +102 -0
  15. data/lib/dropbox_api/authenticator.rb +20 -0
  16. data/lib/dropbox_api/client.rb +13 -0
  17. data/lib/dropbox_api/connection_builder.rb +17 -0
  18. data/lib/dropbox_api/endpoints/base.rb +44 -0
  19. data/lib/dropbox_api/endpoints/content_download.rb +33 -0
  20. data/lib/dropbox_api/endpoints/content_upload.rb +25 -0
  21. data/lib/dropbox_api/endpoints/files/copy.rb +22 -0
  22. data/lib/dropbox_api/endpoints/files/create_folder.rb +19 -0
  23. data/lib/dropbox_api/endpoints/files/delete.rb +25 -0
  24. data/lib/dropbox_api/endpoints/files/download.rb +16 -0
  25. data/lib/dropbox_api/endpoints/files/get_metadata.rb +29 -0
  26. data/lib/dropbox_api/endpoints/files/get_preview.rb +18 -0
  27. data/lib/dropbox_api/endpoints/files/get_temporary_link.rb +18 -0
  28. data/lib/dropbox_api/endpoints/files/get_thumbnail.rb +34 -0
  29. data/lib/dropbox_api/endpoints/files/list_folder.rb +38 -0
  30. data/lib/dropbox_api/endpoints/files/list_folder_continue.rb +21 -0
  31. data/lib/dropbox_api/endpoints/files/list_folder_get_latest_cursor.rb +40 -0
  32. data/lib/dropbox_api/endpoints/files/list_folder_longpoll.rb +36 -0
  33. data/lib/dropbox_api/endpoints/files/list_revisions.rb +27 -0
  34. data/lib/dropbox_api/endpoints/files/move.rb +22 -0
  35. data/lib/dropbox_api/endpoints/files/restore.rb +20 -0
  36. data/lib/dropbox_api/endpoints/files/search.rb +44 -0
  37. data/lib/dropbox_api/endpoints/files/upload.rb +26 -0
  38. data/lib/dropbox_api/endpoints/options_validator.rb +11 -0
  39. data/lib/dropbox_api/endpoints/rpc.rb +18 -0
  40. data/lib/dropbox_api/endpoints/rpc_notify.rb +11 -0
  41. data/lib/dropbox_api/endpoints/sharing/add_folder_member.rb +54 -0
  42. data/lib/dropbox_api/endpoints/sharing/create_shared_link_with_settings.rb +23 -0
  43. data/lib/dropbox_api/endpoints/sharing/list_folder_members.rb +31 -0
  44. data/lib/dropbox_api/endpoints/sharing/list_shared_links.rb +31 -0
  45. data/lib/dropbox_api/endpoints/sharing/share_folder.rb +58 -0
  46. data/lib/dropbox_api/endpoints/users/get_account.rb +17 -0
  47. data/lib/dropbox_api/errors/add_folder_member_error.rb +16 -0
  48. data/lib/dropbox_api/errors/add_member_selector_error.rb +11 -0
  49. data/lib/dropbox_api/errors/already_shared_error.rb +7 -0
  50. data/lib/dropbox_api/errors/basic_error.rb +83 -0
  51. data/lib/dropbox_api/errors/create_folder_error.rb +7 -0
  52. data/lib/dropbox_api/errors/create_shared_link_with_settings_error.rb +11 -0
  53. data/lib/dropbox_api/errors/delete_error.rb +8 -0
  54. data/lib/dropbox_api/errors/download_error.rb +7 -0
  55. data/lib/dropbox_api/errors/get_account_error.rb +7 -0
  56. data/lib/dropbox_api/errors/get_metadata_error.rb +7 -0
  57. data/lib/dropbox_api/errors/http_error.rb +6 -0
  58. data/lib/dropbox_api/errors/list_folder_continue_error.rb +8 -0
  59. data/lib/dropbox_api/errors/list_folder_error.rb +7 -0
  60. data/lib/dropbox_api/errors/list_folder_longpoll_error.rb +7 -0
  61. data/lib/dropbox_api/errors/list_revisions_error.rb +7 -0
  62. data/lib/dropbox_api/errors/list_shared_links_error.rb +8 -0
  63. data/lib/dropbox_api/errors/lookup_error.rb +11 -0
  64. data/lib/dropbox_api/errors/preview_error.rb +10 -0
  65. data/lib/dropbox_api/errors/relocation_error.rb +13 -0
  66. data/lib/dropbox_api/errors/restore_error.rb +9 -0
  67. data/lib/dropbox_api/errors/search_error.rb +7 -0
  68. data/lib/dropbox_api/errors/settings_error.rb +8 -0
  69. data/lib/dropbox_api/errors/share_folder_error.rb +11 -0
  70. data/lib/dropbox_api/errors/share_path_error.rb +17 -0
  71. data/lib/dropbox_api/errors/shared_folder_access_error.rb +10 -0
  72. data/lib/dropbox_api/errors/upload_error.rb +7 -0
  73. data/lib/dropbox_api/errors/upload_write_failed_error.rb +7 -0
  74. data/lib/dropbox_api/errors/write_conflict_error.rb +9 -0
  75. data/lib/dropbox_api/errors/write_error.rb +11 -0
  76. data/lib/dropbox_api/metadata/add_member.rb +62 -0
  77. data/lib/dropbox_api/metadata/base.rb +22 -0
  78. data/lib/dropbox_api/metadata/basic_account.rb +29 -0
  79. data/lib/dropbox_api/metadata/deleted.rb +15 -0
  80. data/lib/dropbox_api/metadata/field.rb +34 -0
  81. data/lib/dropbox_api/metadata/file.rb +30 -0
  82. data/lib/dropbox_api/metadata/file_link.rb +46 -0
  83. data/lib/dropbox_api/metadata/folder.rb +17 -0
  84. data/lib/dropbox_api/metadata/folder_link.rb +12 -0
  85. data/lib/dropbox_api/metadata/folder_sharing_info.rb +13 -0
  86. data/lib/dropbox_api/metadata/link_permissions.rb +19 -0
  87. data/lib/dropbox_api/metadata/name.rb +16 -0
  88. data/lib/dropbox_api/metadata/resource.rb +31 -0
  89. data/lib/dropbox_api/metadata/shared_folder.rb +26 -0
  90. data/lib/dropbox_api/metadata/shared_folder_policy.rb +12 -0
  91. data/lib/dropbox_api/metadata/shared_link.rb +26 -0
  92. data/lib/dropbox_api/metadata/team.rb +6 -0
  93. data/lib/dropbox_api/metadata/team_member_info.rb +17 -0
  94. data/lib/dropbox_api/middleware/decode_result.rb +26 -0
  95. data/lib/dropbox_api/result_builder.rb +31 -0
  96. data/lib/dropbox_api/results/base.rb +7 -0
  97. data/lib/dropbox_api/results/get_temporary_link_result.rb +11 -0
  98. data/lib/dropbox_api/results/list_folder_get_latest_cursor_result.rb +7 -0
  99. data/lib/dropbox_api/results/list_folder_longpoll_result.rb +15 -0
  100. data/lib/dropbox_api/results/list_folder_result.rb +22 -0
  101. data/lib/dropbox_api/results/list_revisions_result.rb +14 -0
  102. data/lib/dropbox_api/results/list_shared_links_result.rb +22 -0
  103. data/lib/dropbox_api/results/search/match.rb +15 -0
  104. data/lib/dropbox_api/results/search_result.rb +22 -0
  105. data/lib/dropbox_api/results/share_folder_launch.rb +14 -0
  106. data/lib/dropbox_api/results/shared_folder_members.rb +19 -0
  107. data/lib/dropbox_api/results/void_result.rb +4 -0
  108. data/lib/dropbox_api/version.rb +3 -0
  109. 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