dropbox_api 0.1.16 → 0.1.20

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 (508) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +15 -0
  4. data/.travis.yml +0 -2
  5. data/Gemfile +6 -1
  6. data/README.md +120 -24
  7. data/Rakefile +4 -3
  8. data/TODO.md +16 -7
  9. data/api_coverage.md +8 -8
  10. data/bin/console +4 -3
  11. data/docs/DropboxApi/Authenticator.html +12 -12
  12. data/docs/DropboxApi/ChunkedUploader.html +20 -20
  13. data/docs/DropboxApi/Client.html +3097 -971
  14. data/docs/DropboxApi/ConnectionBuilder.html +16 -16
  15. data/docs/DropboxApi/Endpoints/Auth/TokenRevoke.html +10 -10
  16. data/docs/DropboxApi/Endpoints/Auth.html +6 -6
  17. data/docs/DropboxApi/Endpoints/Base.html +9 -9
  18. data/docs/DropboxApi/Endpoints/ContentDownload.html +19 -19
  19. data/docs/DropboxApi/Endpoints/ContentUpload.html +17 -17
  20. data/docs/DropboxApi/Endpoints/Files/Copy.html +12 -12
  21. data/docs/DropboxApi/Endpoints/Files/CopyBatch.html +359 -0
  22. data/docs/DropboxApi/Endpoints/Files/CopyBatchCheck.html +305 -0
  23. data/docs/DropboxApi/Endpoints/Files/CopyReferenceGet.html +11 -11
  24. data/docs/DropboxApi/Endpoints/Files/CopyReferenceSave.html +12 -12
  25. data/docs/DropboxApi/Endpoints/Files/CreateFileRequest.html +10 -10
  26. data/docs/DropboxApi/Endpoints/Files/CreateFolder.html +11 -11
  27. data/docs/DropboxApi/Endpoints/Files/CreateFolderBatch.html +377 -0
  28. data/docs/DropboxApi/Endpoints/Files/CreateFolderBatchCheck.html +308 -0
  29. data/docs/DropboxApi/Endpoints/Files/Delete.html +11 -11
  30. data/docs/DropboxApi/Endpoints/Files/DeleteBatch.html +305 -0
  31. data/docs/DropboxApi/Endpoints/Files/DeleteBatchCheck.html +307 -0
  32. data/docs/DropboxApi/Endpoints/Files/Download.html +11 -11
  33. data/docs/DropboxApi/Endpoints/Files/GetMetadata.html +11 -11
  34. data/docs/DropboxApi/Endpoints/Files/GetPreview.html +11 -11
  35. data/docs/DropboxApi/Endpoints/Files/GetTemporaryLink.html +11 -11
  36. data/docs/DropboxApi/Endpoints/Files/GetThumbnail.html +11 -11
  37. data/docs/DropboxApi/Endpoints/Files/GetThumbnailBatch.html +15 -15
  38. data/docs/DropboxApi/Endpoints/Files/ListFolder.html +36 -17
  39. data/docs/DropboxApi/Endpoints/Files/ListFolderContinue.html +11 -11
  40. data/docs/DropboxApi/Endpoints/Files/ListFolderGetLatestCursor.html +10 -10
  41. data/docs/DropboxApi/Endpoints/Files/ListFolderLongpoll.html +11 -11
  42. data/docs/DropboxApi/Endpoints/Files/ListRevisions.html +11 -11
  43. data/docs/DropboxApi/Endpoints/Files/Move.html +12 -12
  44. data/docs/DropboxApi/Endpoints/Files/PermanentlyDelete.html +11 -11
  45. data/docs/DropboxApi/Endpoints/Files/Restore.html +12 -12
  46. data/docs/DropboxApi/Endpoints/Files/SaveUrl.html +12 -12
  47. data/docs/DropboxApi/Endpoints/Files/SaveUrlCheckJobStatus.html +11 -11
  48. data/docs/DropboxApi/Endpoints/Files/Search.html +48 -96
  49. data/docs/DropboxApi/Endpoints/Files/Upload.html +11 -11
  50. data/docs/DropboxApi/Endpoints/Files/UploadSessionAppendV2.html +11 -11
  51. data/docs/DropboxApi/Endpoints/Files/UploadSessionFinish.html +12 -12
  52. data/docs/DropboxApi/Endpoints/Files/UploadSessionStart.html +12 -12
  53. data/docs/DropboxApi/Endpoints/Files.html +8 -8
  54. data/docs/DropboxApi/Endpoints/Rpc.html +18 -18
  55. data/docs/DropboxApi/Endpoints/RpcContent.html +11 -11
  56. data/docs/DropboxApi/Endpoints/RpcNotify.html +11 -11
  57. data/docs/DropboxApi/Endpoints/Sharing/AddFileMember.html +12 -12
  58. data/docs/DropboxApi/Endpoints/Sharing/AddFolderMember.html +12 -12
  59. data/docs/DropboxApi/Endpoints/Sharing/CreateSharedLinkWithSettings.html +107 -16
  60. data/docs/DropboxApi/Endpoints/Sharing/GetSharedLinkMetadata.html +11 -11
  61. data/docs/DropboxApi/Endpoints/Sharing/ListFileMembers.html +12 -12
  62. data/docs/DropboxApi/Endpoints/Sharing/ListFolderMembers.html +12 -12
  63. data/docs/DropboxApi/Endpoints/Sharing/ListSharedLinks.html +10 -10
  64. data/docs/DropboxApi/Endpoints/Sharing/RevokeSharedLink.html +293 -0
  65. data/docs/DropboxApi/Endpoints/Sharing/ShareFolder.html +11 -11
  66. data/docs/DropboxApi/Endpoints/Sharing/UnshareFile.html +11 -11
  67. data/docs/DropboxApi/Endpoints/Sharing.html +8 -8
  68. data/docs/DropboxApi/Endpoints/Users/GetAccount.html +11 -11
  69. data/docs/DropboxApi/Endpoints/Users/GetAccountBatch.html +11 -11
  70. data/docs/DropboxApi/Endpoints/Users/GetCurrentAccount.html +10 -10
  71. data/docs/DropboxApi/Endpoints/Users/GetSpaceUsage.html +10 -10
  72. data/docs/DropboxApi/Endpoints/Users.html +6 -6
  73. data/docs/DropboxApi/Endpoints.html +6 -6
  74. data/docs/DropboxApi/Errors/AddFileMemberError.html +10 -10
  75. data/docs/DropboxApi/Errors/AddFolderMemberError.html +16 -16
  76. data/docs/DropboxApi/Errors/AddMemberSelectorError.html +11 -11
  77. data/docs/DropboxApi/Errors/AlreadySharedError.html +9 -9
  78. data/docs/DropboxApi/Errors/BadPathError.html +6 -6
  79. data/docs/DropboxApi/Errors/BasicError.html +18 -18
  80. data/docs/DropboxApi/Errors/CantCopySharedFolderError.html +6 -6
  81. data/docs/DropboxApi/Errors/CantMoveFolderIntoItselfError.html +6 -6
  82. data/docs/DropboxApi/Errors/CantNestSharedFolderError.html +6 -6
  83. data/docs/DropboxApi/Errors/CantShareOutsideTeamError.html +6 -6
  84. data/docs/DropboxApi/Errors/ContainsSharedFolderError.html +6 -6
  85. data/docs/DropboxApi/Errors/ConversionError.html +6 -6
  86. data/docs/DropboxApi/Errors/CreateFileRequestError.html +6 -6
  87. data/docs/DropboxApi/Errors/CreateFolderBatchError.html +161 -0
  88. data/docs/DropboxApi/Errors/CreateFolderError.html +7 -7
  89. data/docs/DropboxApi/Errors/CreateSharedLinkWithSettingsError.html +11 -11
  90. data/docs/DropboxApi/Errors/CursorClosedError.html +6 -6
  91. data/docs/DropboxApi/Errors/CursorNotClosedError.html +6 -6
  92. data/docs/DropboxApi/Errors/DeleteError.html +9 -8
  93. data/docs/DropboxApi/Errors/DisallowedNameError.html +6 -6
  94. data/docs/DropboxApi/Errors/DisallowedSharedLinkPolicyError.html +6 -6
  95. data/docs/DropboxApi/Errors/DownloadError.html +7 -7
  96. data/docs/DropboxApi/Errors/DownloadFailedError.html +6 -6
  97. data/docs/DropboxApi/Errors/EmailUnverifiedError.html +6 -6
  98. data/docs/DropboxApi/Errors/FileAncestorConflictError.html +6 -6
  99. data/docs/DropboxApi/Errors/FileConflictError.html +6 -6
  100. data/docs/DropboxApi/Errors/FileMemberActionError.html +10 -10
  101. data/docs/DropboxApi/Errors/FolderConflictError.html +6 -6
  102. data/docs/DropboxApi/Errors/GetAccountError.html +7 -7
  103. data/docs/DropboxApi/Errors/GetCopyReferenceError.html +7 -7
  104. data/docs/DropboxApi/Errors/GetMetadataError.html +7 -7
  105. data/docs/DropboxApi/Errors/GroupDeletedError.html +6 -6
  106. data/docs/DropboxApi/Errors/GroupNotOnTeamError.html +6 -6
  107. data/docs/DropboxApi/Errors/HttpError.html +6 -6
  108. data/docs/DropboxApi/Errors/InProgressError.html +6 -6
  109. data/docs/DropboxApi/Errors/InsideAppFolderError.html +6 -6
  110. data/docs/DropboxApi/Errors/InsideOsxPackageError.html +6 -6
  111. data/docs/DropboxApi/Errors/InsidePublicFolderError.html +6 -6
  112. data/docs/DropboxApi/Errors/InsideSharedFolderError.html +6 -6
  113. data/docs/DropboxApi/Errors/InsufficientPlanError.html +6 -6
  114. data/docs/DropboxApi/Errors/InsufficientSpaceError.html +6 -6
  115. data/docs/DropboxApi/Errors/InternalError.html +6 -6
  116. data/docs/DropboxApi/Errors/InvalidCommentError.html +6 -6
  117. data/docs/DropboxApi/Errors/InvalidCopyReferenceError.html +6 -6
  118. data/docs/DropboxApi/Errors/InvalidCursorError.html +6 -6
  119. data/docs/DropboxApi/Errors/InvalidDropboxIdError.html +6 -6
  120. data/docs/DropboxApi/Errors/InvalidEmailError.html +6 -6
  121. data/docs/DropboxApi/Errors/InvalidFileError.html +6 -6
  122. data/docs/DropboxApi/Errors/InvalidIdError.html +6 -6
  123. data/docs/DropboxApi/Errors/InvalidMemberError.html +6 -6
  124. data/docs/DropboxApi/Errors/InvalidPathError.html +6 -6
  125. data/docs/DropboxApi/Errors/InvalidRevisionError.html +6 -6
  126. data/docs/DropboxApi/Errors/InvalidSettingsError.html +6 -6
  127. data/docs/DropboxApi/Errors/InvalidUrlError.html +6 -6
  128. data/docs/DropboxApi/Errors/IsAppFolderError.html +6 -6
  129. data/docs/DropboxApi/Errors/IsFileError.html +6 -6
  130. data/docs/DropboxApi/Errors/IsFolderError.html +6 -6
  131. data/docs/DropboxApi/Errors/IsOsxPackageError.html +6 -6
  132. data/docs/DropboxApi/Errors/IsPublicFolderError.html +6 -6
  133. data/docs/DropboxApi/Errors/ListFolderContinueError.html +8 -8
  134. data/docs/DropboxApi/Errors/ListFolderError.html +7 -7
  135. data/docs/DropboxApi/Errors/ListFolderLongpollError.html +7 -7
  136. data/docs/DropboxApi/Errors/ListRevisionsError.html +7 -7
  137. data/docs/DropboxApi/Errors/ListSharedLinksError.html +8 -8
  138. data/docs/DropboxApi/Errors/LookupError.html +11 -11
  139. data/docs/DropboxApi/Errors/MalformedPathError.html +6 -6
  140. data/docs/DropboxApi/Errors/NoAccountError.html +6 -6
  141. data/docs/DropboxApi/Errors/NoPermissionError.html +6 -6
  142. data/docs/DropboxApi/Errors/NoWritePermissionError.html +6 -6
  143. data/docs/DropboxApi/Errors/NotAMemberError.html +6 -6
  144. data/docs/DropboxApi/Errors/NotFileError.html +6 -6
  145. data/docs/DropboxApi/Errors/NotFolderError.html +6 -6
  146. data/docs/DropboxApi/Errors/NotFoundError.html +6 -6
  147. data/docs/DropboxApi/Errors/PollError.html +8 -8
  148. data/docs/DropboxApi/Errors/PreviewError.html +10 -10
  149. data/docs/DropboxApi/Errors/RateLimitError.html +6 -6
  150. data/docs/DropboxApi/Errors/RelocationBatchEntryError.html +163 -0
  151. data/docs/DropboxApi/Errors/RelocationError.html +13 -13
  152. data/docs/DropboxApi/Errors/RestoreError.html +9 -9
  153. data/docs/DropboxApi/Errors/RestrictedContentError.html +6 -6
  154. data/docs/DropboxApi/Errors/RevokeSharedLinkError.html +164 -0
  155. data/docs/DropboxApi/Errors/SaveCopyReferenceError.html +11 -11
  156. data/docs/DropboxApi/Errors/SaveUrlError.html +10 -10
  157. data/docs/DropboxApi/Errors/SearchError.html +7 -7
  158. data/docs/DropboxApi/Errors/SettingsError.html +8 -8
  159. data/docs/DropboxApi/Errors/ShareFolderError.html +11 -11
  160. data/docs/DropboxApi/Errors/SharePathError.html +17 -17
  161. data/docs/DropboxApi/Errors/SharedFolderAccessError.html +10 -10
  162. data/docs/DropboxApi/Errors/SharedLinkAccessDeniedError.html +6 -6
  163. data/docs/DropboxApi/Errors/SharedLinkAlreadyExistsError.html +6 -6
  164. data/docs/DropboxApi/Errors/SharedLinkError.html +9 -9
  165. data/docs/DropboxApi/Errors/SharedLinkMalformedError.html +143 -0
  166. data/docs/DropboxApi/Errors/SharedLinkNotFoundError.html +6 -6
  167. data/docs/DropboxApi/Errors/SharingFileAccessError.html +11 -11
  168. data/docs/DropboxApi/Errors/SharingUserError.html +7 -7
  169. data/docs/DropboxApi/Errors/TeamFolderError.html +6 -6
  170. data/docs/DropboxApi/Errors/TeamPolicyDisallowsMemberPolicyError.html +6 -6
  171. data/docs/DropboxApi/Errors/ThumbnailBatchError.html +7 -7
  172. data/docs/DropboxApi/Errors/ThumbnailError.html +10 -10
  173. data/docs/DropboxApi/Errors/TooManyFilesError.html +6 -6
  174. data/docs/DropboxApi/Errors/TooManyMembersError.html +6 -6
  175. data/docs/DropboxApi/Errors/TooManyPendingInvitesError.html +6 -6
  176. data/docs/DropboxApi/Errors/TooManyRequestsError.html +15 -15
  177. data/docs/DropboxApi/Errors/TooManySharedFolderTargetsError.html +6 -6
  178. data/docs/DropboxApi/Errors/TooManyWriteOperationsError.html +6 -6
  179. data/docs/DropboxApi/Errors/UnmountedError.html +6 -6
  180. data/docs/DropboxApi/Errors/UnshareFileError.html +8 -8
  181. data/docs/DropboxApi/Errors/UnsupportedContentError.html +6 -6
  182. data/docs/DropboxApi/Errors/UnsupportedExtensionError.html +6 -6
  183. data/docs/DropboxApi/Errors/UnsupportedImageError.html +6 -6
  184. data/docs/DropboxApi/Errors/UnsupportedLinkTypeError.html +6 -6
  185. data/docs/DropboxApi/Errors/UnverifiedDropboxId.html +6 -6
  186. data/docs/DropboxApi/Errors/UploadError.html +7 -7
  187. data/docs/DropboxApi/Errors/UploadSessionFinishError.html +9 -9
  188. data/docs/DropboxApi/Errors/UploadSessionLookupError.html +10 -10
  189. data/docs/DropboxApi/Errors/UploadSessionOffsetError.html +10 -10
  190. data/docs/DropboxApi/Errors/UploadWriteFailedError.html +7 -7
  191. data/docs/DropboxApi/Errors/WriteConflictError.html +9 -9
  192. data/docs/DropboxApi/Errors/WriteError.html +11 -11
  193. data/docs/DropboxApi/Errors.html +8 -8
  194. data/docs/DropboxApi/Metadata/AccessLevel.html +9 -9
  195. data/docs/DropboxApi/Metadata/AddFileMemberResult.html +6 -6
  196. data/docs/DropboxApi/Metadata/AddMember.html +11 -11
  197. data/docs/DropboxApi/Metadata/Base.html +24 -24
  198. data/docs/DropboxApi/Metadata/BasicAccount.html +6 -6
  199. data/docs/DropboxApi/Metadata/CommitInfo.html +9 -9
  200. data/docs/DropboxApi/Metadata/Deleted.html +6 -6
  201. data/docs/DropboxApi/Metadata/Dimensions.html +6 -6
  202. data/docs/DropboxApi/Metadata/Field.html +24 -20
  203. data/docs/DropboxApi/Metadata/File.html +10 -10
  204. data/docs/DropboxApi/Metadata/FileCategoriesList.html +205 -0
  205. data/docs/DropboxApi/Metadata/FileCategory.html +250 -0
  206. data/docs/DropboxApi/Metadata/FileExtensionsList.html +213 -0
  207. data/docs/DropboxApi/Metadata/FileLinkMetadata.html +6 -6
  208. data/docs/DropboxApi/Metadata/FileMemberAction.html +10 -10
  209. data/docs/DropboxApi/Metadata/FileRequest.html +6 -6
  210. data/docs/DropboxApi/Metadata/FileStatus.html +242 -0
  211. data/docs/DropboxApi/Metadata/Folder.html +10 -10
  212. data/docs/DropboxApi/Metadata/FolderLinkMetadata.html +6 -6
  213. data/docs/DropboxApi/Metadata/FolderSharingInfo.html +6 -6
  214. data/docs/DropboxApi/Metadata/LinkPermissions.html +6 -6
  215. data/docs/DropboxApi/Metadata/Location.html +6 -6
  216. data/docs/DropboxApi/Metadata/MediaInfo.html +9 -9
  217. data/docs/DropboxApi/Metadata/MediaMetadata.html +9 -9
  218. data/docs/DropboxApi/Metadata/Member.html +13 -13
  219. data/docs/DropboxApi/Metadata/MemberAction.html +9 -9
  220. data/docs/DropboxApi/Metadata/MemberActionList.html +9 -9
  221. data/docs/DropboxApi/Metadata/MemberPermission.html +6 -6
  222. data/docs/DropboxApi/Metadata/MemberPermissionList.html +10 -10
  223. data/docs/DropboxApi/Metadata/MetadataV2.html +140 -0
  224. data/docs/DropboxApi/Metadata/Name.html +6 -6
  225. data/docs/DropboxApi/Metadata/ParentFolderAccessInfo.html +6 -6
  226. data/docs/DropboxApi/Metadata/PhotoMetadata.html +6 -6
  227. data/docs/DropboxApi/Metadata/Resource.html +10 -10
  228. data/docs/DropboxApi/Metadata/SearchMatchFieldOptions.html +140 -0
  229. data/docs/DropboxApi/Metadata/SearchMatchTypeV2.html +244 -0
  230. data/docs/DropboxApi/Metadata/SearchMatchV2.html +216 -0
  231. data/docs/DropboxApi/Metadata/SearchOptions.html +140 -0
  232. data/docs/DropboxApi/Metadata/SearchOrderBy.html +242 -0
  233. data/docs/DropboxApi/Metadata/SharedFolder.html +6 -6
  234. data/docs/DropboxApi/Metadata/SharedFolderPolicy.html +6 -6
  235. data/docs/DropboxApi/Metadata/SharedLink.html +18 -18
  236. data/docs/DropboxApi/Metadata/SharedLinkMetadata.html +10 -10
  237. data/docs/DropboxApi/Metadata/SpaceAllocation.html +6 -6
  238. data/docs/DropboxApi/Metadata/SpaceUsage.html +6 -6
  239. data/docs/DropboxApi/Metadata/Tag.html +14 -14
  240. data/docs/DropboxApi/Metadata/Team.html +6 -6
  241. data/docs/DropboxApi/Metadata/TeamMemberInfo.html +6 -6
  242. data/docs/DropboxApi/Metadata/ThumbnailBatchResultData.html +6 -6
  243. data/docs/DropboxApi/Metadata/ThumbnailBatchResultEntry.html +11 -11
  244. data/docs/DropboxApi/Metadata/UploadSessionCursor.html +9 -9
  245. data/docs/DropboxApi/Metadata/VideoMetadata.html +6 -6
  246. data/docs/DropboxApi/Metadata/WriteMode.html +21 -21
  247. data/docs/DropboxApi/Metadata.html +8 -8
  248. data/docs/DropboxApi/MiddleWare/DecodeResult.html +13 -13
  249. data/docs/DropboxApi/MiddleWare/Stack.html +22 -22
  250. data/docs/DropboxApi/MiddleWare.html +6 -6
  251. data/docs/DropboxApi/OptionsValidator.html +10 -10
  252. data/docs/DropboxApi/ResultBuilder.html +30 -30
  253. data/docs/DropboxApi/Results/AddFileMemberResultList.html +10 -10
  254. data/docs/DropboxApi/Results/Base.html +11 -11
  255. data/docs/DropboxApi/Results/BasicAccountBatch.html +10 -10
  256. data/docs/DropboxApi/Results/CopyBatchResult.html +224 -0
  257. data/docs/DropboxApi/Results/CreateFolderBatchResult.html +241 -0
  258. data/docs/DropboxApi/Results/CreateFolderBatchResultEntry.html +234 -0
  259. data/docs/DropboxApi/Results/DeleteBatchResult.html +241 -0
  260. data/docs/DropboxApi/Results/DeleteBatchResultEntry.html +226 -0
  261. data/docs/DropboxApi/Results/GetCopyReferenceResult.html +18 -18
  262. data/docs/DropboxApi/Results/GetTemporaryLinkResult.html +14 -14
  263. data/docs/DropboxApi/Results/GetThumbnailBatchResult.html +10 -10
  264. data/docs/DropboxApi/Results/ListFolderGetLatestCursorResult.html +10 -10
  265. data/docs/DropboxApi/Results/ListFolderLongpollResult.html +14 -14
  266. data/docs/DropboxApi/Results/ListFolderResult.html +18 -18
  267. data/docs/DropboxApi/Results/ListRevisionsResult.html +14 -14
  268. data/docs/DropboxApi/Results/ListSharedLinksResult.html +18 -18
  269. data/docs/DropboxApi/Results/RelocationBatchResult.html +241 -0
  270. data/docs/DropboxApi/Results/RelocationBatchResultEntry.html +226 -0
  271. data/docs/DropboxApi/Results/SaveCopyReferenceResult.html +10 -10
  272. data/docs/DropboxApi/Results/SaveUrlJobStatus.html +15 -15
  273. data/docs/DropboxApi/Results/SaveUrlResult.html +10 -10
  274. data/docs/DropboxApi/Results/Search/Match.html +18 -18
  275. data/docs/DropboxApi/Results/Search.html +6 -6
  276. data/docs/DropboxApi/Results/SearchResult.html +3 -3
  277. data/docs/DropboxApi/Results/SearchV2Result.html +368 -0
  278. data/docs/DropboxApi/Results/ShareFolderLaunch.html +12 -12
  279. data/docs/DropboxApi/Results/SharedFileMembers.html +22 -22
  280. data/docs/DropboxApi/Results/SharedFolderMembers.html +22 -22
  281. data/docs/DropboxApi/Results/UploadSessionStart.html +10 -10
  282. data/docs/DropboxApi/Results/VoidResult.html +6 -6
  283. data/docs/DropboxApi/Results.html +8 -8
  284. data/docs/DropboxApi.html +7 -7
  285. data/docs/DropboxScaffoldBuilder.html +269 -102
  286. data/docs/_index.html +208 -12
  287. data/docs/class_list.html +3 -3
  288. data/docs/css/common.css +3 -0
  289. data/docs/css/style.css +3 -2
  290. data/docs/file.README.html +28 -23
  291. data/docs/file.api_coverage.html +21 -21
  292. data/docs/file.rails_setup.html +10 -10
  293. data/docs/file_list.html +2 -2
  294. data/docs/frames.html +2 -2
  295. data/docs/index.html +28 -23
  296. data/docs/js/app.js +25 -3
  297. data/docs/method_list.html +538 -290
  298. data/docs/top-level-namespace.html +6 -6
  299. data/dropbox_api.gemspec +15 -16
  300. data/lib/dropbox_api/authenticator.rb +5 -8
  301. data/lib/dropbox_api/chunked_uploader.rb +2 -1
  302. data/lib/dropbox_api/client.rb +24 -2
  303. data/lib/dropbox_api/connection_builder.rb +39 -4
  304. data/lib/dropbox_api/endpoints/auth/token_revoke.rb +2 -1
  305. data/lib/dropbox_api/endpoints/base.rb +31 -5
  306. data/lib/dropbox_api/endpoints/content_download.rb +5 -7
  307. data/lib/dropbox_api/endpoints/content_upload.rb +3 -2
  308. data/lib/dropbox_api/endpoints/file_requests/create_file_request.rb +2 -1
  309. data/lib/dropbox_api/endpoints/files/copy.rb +4 -3
  310. data/lib/dropbox_api/endpoints/files/copy_batch.rb +36 -0
  311. data/lib/dropbox_api/endpoints/files/copy_batch_check.rb +21 -0
  312. data/lib/dropbox_api/endpoints/files/copy_reference_get.rb +3 -2
  313. data/lib/dropbox_api/endpoints/files/copy_reference_save.rb +4 -3
  314. data/lib/dropbox_api/endpoints/files/create_folder.rb +3 -2
  315. data/lib/dropbox_api/endpoints/files/create_folder_batch.rb +41 -0
  316. data/lib/dropbox_api/endpoints/files/create_folder_batch_check.rb +22 -0
  317. data/lib/dropbox_api/endpoints/files/delete.rb +3 -2
  318. data/lib/dropbox_api/endpoints/files/delete_batch.rb +23 -0
  319. data/lib/dropbox_api/endpoints/files/delete_batch_check.rb +21 -0
  320. data/lib/dropbox_api/endpoints/files/download.rb +3 -2
  321. data/lib/dropbox_api/endpoints/files/get_metadata.rb +3 -2
  322. data/lib/dropbox_api/endpoints/files/get_preview.rb +3 -2
  323. data/lib/dropbox_api/endpoints/files/get_temporary_link.rb +3 -2
  324. data/lib/dropbox_api/endpoints/files/get_thumbnail.rb +3 -2
  325. data/lib/dropbox_api/endpoints/files/get_thumbnail_batch.rb +4 -3
  326. data/lib/dropbox_api/endpoints/files/list_folder.rb +3 -2
  327. data/lib/dropbox_api/endpoints/files/list_folder_continue.rb +3 -2
  328. data/lib/dropbox_api/endpoints/files/list_folder_get_latest_cursor.rb +2 -1
  329. data/lib/dropbox_api/endpoints/files/list_folder_longpoll.rb +3 -2
  330. data/lib/dropbox_api/endpoints/files/list_revisions.rb +3 -2
  331. data/lib/dropbox_api/endpoints/files/move.rb +4 -3
  332. data/lib/dropbox_api/endpoints/files/permanently_delete.rb +3 -2
  333. data/lib/dropbox_api/endpoints/files/restore.rb +4 -3
  334. data/lib/dropbox_api/endpoints/files/save_url.rb +4 -3
  335. data/lib/dropbox_api/endpoints/files/save_url_check_job_status.rb +3 -2
  336. data/lib/dropbox_api/endpoints/files/search.rb +16 -27
  337. data/lib/dropbox_api/endpoints/files/search_continue.rb +23 -0
  338. data/lib/dropbox_api/endpoints/files/upload.rb +3 -2
  339. data/lib/dropbox_api/endpoints/files/upload_session_append_v2.rb +3 -2
  340. data/lib/dropbox_api/endpoints/files/upload_session_finish.rb +4 -3
  341. data/lib/dropbox_api/endpoints/files/upload_session_start.rb +4 -3
  342. data/lib/dropbox_api/endpoints/rpc.rb +3 -2
  343. data/lib/dropbox_api/endpoints/rpc_content.rb +3 -2
  344. data/lib/dropbox_api/endpoints/rpc_notify.rb +3 -2
  345. data/lib/dropbox_api/endpoints/sharing/add_file_member.rb +4 -3
  346. data/lib/dropbox_api/endpoints/sharing/add_folder_member.rb +4 -3
  347. data/lib/dropbox_api/endpoints/sharing/create_shared_link_with_settings.rb +4 -3
  348. data/lib/dropbox_api/endpoints/sharing/get_shared_link_metadata.rb +3 -2
  349. data/lib/dropbox_api/endpoints/sharing/list_file_members.rb +4 -3
  350. data/lib/dropbox_api/endpoints/sharing/list_folder_members.rb +4 -3
  351. data/lib/dropbox_api/endpoints/sharing/list_shared_links.rb +2 -1
  352. data/lib/dropbox_api/endpoints/sharing/revoke_shared_link.rb +3 -2
  353. data/lib/dropbox_api/endpoints/sharing/share_folder.rb +3 -2
  354. data/lib/dropbox_api/endpoints/sharing/unshare_file.rb +3 -2
  355. data/lib/dropbox_api/endpoints/users/get_account.rb +3 -2
  356. data/lib/dropbox_api/endpoints/users/get_account_batch.rb +3 -2
  357. data/lib/dropbox_api/endpoints/users/get_current_account.rb +2 -1
  358. data/lib/dropbox_api/endpoints/users/get_space_usage.rb +2 -1
  359. data/lib/dropbox_api/endpoints/virtual/upload_by_chunks.rb +1 -0
  360. data/lib/dropbox_api/errors/add_file_member_error.rb +5 -4
  361. data/lib/dropbox_api/errors/add_folder_member_error.rb +11 -10
  362. data/lib/dropbox_api/errors/add_member_selector_error.rb +6 -5
  363. data/lib/dropbox_api/errors/already_shared_error.rb +1 -0
  364. data/lib/dropbox_api/errors/basic_error.rb +2 -1
  365. data/lib/dropbox_api/errors/create_file_request_error.rb +1 -0
  366. data/lib/dropbox_api/errors/create_folder_batch_error.rb +8 -0
  367. data/lib/dropbox_api/errors/create_folder_error.rb +2 -1
  368. data/lib/dropbox_api/errors/create_shared_link_with_settings_error.rb +6 -5
  369. data/lib/dropbox_api/errors/delete_error.rb +5 -3
  370. data/lib/dropbox_api/errors/download_error.rb +2 -1
  371. data/lib/dropbox_api/errors/expired_access_token_error.rb +5 -0
  372. data/lib/dropbox_api/errors/file_member_action_error.rb +5 -4
  373. data/lib/dropbox_api/errors/get_account_error.rb +2 -1
  374. data/lib/dropbox_api/errors/get_copy_reference_error.rb +2 -1
  375. data/lib/dropbox_api/errors/get_metadata_error.rb +2 -1
  376. data/lib/dropbox_api/errors/http_error.rb +1 -0
  377. data/lib/dropbox_api/errors/list_folder_continue_error.rb +3 -2
  378. data/lib/dropbox_api/errors/list_folder_error.rb +2 -1
  379. data/lib/dropbox_api/errors/list_folder_longpoll_error.rb +2 -1
  380. data/lib/dropbox_api/errors/list_revisions_error.rb +2 -1
  381. data/lib/dropbox_api/errors/list_shared_links_error.rb +3 -2
  382. data/lib/dropbox_api/errors/lookup_error.rb +6 -5
  383. data/lib/dropbox_api/errors/poll_error.rb +3 -2
  384. data/lib/dropbox_api/errors/preview_error.rb +5 -4
  385. data/lib/dropbox_api/errors/relocation_batch_entry_error.rb +10 -0
  386. data/lib/dropbox_api/errors/relocation_error.rb +8 -7
  387. data/lib/dropbox_api/errors/restore_error.rb +4 -3
  388. data/lib/dropbox_api/errors/revoke_shared_link_error.rb +5 -4
  389. data/lib/dropbox_api/errors/save_copy_reference_error.rb +6 -5
  390. data/lib/dropbox_api/errors/save_url_error.rb +5 -4
  391. data/lib/dropbox_api/errors/search_error.rb +2 -1
  392. data/lib/dropbox_api/errors/settings_error.rb +3 -2
  393. data/lib/dropbox_api/errors/share_folder_error.rb +6 -5
  394. data/lib/dropbox_api/errors/share_path_error.rb +12 -11
  395. data/lib/dropbox_api/errors/shared_folder_access_error.rb +5 -4
  396. data/lib/dropbox_api/errors/shared_link_error.rb +4 -3
  397. data/lib/dropbox_api/errors/sharing_file_access_error.rb +6 -5
  398. data/lib/dropbox_api/errors/sharing_user_error.rb +2 -1
  399. data/lib/dropbox_api/errors/thumbnail_batch_error.rb +2 -1
  400. data/lib/dropbox_api/errors/thumbnail_error.rb +5 -4
  401. data/lib/dropbox_api/errors/too_many_requests_error.rb +3 -2
  402. data/lib/dropbox_api/errors/unshare_file_error.rb +3 -2
  403. data/lib/dropbox_api/errors/upload_error.rb +2 -1
  404. data/lib/dropbox_api/errors/upload_session_finish_error.rb +4 -3
  405. data/lib/dropbox_api/errors/upload_session_lookup_error.rb +5 -4
  406. data/lib/dropbox_api/errors/upload_session_offset_error.rb +1 -0
  407. data/lib/dropbox_api/errors/upload_write_failed_error.rb +2 -1
  408. data/lib/dropbox_api/errors/write_conflict_error.rb +4 -3
  409. data/lib/dropbox_api/errors/write_error.rb +6 -5
  410. data/lib/dropbox_api/metadata/access_level.rb +1 -0
  411. data/lib/dropbox_api/metadata/add_file_member_result.rb +1 -0
  412. data/lib/dropbox_api/metadata/add_member.rb +3 -2
  413. data/lib/dropbox_api/metadata/base.rb +2 -1
  414. data/lib/dropbox_api/metadata/basic_account.rb +8 -1
  415. data/lib/dropbox_api/metadata/commit_info.rb +2 -1
  416. data/lib/dropbox_api/metadata/deleted.rb +1 -0
  417. data/lib/dropbox_api/metadata/dimensions.rb +1 -0
  418. data/lib/dropbox_api/metadata/field.rb +7 -4
  419. data/lib/dropbox_api/metadata/file.rb +2 -1
  420. data/lib/dropbox_api/metadata/file_categories_list.rb +9 -0
  421. data/lib/dropbox_api/metadata/file_category.rb +22 -0
  422. data/lib/dropbox_api/metadata/file_extensions_list.rb +13 -0
  423. data/lib/dropbox_api/metadata/file_link_metadata.rb +1 -0
  424. data/lib/dropbox_api/metadata/file_member_action.rb +2 -1
  425. data/lib/dropbox_api/metadata/file_request.rb +1 -0
  426. data/lib/dropbox_api/metadata/file_status.rb +14 -0
  427. data/lib/dropbox_api/metadata/folder.rb +2 -1
  428. data/lib/dropbox_api/metadata/folder_link_metadata.rb +1 -0
  429. data/lib/dropbox_api/metadata/folder_sharing_info.rb +1 -0
  430. data/lib/dropbox_api/metadata/link_permissions.rb +1 -0
  431. data/lib/dropbox_api/metadata/location.rb +1 -0
  432. data/lib/dropbox_api/metadata/media_info.rb +1 -0
  433. data/lib/dropbox_api/metadata/media_metadata.rb +1 -0
  434. data/lib/dropbox_api/metadata/member.rb +6 -5
  435. data/lib/dropbox_api/metadata/member_action.rb +1 -0
  436. data/lib/dropbox_api/metadata/member_action_list.rb +1 -0
  437. data/lib/dropbox_api/metadata/member_permission.rb +1 -0
  438. data/lib/dropbox_api/metadata/member_permission_list.rb +1 -0
  439. data/lib/dropbox_api/metadata/metadata_v2.rb +7 -0
  440. data/lib/dropbox_api/metadata/name.rb +1 -0
  441. data/lib/dropbox_api/metadata/namespace_id.rb +10 -0
  442. data/lib/dropbox_api/metadata/parent_folder_access_info.rb +1 -0
  443. data/lib/dropbox_api/metadata/photo_metadata.rb +1 -0
  444. data/lib/dropbox_api/metadata/resource.rb +2 -1
  445. data/lib/dropbox_api/metadata/root_info.rb +32 -0
  446. data/lib/dropbox_api/metadata/search_match_field_options.rb +9 -0
  447. data/lib/dropbox_api/metadata/search_match_type_v2.rb +16 -0
  448. data/lib/dropbox_api/metadata/search_match_v2.rb +18 -0
  449. data/lib/dropbox_api/metadata/search_options.rb +33 -0
  450. data/lib/dropbox_api/metadata/search_order_by.rb +14 -0
  451. data/lib/dropbox_api/metadata/shared_folder.rb +1 -0
  452. data/lib/dropbox_api/metadata/shared_folder_policy.rb +1 -0
  453. data/lib/dropbox_api/metadata/shared_link.rb +3 -2
  454. data/lib/dropbox_api/metadata/shared_link_metadata.rb +2 -1
  455. data/lib/dropbox_api/metadata/space_allocation.rb +1 -0
  456. data/lib/dropbox_api/metadata/space_usage.rb +1 -0
  457. data/lib/dropbox_api/metadata/tag.rb +2 -1
  458. data/lib/dropbox_api/metadata/team.rb +1 -0
  459. data/lib/dropbox_api/metadata/team_member_info.rb +1 -0
  460. data/lib/dropbox_api/metadata/team_root_info.rb +8 -0
  461. data/lib/dropbox_api/metadata/thumbnail_batch_result_data.rb +1 -0
  462. data/lib/dropbox_api/metadata/thumbnail_batch_result_entry.rb +3 -2
  463. data/lib/dropbox_api/metadata/upload_session_cursor.rb +1 -0
  464. data/lib/dropbox_api/metadata/user_root_info.rb +7 -0
  465. data/lib/dropbox_api/metadata/video_metadata.rb +1 -0
  466. data/lib/dropbox_api/metadata/write_mode.rb +6 -5
  467. data/lib/dropbox_api/middleware/decode_result.rb +3 -2
  468. data/lib/dropbox_api/middleware/path_root.rb +35 -0
  469. data/lib/dropbox_api/middleware/stack.rb +1 -0
  470. data/lib/dropbox_api/options_validator.rb +1 -0
  471. data/lib/dropbox_api/result_builder.rb +3 -2
  472. data/lib/dropbox_api/results/add_file_member_result_list.rb +1 -0
  473. data/lib/dropbox_api/results/base.rb +1 -0
  474. data/lib/dropbox_api/results/basic_account_batch.rb +1 -0
  475. data/lib/dropbox_api/results/copy_batch_result.rb +15 -0
  476. data/lib/dropbox_api/results/create_folder_batch_result.rb +21 -0
  477. data/lib/dropbox_api/results/create_folder_batch_result_entry.rb +20 -0
  478. data/lib/dropbox_api/results/delete_batch_result.rb +21 -0
  479. data/lib/dropbox_api/results/delete_batch_result_entry.rb +16 -0
  480. data/lib/dropbox_api/results/get_copy_reference_result.rb +4 -3
  481. data/lib/dropbox_api/results/get_temporary_link_result.rb +3 -2
  482. data/lib/dropbox_api/results/get_thumbnail_batch_result.rb +2 -1
  483. data/lib/dropbox_api/results/list_folder_get_latest_cursor_result.rb +2 -1
  484. data/lib/dropbox_api/results/list_folder_longpoll_result.rb +3 -2
  485. data/lib/dropbox_api/results/list_folder_result.rb +4 -3
  486. data/lib/dropbox_api/results/list_revisions_result.rb +3 -2
  487. data/lib/dropbox_api/results/list_shared_links_result.rb +4 -3
  488. data/lib/dropbox_api/results/relocation_batch_result.rb +21 -0
  489. data/lib/dropbox_api/results/relocation_batch_result_entry.rb +16 -0
  490. data/lib/dropbox_api/results/save_copy_reference_result.rb +2 -1
  491. data/lib/dropbox_api/results/save_url_job_status.rb +7 -6
  492. data/lib/dropbox_api/results/save_url_result.rb +2 -1
  493. data/lib/dropbox_api/results/search/match.rb +3 -2
  494. data/lib/dropbox_api/results/search_v2_result.rb +23 -0
  495. data/lib/dropbox_api/results/share_folder_launch.rb +4 -3
  496. data/lib/dropbox_api/results/shared_file_members.rb +5 -4
  497. data/lib/dropbox_api/results/shared_folder_members.rb +5 -4
  498. data/lib/dropbox_api/results/upload_session_start.rb +2 -1
  499. data/lib/dropbox_api/results/void_result.rb +1 -0
  500. data/lib/dropbox_api/version.rb +2 -1
  501. data/lib/dropbox_api.rb +38 -6
  502. data/yardoc/endpoint_handler.rb +2 -1
  503. data/yardoc/helpers/html_helper.rb +2 -1
  504. data/yardoc/rspec.rb +3 -2
  505. data/yardoc/templates/default/method_details/setup.rb +1 -0
  506. metadata +82 -28
  507. data/CHANGES.md +0 -7
  508. data/lib/dropbox_api/results/search_result.rb +0 -22
