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