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.
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