@@ -6,15 +6,15 @@
6
6
  <title>
7
7
  Top Level Namespace
8
8
 
9
- &mdash; Documentation by YARD 0.9.15
9
+ &mdash; Documentation by YARD 0.9.26
10
10
 
11
11
  </title>
12
12
 
13
- <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" />
14
14
 
15
- <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
16
16
 
17
- <script type="text/javascript" charset="utf-8">
17
+ <script type="text/javascript">
18
18
  pathId = "";
19
19
  relpath = '';
20
20
  </script>
@@ -102,9 +102,9 @@
102
102
  </div>
103
103
 
104
104
  <div id="footer">
105
- Generated on Fri Nov 16 09:02:01 2018 by
105
+ Generated on Sun Feb 7 11:51:54 2021 by
106
106
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
107
- 0.9.15 (ruby-2.3.3).
107
+ 0.9.26 (ruby-2.5.1).
108
108
  </div>
109
109
 
110
110
  </div>
data/dropbox_api.gemspec CHANGED
@@ -1,30 +1,29 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'dropbox_api/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "dropbox_api"
8
+ spec.name = 'dropbox_api'
8
9
  spec.version = DropboxApi::VERSION
9
- spec.authors = ["Jesús Burgos"]
10
- spec.email = ["jburmac@gmail.com"]
10
+ spec.authors = ['Jesús Burgos']
11
+ spec.email = ['jburmac@gmail.com']
11
12
 
12
- spec.summary = "Library for communicating with Dropbox API v2"
13
- spec.homepage = "https://github.com/Jesus/dropbox_api"
14
- spec.license = "MIT"
13
+ spec.summary = 'Library for communicating with Dropbox API v2'
14
+ spec.homepage = 'https://github.com/Jesus/dropbox_api'
15
+ spec.license = 'MIT'
15
16
 
16
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
18
 
18
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
19
20
 
20
- spec.has_rdoc = "yard"
21
+ spec.add_development_dependency 'bundler', '>= 1.7'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'rspec'
24
+ spec.add_development_dependency 'vcr'
25
+ spec.add_development_dependency 'webmock'
21
26
 
22
- spec.add_development_dependency "bundler", ">= 1.7"
23
- spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec"
25
- spec.add_development_dependency "vcr"
26
- spec.add_development_dependency "webmock"
27
-
28
- spec.add_dependency "oauth2", "~> 1.1"
29
- spec.add_dependency "faraday", ">= 0.8", "<= 0.15.4"
27
+ spec.add_dependency 'faraday', '~> 1.0'
28
+ spec.add_dependency 'oauth2', '~> 1.1'
30
29
  end
@@ -1,16 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  require 'oauth2'
2
3
 
3
4
  module DropboxApi
4
5
  class Authenticator < OAuth2::Client
5
- extend Forwardable
6
-
7
6
  def initialize(client_id, client_secret)
8
- @auth_code = OAuth2::Client.new(client_id, client_secret, {
9
- :authorize_url => 'https://www.dropbox.com/oauth2/authorize',
10
- :token_url => 'https://api.dropboxapi.com/oauth2/token'
11
- }).auth_code
7
+ super(client_id, client_secret, {
8
+ authorize_url: 'https://www.dropbox.com/oauth2/authorize',
9
+ token_url: 'https://api.dropboxapi.com/oauth2/token'
10
+ })
12
11
  end
13
-
14
- def_delegators :@auth_code, :authorize_url, :get_token
15
12
  end
16
13
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi
2
3
  class ChunkedUploader
3
4
  include DropboxApi::OptionsValidator
@@ -13,7 +14,7 @@ module DropboxApi
13
14
 
14
15
  def start
15
16
  chunk = @i_stream.read @chunk_size
16
- chunk = "" if chunk.nil?
17
+ chunk = '' if chunk.nil?
17
18
 
18
19
  @cursor = @client.upload_session_start chunk
19
20
  end
@@ -1,13 +1,35 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi
2
3
  class Client
3
- def initialize(oauth_bearer = ENV["DROPBOX_OAUTH_BEARER"])
4
- @connection_builder = ConnectionBuilder.new(oauth_bearer)
4
+ def initialize(
5
+ oauth_bearer = ENV['DROPBOX_OAUTH_BEARER'],
6
+ access_token: nil,
7
+ on_token_refreshed: nil
8
+ )
9
+ if access_token
10
+ @connection_builder = ConnectionBuilder.new(
11
+ access_token: access_token,
12
+ on_token_refreshed: on_token_refreshed
13
+ )
14
+ elsif oauth_bearer
15
+ @connection_builder = ConnectionBuilder.new(oauth_bearer)
16
+ else
17
+ raise ArgumentError, "Either oauth_bearer or access_token should be set"
18
+ end
5
19
  end
6
20
 
7
21
  def middleware
8
22
  @connection_builder.middleware
9
23
  end
10
24
 
25
+ def namespace_id=(value)
26
+ @connection_builder.namespace_id = value
27
+ end
28
+
29
+ def namespace_id
30
+ @connection_builder.namespace_id
31
+ end
32
+
11
33
  # @!visibility private
12
34
  def self.add_endpoint(name, endpoint)
13
35
  define_method(name) do |*args, &block|
@@ -1,18 +1,53 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi
2
3
  class ConnectionBuilder
3
- def initialize(oauth_bearer)
4
- @oauth_bearer = oauth_bearer
4
+ attr_accessor :namespace_id
5
+
6
+ def initialize(oauth_bearer = nil, access_token: nil, on_token_refreshed: nil)
7
+ if access_token
8
+ if !access_token.is_a?(OAuth2::AccessToken)
9
+ raise ArgumentError, "access_token should be an OAuth2::AccessToken"
10
+ end
11
+
12
+ @access_token = access_token
13
+ @on_token_refreshed = on_token_refreshed
14
+ elsif oauth_bearer
15
+ @oauth_bearer = oauth_bearer
16
+ else
17
+ raise ArgumentError, "Either oauth_bearer or access_token should be set"
18
+ end
5
19
  end
6
20
 
7
21
  def middleware
8
22
  @middleware ||= MiddleWare::Stack.new
9
23
  end
10
24
 
25
+ def can_refresh_access_token?
26
+ @access_token && @access_token.refresh_token
27
+ end
28
+
29
+ def refresh_access_token
30
+ @access_token = @access_token.refresh!
31
+ @on_token_refreshed.call(@access_token.to_hash) if @on_token_refreshed
32
+ end
33
+
34
+ private def bearer
35
+ @oauth_bearer or oauth_bearer_from_access_token
36
+ end
37
+
38
+ private def oauth_bearer_from_access_token
39
+ refresh_access_token if @access_token.expired?
40
+
41
+ @access_token.token
42
+ end
43
+
11
44
  def build(url)
12
45
  Faraday.new(url) do |connection|
46
+ connection.use DropboxApi::MiddleWare::PathRoot, {
47
+ namespace_id: self.namespace_id
48
+ }
13
49
  middleware.apply(connection) do
14
- connection.authorization :Bearer, @oauth_bearer
15
-
50
+ connection.authorization :Bearer, bearer
16
51
  yield connection
17
52
  end
18
53
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Auth
2
3
  class TokenRevoke < DropboxApi::Endpoints::Rpc
3
4
  Method = :post
4
- Path = "/2/auth/token/revoke".freeze
5
+ Path = '/2/auth/token/revoke'
5
6
  ResultType = DropboxApi::Results::VoidResult
6
7
  ErrorType = nil
7
8
 
@@ -1,5 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints
2
3
  class Base
4
+ def initialize(builder)
5
+ @builder = builder
6
+ build_connection
7
+ end
8
+
3
9
  def self.add_endpoint(name, &block)
4
10
  define_method(name, block)
5
11
  DropboxApi::Client.add_endpoint(name, self)
@@ -9,6 +15,14 @@ module DropboxApi::Endpoints
9
15
 
10
16
  def perform_request(params)
11
17
  process_response(get_response(params))
18
+ rescue DropboxApi::Errors::ExpiredAccessTokenError => e
19
+ if @builder.can_refresh_access_token?
20
+ @builder.refresh_access_token
21
+ build_connection
22
+ process_response(get_response(params))
23
+ else
24
+ raise e
25
+ end
12
26
  end
13
27
 
14
28
  def get_response(*args)
@@ -23,18 +37,25 @@ module DropboxApi::Endpoints
23
37
  # Status code 409 is "Endpoint-specific error". We need to look at
24
38
  # the response body to build an exception.
25
39
  build_result(raw_response.env[:api_result])
40
+ when 401
41
+ raise DropboxApi::Errors::ExpiredAccessTokenError.build(
42
+ raw_response.env[:api_result]['error_summary'],
43
+ raw_response.env[:api_result]['error']
44
+ )
26
45
  when 429
27
46
  error = DropboxApi::Errors::TooManyRequestsError.build(
28
- raw_response.env[:api_result]["error_summary"],
29
- raw_response.env[:api_result]["error"]["reason"]
47
+ raw_response.env[:api_result]['error_summary'],
48
+ raw_response.env[:api_result]['error']['reason']
30
49
  )
31
50
 
32
- error.retry_after = raw_response.headers["retry-after"].to_i
51
+ error.retry_after = raw_response.headers['retry-after'].to_i
33
52
 
34
53
  raise error
35
54
  else
36
- raise DropboxApi::Errors::HttpError,
55
+ raise(
56
+ DropboxApi::Errors::HttpError,
37
57
  "HTTP #{raw_response.status}: #{raw_response.body}"
58
+ )
38
59
  end
39
60
  end
40
61
 
@@ -49,7 +70,12 @@ module DropboxApi::Endpoints
49
70
  end
50
71
 
51
72
  def run_request(body, headers)
52
- @connection.run_request(self.class::Method, self.class::Path, body, headers)
73
+ @connection.run_request(
74
+ self.class::Method,
75
+ self.class::Path,
76
+ body,
77
+ headers
78
+ )
53
79
  end
54
80
  end
55
81
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints
2
3
  class ContentDownload < DropboxApi::Endpoints::Base
3
- def initialize(builder)
4
- @connection = builder.build("https://content.dropboxapi.com") do |c|
4
+ def build_connection
5
+ @connection = @builder.build('https://content.dropboxapi.com') do |c|
5
6
  c.response :decode_result
6
7
  end
7
8
  end
@@ -20,14 +21,11 @@ module DropboxApi::Endpoints
20
21
  response = get_response(params)
21
22
  api_result = process_response response
22
23
 
23
- # TODO: Stream response, current implementation will fail with very large
24
- # files.
24
+ # We just yield the whole response to the block, it'd be nice in the
25
+ # future to support an interface that streams the response in chunks.
25
26
  yield response.body if block_given?
26
27
 
27
28
  api_result
28
29
  end
29
30
  end
30
31
  end
31
- # TODO:
32
- # 1. Combine ContentDownload and ContentUpload to share its initialize method.
33
- # 2. Reorganize the methods which create the request.
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints
2
3
  class ContentUpload < DropboxApi::Endpoints::Base
3
- def initialize(builder)
4
- @connection = builder.build("https://content.dropboxapi.com") do |c|
4
+ def build_connection
5
+ @connection = @builder.build('https://content.dropboxapi.com') do |c|
5
6
  c.response :decode_result
6
7
  end
7
8
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Files
2
3
  class CreateFileRequest < DropboxApi::Endpoints::Rpc
3
4
  Method = :post
4
- Path = "/2/file_requests/create".freeze
5
+ Path = '/2/file_requests/create'
5
6
  ResultType = DropboxApi::Metadata::FileRequest
6
7
  ErrorType = DropboxApi::Errors::CreateFileRequestError
7
8
 
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Files
2
3
  class Copy < DropboxApi::Endpoints::Rpc
3
4
  Method = :post
4
- Path = "/2/files/copy".freeze
5
+ Path = '/2/files/copy'
5
6
  ResultType = DropboxApi::Metadata::Resource
6
7
  ErrorType = DropboxApi::Errors::RelocationError
7
8
 
@@ -13,8 +14,8 @@ module DropboxApi::Endpoints::Files
13
14
  # @return The moved file.
14
15
  add_endpoint :copy do |from, to|
15
16
  perform_request({
16
- :from_path => from,
17
- :to_path => to
17
+ from_path: from,
18
+ to_path: to
18
19
  })
19
20
  end
20
21
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+ module DropboxApi::Endpoints::Files
3
+ class CopyBatch < DropboxApi::Endpoints::Rpc
4
+ Method = :post
5
+ Path = '/2/files/copy_batch_v2'
6
+ ResultType = DropboxApi::Results::CopyBatchResult
7
+
8
+ include DropboxApi::OptionsValidator
9
+
10
+ # Copy multiple files or folders to different locations at once in the
11
+ # user's Dropbox.
12
+ #
13
+ # This will either finish synchronously, or return a job ID and do
14
+ # the async copy job in background. Please use {Client#copy_batch_check}
15
+ # to check the job status.
16
+ #
17
+ # Note: No errors are returned by this endpoint.
18
+ #
19
+ # @param entries [Array<Hash>] List of entries to be moved or copied.
20
+ # Each entry must be a hash with two keys: `:from_path` & `:to_path`.
21
+ # @option options autorename [Boolean] If there's a conflict with any file,
22
+ # have the Dropbox server try to autorename that file to avoid the
23
+ # conflict. The default for this field is `false`.
24
+ # @return [String, Array] Either the job id or the list of job statuses.
25
+ add_endpoint :copy_batch do |entries, options = {}|
26
+ validate_options([
27
+ :autorename
28
+ ], options)
29
+ options[:autorename] ||= false
30
+
31
+ perform_request(options.merge({
32
+ entries: entries
33
+ }))
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+ module DropboxApi::Endpoints::Files
3
+ class CopyBatchCheck < DropboxApi::Endpoints::Rpc
4
+ Method = :post
5
+ Path = '/2/files/copy_batch/check_v2'
6
+ ResultType = DropboxApi::Results::RelocationBatchResult
7
+ ErrorType = DropboxApi::Errors::PollError
8
+
9
+ # Returns the status of an asynchronous job for {Client#copy_batch}. It
10
+ # returns a list of results for each entry.
11
+ #
12
+ # @param async_job_id [String] Id of the asynchronous job.
13
+ # This is the value of a response returned from the method that
14
+ # launched the job.
15
+ # @return [:in_progress, Array] This could be either the `:in_progress`
16
+ # flag or a list of job statuses.
17
+ add_endpoint :copy_batch_check do |async_job_id|
18
+ perform_request async_job_id: async_job_id
19
+ end
20
+ end
21
+ end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Files
2
3
  class CopyReferenceGet < DropboxApi::Endpoints::Rpc
3
4
  Method = :post
4
- Path = "/2/files/copy_reference/get".freeze
5
+ Path = '/2/files/copy_reference/get'
5
6
  ResultType = DropboxApi::Results::GetCopyReferenceResult
6
7
  ErrorType = DropboxApi::Errors::GetCopyReferenceError
7
8
 
@@ -14,7 +15,7 @@ module DropboxApi::Endpoints::Files
14
15
  # @return [DropboxApi::Results::GetCopyReferenceResult]
15
16
  add_endpoint :copy_reference_get do |path|
16
17
  perform_request({
17
- :path => path
18
+ path: path
18
19
  })
19
20
  end
20
21
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Files
2
3
  class CopyReferenceSave < DropboxApi::Endpoints::Rpc
3
4
  Method = :post
4
- Path = "/2/files/copy_reference/save".freeze
5
+ Path = '/2/files/copy_reference/save'
5
6
  ResultType = DropboxApi::Results::SaveCopyReferenceResult
6
7
  ErrorType = DropboxApi::Errors::SaveCopyReferenceError
7
8
 
@@ -14,8 +15,8 @@ module DropboxApi::Endpoints::Files
14
15
  # @return [DropboxApi::Results::SaveCopyReferenceResult]
15
16
  add_endpoint :copy_reference_save do |copy_reference, path|
16
17
  perform_request({
17
- :copy_reference => copy_reference,
18
- :path => path
18
+ copy_reference: copy_reference,
19
+ path: path
19
20
  })
20
21
  end
21
22
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Files
2
3
  class CreateFolder < DropboxApi::Endpoints::Rpc
3
4
  Method = :post
4
- Path = "/2/files/create_folder".freeze
5
+ Path = '/2/files/create_folder'
5
6
  ResultType = DropboxApi::Metadata::Folder
6
7
  ErrorType = DropboxApi::Errors::CreateFolderError
7
8
 
@@ -11,7 +12,7 @@ module DropboxApi::Endpoints::Files
11
12
  # @return [DropboxApi::Metadata::Folder] The new folder.
12
13
  add_endpoint :create_folder do |path|
13
14
  perform_request({
14
- :path => path
15
+ path: path
15
16
  })
16
17
  end
17
18
  end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+ module DropboxApi::Endpoints::Files
3
+ class CreateFolderBatch < DropboxApi::Endpoints::Rpc
4
+ Method = :post
5
+ Path = '/2/files/create_folder_batch'
6
+ ResultType = DropboxApi::Results::CreateFolderBatchResult
7
+
8
+ include DropboxApi::OptionsValidator
9
+
10
+ # Create multiple folders at once.
11
+ #
12
+ # This route is asynchronous for large batches, which returns a job ID
13
+ # immediately and runs the create folder batch asynchronously. Otherwise,
14
+ # creates the folders and returns the result synchronously for smaller
15
+ # inputs. You can force asynchronous behaviour by using the `:force_async`
16
+ # flag. Use {Client#create_folder_batch_check} to check the job status.
17
+ #
18
+ # Note: No errors are returned by this endpoint.
19
+ #
20
+ # @param paths [Array] List of paths to be created in the user's Dropbox.
21
+ # Duplicate path arguments in the batch are considered only once.
22
+ # @option options autorename [Boolean] If there's a conflict, have the
23
+ # Dropbox server try to autorename the folder to avoid the conflict.
24
+ # The default for this field is `false`.
25
+ # @option options force_async [Boolean] Whether to force the create to
26
+ # happen asynchronously. The default for this field is `false`.
27
+ # @return [String, Array] Either the job id or the list of job statuses.
28
+ add_endpoint :create_folder_batch do |paths, options = {}|
29
+ validate_options([
30
+ :autorename,
31
+ :force_async
32
+ ], options)
33
+ options[:autorename] ||= false
34
+ options[:force_async] ||= false
35
+
36
+ perform_request(options.merge({
37
+ paths: paths
38
+ }))
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ module DropboxApi::Endpoints::Files
3
+ class CreateFolderBatchCheck < DropboxApi::Endpoints::Rpc
4
+ Method = :post
5
+ Path = '/2/files/create_folder_batch/check'
6
+ ResultType = DropboxApi::Results::CreateFolderBatchResult
7
+ ErrorType = DropboxApi::Errors::PollError
8
+
9
+ # Returns the status of an asynchronous job for create_folder_batch.
10
+ # If success, it returns list of result for each entry.
11
+ #
12
+ # @param async_job_id [String] Id of the asynchronous job.
13
+ # This is the value of a response returned from the method that launched
14
+ # the job.
15
+ # @return [Array] A list of one result for each entry.
16
+ add_endpoint :create_folder_batch_check do |async_job_id|
17
+ perform_request({
18
+ async_job_id: async_job_id
19
+ })
20
+ end
21
+ end
22
+ end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Files
2
3
  class Delete < DropboxApi::Endpoints::Rpc
3
4
  Method = :post
4
- Path = "/2/files/delete".freeze
5
+ Path = '/2/files/delete'
5
6
  ResultType = DropboxApi::Metadata::Resource
6
7
  ErrorType = DropboxApi::Errors::DeleteError
7
8
 
@@ -25,7 +26,7 @@ module DropboxApi::Endpoints::Files
25
26
  validate_options([:parent_rev], options)
26
27
 
27
28
  perform_request options.merge({
28
- :path => path
29
+ path: path
29
30
  })
30
31
  end
31
32
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ module DropboxApi::Endpoints::Files
3
+ class DeleteBatch < DropboxApi::Endpoints::Rpc
4
+ Method = :post
5
+ Path = '/2/files/delete_batch'
6
+ ResultType = DropboxApi::Results::DeleteBatchResult
7
+
8
+ # Delete multiple files/folders at once.
9
+ #
10
+ # This route is asynchronous, which returns a job ID immediately and runs
11
+ # the delete batch asynchronously. Use {Client#delete_batch_check} to check
12
+ # the job status.
13
+ #
14
+ # @param entries [Array] List of entries, each entry is a Hash with these
15
+ # fields: `path` (mandatory) & parent_rev (optional).
16
+ # @return [String, Array] Either the job id or the list of job statuses.
17
+ add_endpoint :delete_batch do |entries|
18
+ perform_request({
19
+ entries: entries
20
+ })
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+ module DropboxApi::Endpoints::Files
3
+ class DeleteBatchCheck < DropboxApi::Endpoints::Rpc
4
+ Method = :post
5
+ Path = '/2/files/delete_batch/check'
6
+ ResultType = DropboxApi::Results::DeleteBatchResult
7
+ ErrorType = DropboxApi::Errors::PollError
8
+
9
+ # Returns the status of an asynchronous job for delete_batch. If success,
10
+ # it returns list of result for each entry.
11
+ #
12
+ # @param async_job_id [String] Id of the asynchronous job.
13
+ # @return [:in_progress, Array] This could be either the `:in_progress`
14
+ # flag or a list of job statuses.
15
+ add_endpoint :delete_batch_check do |async_job_id|
16
+ perform_request({
17
+ async_job_id: async_job_id
18
+ })
19
+ end
20
+ end
21
+ end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Files
2
3
  class Download < DropboxApi::Endpoints::ContentDownload
3
4
  Method = :post
4
- Path = "/2/files/download".freeze
5
+ Path = '/2/files/download'
5
6
  ResultType = DropboxApi::Metadata::File
6
7
  ErrorType = DropboxApi::Errors::DownloadError
7
8
 
@@ -9,7 +10,7 @@ module DropboxApi::Endpoints::Files
9
10
  #
10
11
  # @param path [String] The path of the file to download.
11
12
  add_endpoint :download do |path, &block|
12
- perform_request({:path => path}, &block)
13
+ perform_request({path: path}, &block)
13
14
  end
14
15
  end
15
16
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module DropboxApi::Endpoints::Files
2
3
  class GetMetadata < DropboxApi::Endpoints::Rpc
3
4
  Method = :post
4
- Path = "/2/files/get_metadata".freeze
5
+ Path = '/2/files/get_metadata'
5
6
  ResultType = DropboxApi::Metadata::Resource
6
7
  ErrorType = DropboxApi::Errors::GetMetadataError
7
8
 
@@ -34,7 +35,7 @@ module DropboxApi::Endpoints::Files
34
35
  ], options)
35
36
 
36
37
  perform_request(options.merge({
37
- :path => path
38
+ path: path
38
39
  }))
39
40
  end
40
41
  end