dropbox_api 0.1.16 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (515) 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 +26 -1
  6. data/README.md +120 -24
  7. data/Rakefile +4 -3
  8. data/TODO.md +24 -7
  9. data/api_coverage.md +8 -8
  10. data/bin/console +4 -3
  11. data/docs/DropboxApi/Authenticator.html +14 -20
  12. data/docs/DropboxApi/ChunkedUploader.html +20 -20
  13. data/docs/DropboxApi/Client.html +3446 -992
  14. data/docs/DropboxApi/ConnectionBuilder.html +266 -31
  15. data/docs/DropboxApi/Endpoints/Auth/TokenRevoke.html +13 -13
  16. data/docs/DropboxApi/Endpoints/Auth.html +6 -6
  17. data/docs/DropboxApi/Endpoints/Base.html +92 -11
  18. data/docs/DropboxApi/Endpoints/ContentDownload.html +37 -48
  19. data/docs/DropboxApi/Endpoints/ContentUpload.html +35 -46
  20. data/docs/DropboxApi/Endpoints/Files/Copy.html +15 -15
  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 +14 -14
  24. data/docs/DropboxApi/Endpoints/Files/CopyReferenceSave.html +15 -15
  25. data/docs/DropboxApi/Endpoints/Files/CreateFileRequest.html +13 -13
  26. data/docs/DropboxApi/Endpoints/Files/CreateFolder.html +14 -14
  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 +14 -14
  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 +14 -14
  33. data/docs/DropboxApi/Endpoints/Files/GetMetadata.html +14 -14
  34. data/docs/DropboxApi/Endpoints/Files/GetPreview.html +14 -14
  35. data/docs/DropboxApi/Endpoints/Files/GetTemporaryLink.html +14 -14
  36. data/docs/DropboxApi/Endpoints/Files/GetThumbnail.html +14 -14
  37. data/docs/DropboxApi/Endpoints/Files/GetThumbnailBatch.html +19 -19
  38. data/docs/DropboxApi/Endpoints/Files/ListFolder.html +39 -20
  39. data/docs/DropboxApi/Endpoints/Files/ListFolderContinue.html +14 -14
  40. data/docs/DropboxApi/Endpoints/Files/ListFolderGetLatestCursor.html +13 -13
  41. data/docs/DropboxApi/Endpoints/Files/ListFolderLongpoll.html +15 -15
  42. data/docs/DropboxApi/Endpoints/Files/ListRevisions.html +14 -14
  43. data/docs/DropboxApi/Endpoints/Files/Move.html +15 -15
  44. data/docs/DropboxApi/Endpoints/Files/PermanentlyDelete.html +14 -14
  45. data/docs/DropboxApi/Endpoints/Files/Restore.html +15 -15
  46. data/docs/DropboxApi/Endpoints/Files/SaveUrl.html +15 -15
  47. data/docs/DropboxApi/Endpoints/Files/SaveUrlCheckJobStatus.html +14 -14
  48. data/docs/DropboxApi/Endpoints/Files/Search.html +51 -99
  49. data/docs/DropboxApi/Endpoints/Files/SearchContinue.html +300 -0
  50. data/docs/DropboxApi/Endpoints/Files/Upload.html +14 -14
  51. data/docs/DropboxApi/Endpoints/Files/UploadSessionAppendV2.html +14 -14
  52. data/docs/DropboxApi/Endpoints/Files/UploadSessionFinish.html +15 -15
  53. data/docs/DropboxApi/Endpoints/Files/UploadSessionStart.html +15 -15
  54. data/docs/DropboxApi/Endpoints/Files.html +8 -8
  55. data/docs/DropboxApi/Endpoints/Rpc.html +36 -47
  56. data/docs/DropboxApi/Endpoints/RpcContent.html +28 -33
  57. data/docs/DropboxApi/Endpoints/RpcNotify.html +28 -33
  58. data/docs/DropboxApi/Endpoints/Sharing/AddFileMember.html +15 -15
  59. data/docs/DropboxApi/Endpoints/Sharing/AddFolderMember.html +15 -15
  60. data/docs/DropboxApi/Endpoints/Sharing/CreateSharedLinkWithSettings.html +110 -19
  61. data/docs/DropboxApi/Endpoints/Sharing/GetSharedLinkMetadata.html +14 -14
  62. data/docs/DropboxApi/Endpoints/Sharing/ListFileMembers.html +15 -15
  63. data/docs/DropboxApi/Endpoints/Sharing/ListFolderMembers.html +15 -15
  64. data/docs/DropboxApi/Endpoints/Sharing/ListSharedLinks.html +13 -13
  65. data/docs/DropboxApi/Endpoints/Sharing/RevokeSharedLink.html +293 -0
  66. data/docs/DropboxApi/Endpoints/Sharing/ShareFolder.html +14 -14
  67. data/docs/DropboxApi/Endpoints/Sharing/UnshareFile.html +14 -14
  68. data/docs/DropboxApi/Endpoints/Sharing.html +8 -8
  69. data/docs/DropboxApi/Endpoints/Users/GetAccount.html +14 -14
  70. data/docs/DropboxApi/Endpoints/Users/GetAccountBatch.html +14 -14
  71. data/docs/DropboxApi/Endpoints/Users/GetCurrentAccount.html +13 -13
  72. data/docs/DropboxApi/Endpoints/Users/GetSpaceUsage.html +13 -13
  73. data/docs/DropboxApi/Endpoints/Users.html +6 -6
  74. data/docs/DropboxApi/Endpoints.html +6 -6
  75. data/docs/DropboxApi/Errors/AddFileMemberError.html +10 -10
  76. data/docs/DropboxApi/Errors/AddFolderMemberError.html +16 -16
  77. data/docs/DropboxApi/Errors/AddMemberSelectorError.html +11 -11
  78. data/docs/DropboxApi/Errors/AlreadySharedError.html +9 -9
  79. data/docs/DropboxApi/Errors/BadPathError.html +6 -6
  80. data/docs/DropboxApi/Errors/BasicError.html +18 -18
  81. data/docs/DropboxApi/Errors/CantCopySharedFolderError.html +6 -6
  82. data/docs/DropboxApi/Errors/CantMoveFolderIntoItselfError.html +6 -6
  83. data/docs/DropboxApi/Errors/CantNestSharedFolderError.html +6 -6
  84. data/docs/DropboxApi/Errors/CantShareOutsideTeamError.html +6 -6
  85. data/docs/DropboxApi/Errors/ContainsSharedFolderError.html +6 -6
  86. data/docs/DropboxApi/Errors/ConversionError.html +6 -6
  87. data/docs/DropboxApi/Errors/CreateFileRequestError.html +6 -6
  88. data/docs/DropboxApi/Errors/CreateFolderBatchError.html +161 -0
  89. data/docs/DropboxApi/Errors/CreateFolderError.html +7 -7
  90. data/docs/DropboxApi/Errors/CreateSharedLinkWithSettingsError.html +11 -11
  91. data/docs/DropboxApi/Errors/CursorClosedError.html +6 -6
  92. data/docs/DropboxApi/Errors/CursorNotClosedError.html +6 -6
  93. data/docs/DropboxApi/Errors/DeleteError.html +9 -8
  94. data/docs/DropboxApi/Errors/DisallowedNameError.html +6 -6
  95. data/docs/DropboxApi/Errors/DisallowedSharedLinkPolicyError.html +6 -6
  96. data/docs/DropboxApi/Errors/DownloadError.html +7 -7
  97. data/docs/DropboxApi/Errors/DownloadFailedError.html +6 -6
  98. data/docs/DropboxApi/Errors/EmailUnverifiedError.html +6 -6
  99. data/docs/DropboxApi/Errors/ExpiredAccessTokenError.html +143 -0
  100. data/docs/DropboxApi/Errors/FileAncestorConflictError.html +6 -6
  101. data/docs/DropboxApi/Errors/FileConflictError.html +6 -6
  102. data/docs/DropboxApi/Errors/FileMemberActionError.html +10 -10
  103. data/docs/DropboxApi/Errors/FolderConflictError.html +6 -6
  104. data/docs/DropboxApi/Errors/GetAccountError.html +7 -7
  105. data/docs/DropboxApi/Errors/GetCopyReferenceError.html +7 -7
  106. data/docs/DropboxApi/Errors/GetMetadataError.html +7 -7
  107. data/docs/DropboxApi/Errors/GroupDeletedError.html +6 -6
  108. data/docs/DropboxApi/Errors/GroupNotOnTeamError.html +6 -6
  109. data/docs/DropboxApi/Errors/HttpError.html +6 -6
  110. data/docs/DropboxApi/Errors/InProgressError.html +6 -6
  111. data/docs/DropboxApi/Errors/InsideAppFolderError.html +6 -6
  112. data/docs/DropboxApi/Errors/InsideOsxPackageError.html +6 -6
  113. data/docs/DropboxApi/Errors/InsidePublicFolderError.html +6 -6
  114. data/docs/DropboxApi/Errors/InsideSharedFolderError.html +6 -6
  115. data/docs/DropboxApi/Errors/InsufficientPlanError.html +6 -6
  116. data/docs/DropboxApi/Errors/InsufficientSpaceError.html +6 -6
  117. data/docs/DropboxApi/Errors/InternalError.html +6 -6
  118. data/docs/DropboxApi/Errors/InvalidCommentError.html +6 -6
  119. data/docs/DropboxApi/Errors/InvalidCopyReferenceError.html +6 -6
  120. data/docs/DropboxApi/Errors/InvalidCursorError.html +6 -6
  121. data/docs/DropboxApi/Errors/InvalidDropboxIdError.html +6 -6
  122. data/docs/DropboxApi/Errors/InvalidEmailError.html +6 -6
  123. data/docs/DropboxApi/Errors/InvalidFileError.html +6 -6
  124. data/docs/DropboxApi/Errors/InvalidIdError.html +6 -6
  125. data/docs/DropboxApi/Errors/InvalidMemberError.html +6 -6
  126. data/docs/DropboxApi/Errors/InvalidPathError.html +6 -6
  127. data/docs/DropboxApi/Errors/InvalidRevisionError.html +6 -6
  128. data/docs/DropboxApi/Errors/InvalidSettingsError.html +6 -6
  129. data/docs/DropboxApi/Errors/InvalidUrlError.html +6 -6
  130. data/docs/DropboxApi/Errors/IsAppFolderError.html +6 -6
  131. data/docs/DropboxApi/Errors/IsFileError.html +6 -6
  132. data/docs/DropboxApi/Errors/IsFolderError.html +6 -6
  133. data/docs/DropboxApi/Errors/IsOsxPackageError.html +6 -6
  134. data/docs/DropboxApi/Errors/IsPublicFolderError.html +6 -6
  135. data/docs/DropboxApi/Errors/ListFolderContinueError.html +8 -8
  136. data/docs/DropboxApi/Errors/ListFolderError.html +7 -7
  137. data/docs/DropboxApi/Errors/ListFolderLongpollError.html +7 -7
  138. data/docs/DropboxApi/Errors/ListRevisionsError.html +7 -7
  139. data/docs/DropboxApi/Errors/ListSharedLinksError.html +8 -8
  140. data/docs/DropboxApi/Errors/LookupError.html +11 -11
  141. data/docs/DropboxApi/Errors/MalformedPathError.html +6 -6
  142. data/docs/DropboxApi/Errors/NoAccountError.html +6 -6
  143. data/docs/DropboxApi/Errors/NoPermissionError.html +6 -6
  144. data/docs/DropboxApi/Errors/NoWritePermissionError.html +6 -6
  145. data/docs/DropboxApi/Errors/NotAMemberError.html +6 -6
  146. data/docs/DropboxApi/Errors/NotFileError.html +6 -6
  147. data/docs/DropboxApi/Errors/NotFolderError.html +6 -6
  148. data/docs/DropboxApi/Errors/NotFoundError.html +6 -6
  149. data/docs/DropboxApi/Errors/PollError.html +8 -8
  150. data/docs/DropboxApi/Errors/PreviewError.html +10 -10
  151. data/docs/DropboxApi/Errors/RateLimitError.html +6 -6
  152. data/docs/DropboxApi/Errors/RelocationBatchEntryError.html +163 -0
  153. data/docs/DropboxApi/Errors/RelocationError.html +13 -13
  154. data/docs/DropboxApi/Errors/RestoreError.html +9 -9
  155. data/docs/DropboxApi/Errors/RestrictedContentError.html +6 -6
  156. data/docs/DropboxApi/Errors/RevokeSharedLinkError.html +164 -0
  157. data/docs/DropboxApi/Errors/SaveCopyReferenceError.html +11 -11
  158. data/docs/DropboxApi/Errors/SaveUrlError.html +10 -10
  159. data/docs/DropboxApi/Errors/SearchError.html +7 -7
  160. data/docs/DropboxApi/Errors/SettingsError.html +8 -8
  161. data/docs/DropboxApi/Errors/ShareFolderError.html +11 -11
  162. data/docs/DropboxApi/Errors/SharePathError.html +17 -17
  163. data/docs/DropboxApi/Errors/SharedFolderAccessError.html +10 -10
  164. data/docs/DropboxApi/Errors/SharedLinkAccessDeniedError.html +6 -6
  165. data/docs/DropboxApi/Errors/SharedLinkAlreadyExistsError.html +6 -6
  166. data/docs/DropboxApi/Errors/SharedLinkError.html +9 -9
  167. data/docs/DropboxApi/Errors/SharedLinkMalformedError.html +143 -0
  168. data/docs/DropboxApi/Errors/SharedLinkNotFoundError.html +6 -6
  169. data/docs/DropboxApi/Errors/SharingFileAccessError.html +11 -11
  170. data/docs/DropboxApi/Errors/SharingUserError.html +7 -7
  171. data/docs/DropboxApi/Errors/TeamFolderError.html +6 -6
  172. data/docs/DropboxApi/Errors/TeamPolicyDisallowsMemberPolicyError.html +6 -6
  173. data/docs/DropboxApi/Errors/ThumbnailBatchError.html +7 -7
  174. data/docs/DropboxApi/Errors/ThumbnailError.html +10 -10
  175. data/docs/DropboxApi/Errors/TooManyFilesError.html +6 -6
  176. data/docs/DropboxApi/Errors/TooManyMembersError.html +6 -6
  177. data/docs/DropboxApi/Errors/TooManyPendingInvitesError.html +6 -6
  178. data/docs/DropboxApi/Errors/TooManyRequestsError.html +15 -15
  179. data/docs/DropboxApi/Errors/TooManySharedFolderTargetsError.html +6 -6
  180. data/docs/DropboxApi/Errors/TooManyWriteOperationsError.html +6 -6
  181. data/docs/DropboxApi/Errors/UnmountedError.html +6 -6
  182. data/docs/DropboxApi/Errors/UnshareFileError.html +8 -8
  183. data/docs/DropboxApi/Errors/UnsupportedContentError.html +6 -6
  184. data/docs/DropboxApi/Errors/UnsupportedExtensionError.html +6 -6
  185. data/docs/DropboxApi/Errors/UnsupportedImageError.html +6 -6
  186. data/docs/DropboxApi/Errors/UnsupportedLinkTypeError.html +6 -6
  187. data/docs/DropboxApi/Errors/UnverifiedDropboxId.html +6 -6
  188. data/docs/DropboxApi/Errors/UploadError.html +7 -7
  189. data/docs/DropboxApi/Errors/UploadSessionFinishError.html +9 -9
  190. data/docs/DropboxApi/Errors/UploadSessionLookupError.html +10 -10
  191. data/docs/DropboxApi/Errors/UploadSessionOffsetError.html +10 -10
  192. data/docs/DropboxApi/Errors/UploadWriteFailedError.html +7 -7
  193. data/docs/DropboxApi/Errors/WriteConflictError.html +9 -9
  194. data/docs/DropboxApi/Errors/WriteError.html +11 -11
  195. data/docs/DropboxApi/Errors.html +8 -8
  196. data/docs/DropboxApi/Metadata/AccessLevel.html +9 -9
  197. data/docs/DropboxApi/Metadata/AddFileMemberResult.html +6 -6
  198. data/docs/DropboxApi/Metadata/AddMember.html +11 -11
  199. data/docs/DropboxApi/Metadata/Base.html +24 -24
  200. data/docs/DropboxApi/Metadata/BasicAccount.html +12 -7
  201. data/docs/DropboxApi/Metadata/CommitInfo.html +9 -9
  202. data/docs/DropboxApi/Metadata/Deleted.html +6 -6
  203. data/docs/DropboxApi/Metadata/Dimensions.html +6 -6
  204. data/docs/DropboxApi/Metadata/Field.html +24 -20
  205. data/docs/DropboxApi/Metadata/File.html +10 -10
  206. data/docs/DropboxApi/Metadata/FileCategoriesList.html +205 -0
  207. data/docs/DropboxApi/Metadata/FileCategory.html +250 -0
  208. data/docs/DropboxApi/Metadata/FileExtensionsList.html +213 -0
  209. data/docs/DropboxApi/Metadata/FileLinkMetadata.html +6 -6
  210. data/docs/DropboxApi/Metadata/FileMemberAction.html +10 -10
  211. data/docs/DropboxApi/Metadata/FileRequest.html +6 -6
  212. data/docs/DropboxApi/Metadata/FileStatus.html +242 -0
  213. data/docs/DropboxApi/Metadata/Folder.html +10 -10
  214. data/docs/DropboxApi/Metadata/FolderLinkMetadata.html +6 -6
  215. data/docs/DropboxApi/Metadata/FolderSharingInfo.html +6 -6
  216. data/docs/DropboxApi/Metadata/LinkPermissions.html +6 -6
  217. data/docs/DropboxApi/Metadata/Location.html +6 -6
  218. data/docs/DropboxApi/Metadata/MediaInfo.html +9 -9
  219. data/docs/DropboxApi/Metadata/MediaMetadata.html +9 -9
  220. data/docs/DropboxApi/Metadata/Member.html +13 -13
  221. data/docs/DropboxApi/Metadata/MemberAction.html +9 -9
  222. data/docs/DropboxApi/Metadata/MemberActionList.html +9 -9
  223. data/docs/DropboxApi/Metadata/MemberPermission.html +6 -6
  224. data/docs/DropboxApi/Metadata/MemberPermissionList.html +10 -10
  225. data/docs/DropboxApi/Metadata/MetadataV2.html +140 -0
  226. data/docs/DropboxApi/Metadata/Name.html +6 -6
  227. data/docs/DropboxApi/Metadata/NamespaceId.html +210 -0
  228. data/docs/DropboxApi/Metadata/ParentFolderAccessInfo.html +6 -6
  229. data/docs/DropboxApi/Metadata/PhotoMetadata.html +6 -6
  230. data/docs/DropboxApi/Metadata/Resource.html +10 -10
  231. data/docs/DropboxApi/Metadata/RootInfo.html +227 -0
  232. data/docs/DropboxApi/Metadata/SearchMatchFieldOptions.html +140 -0
  233. data/docs/DropboxApi/Metadata/SearchMatchTypeV2.html +244 -0
  234. data/docs/DropboxApi/Metadata/SearchMatchV2.html +216 -0
  235. data/docs/DropboxApi/Metadata/SearchOptions.html +140 -0
  236. data/docs/DropboxApi/Metadata/SearchOrderBy.html +242 -0
  237. data/docs/DropboxApi/Metadata/SharedFolder.html +6 -6
  238. data/docs/DropboxApi/Metadata/SharedFolderPolicy.html +6 -6
  239. data/docs/DropboxApi/Metadata/SharedLink.html +18 -18
  240. data/docs/DropboxApi/Metadata/SharedLinkMetadata.html +10 -10
  241. data/docs/DropboxApi/Metadata/SpaceAllocation.html +6 -6
  242. data/docs/DropboxApi/Metadata/SpaceUsage.html +6 -6
  243. data/docs/DropboxApi/Metadata/Tag.html +14 -14
  244. data/docs/DropboxApi/Metadata/Team.html +6 -6
  245. data/docs/DropboxApi/Metadata/TeamMemberInfo.html +6 -6
  246. data/docs/DropboxApi/Metadata/TeamRootInfo.html +140 -0
  247. data/docs/DropboxApi/Metadata/ThumbnailBatchResultData.html +6 -6
  248. data/docs/DropboxApi/Metadata/ThumbnailBatchResultEntry.html +11 -11
  249. data/docs/DropboxApi/Metadata/UploadSessionCursor.html +9 -9
  250. data/docs/DropboxApi/Metadata/UserRootInfo.html +140 -0
  251. data/docs/DropboxApi/Metadata/VideoMetadata.html +6 -6
  252. data/docs/DropboxApi/Metadata/WriteMode.html +21 -21
  253. data/docs/DropboxApi/Metadata.html +8 -8
  254. data/docs/DropboxApi/MiddleWare/DecodeResult.html +13 -13
  255. data/docs/DropboxApi/MiddleWare/PathRoot.html +412 -0
  256. data/docs/DropboxApi/MiddleWare/Stack.html +22 -22
  257. data/docs/DropboxApi/MiddleWare.html +8 -8
  258. data/docs/DropboxApi/OptionsValidator.html +10 -10
  259. data/docs/DropboxApi/ResultBuilder.html +30 -30
  260. data/docs/DropboxApi/Results/AddFileMemberResultList.html +10 -10
  261. data/docs/DropboxApi/Results/Base.html +11 -11
  262. data/docs/DropboxApi/Results/BasicAccountBatch.html +10 -10
  263. data/docs/DropboxApi/Results/CopyBatchResult.html +224 -0
  264. data/docs/DropboxApi/Results/CreateFolderBatchResult.html +241 -0
  265. data/docs/DropboxApi/Results/CreateFolderBatchResultEntry.html +234 -0
  266. data/docs/DropboxApi/Results/DeleteBatchResult.html +241 -0
  267. data/docs/DropboxApi/Results/DeleteBatchResultEntry.html +226 -0
  268. data/docs/DropboxApi/Results/GetCopyReferenceResult.html +18 -18
  269. data/docs/DropboxApi/Results/GetTemporaryLinkResult.html +14 -14
  270. data/docs/DropboxApi/Results/GetThumbnailBatchResult.html +10 -10
  271. data/docs/DropboxApi/Results/ListFolderGetLatestCursorResult.html +10 -10
  272. data/docs/DropboxApi/Results/ListFolderLongpollResult.html +14 -14
  273. data/docs/DropboxApi/Results/ListFolderResult.html +18 -18
  274. data/docs/DropboxApi/Results/ListRevisionsResult.html +14 -14
  275. data/docs/DropboxApi/Results/ListSharedLinksResult.html +18 -18
  276. data/docs/DropboxApi/Results/RelocationBatchResult.html +241 -0
  277. data/docs/DropboxApi/Results/RelocationBatchResultEntry.html +226 -0
  278. data/docs/DropboxApi/Results/SaveCopyReferenceResult.html +10 -10
  279. data/docs/DropboxApi/Results/SaveUrlJobStatus.html +15 -15
  280. data/docs/DropboxApi/Results/SaveUrlResult.html +10 -10
  281. data/docs/DropboxApi/Results/Search/Match.html +18 -18
  282. data/docs/DropboxApi/Results/Search.html +6 -6
  283. data/docs/DropboxApi/Results/SearchResult.html +3 -3
  284. data/docs/DropboxApi/Results/SearchV2Result.html +368 -0
  285. data/docs/DropboxApi/Results/ShareFolderLaunch.html +12 -12
  286. data/docs/DropboxApi/Results/SharedFileMembers.html +22 -22
  287. data/docs/DropboxApi/Results/SharedFolderMembers.html +22 -22
  288. data/docs/DropboxApi/Results/UploadSessionStart.html +10 -10
  289. data/docs/DropboxApi/Results/VoidResult.html +6 -6
  290. data/docs/DropboxApi/Results.html +8 -8
  291. data/docs/DropboxApi.html +7 -7
  292. data/docs/DropboxScaffoldBuilder.html +269 -102
  293. data/docs/_index.html +261 -16
  294. data/docs/class_list.html +3 -3
  295. data/docs/css/common.css +3 -0
  296. data/docs/css/style.css +3 -2
  297. data/docs/file.README.html +134 -43
  298. data/docs/file.api_coverage.html +21 -21
  299. data/docs/file.rails_setup.html +10 -10
  300. data/docs/file_list.html +2 -2
  301. data/docs/frames.html +2 -2
  302. data/docs/index.html +134 -43
  303. data/docs/js/app.js +25 -3
  304. data/docs/method_list.html +598 -238
  305. data/docs/top-level-namespace.html +6 -6
  306. data/dropbox_api.gemspec +11 -16
  307. data/lib/dropbox_api/authenticator.rb +5 -8
  308. data/lib/dropbox_api/chunked_uploader.rb +2 -1
  309. data/lib/dropbox_api/client.rb +24 -2
  310. data/lib/dropbox_api/connection_builder.rb +39 -4
  311. data/lib/dropbox_api/endpoints/auth/token_revoke.rb +2 -1
  312. data/lib/dropbox_api/endpoints/base.rb +31 -5
  313. data/lib/dropbox_api/endpoints/content_download.rb +5 -7
  314. data/lib/dropbox_api/endpoints/content_upload.rb +3 -2
  315. data/lib/dropbox_api/endpoints/file_requests/create_file_request.rb +2 -1
  316. data/lib/dropbox_api/endpoints/files/copy.rb +4 -3
  317. data/lib/dropbox_api/endpoints/files/copy_batch.rb +36 -0
  318. data/lib/dropbox_api/endpoints/files/copy_batch_check.rb +21 -0
  319. data/lib/dropbox_api/endpoints/files/copy_reference_get.rb +3 -2
  320. data/lib/dropbox_api/endpoints/files/copy_reference_save.rb +4 -3
  321. data/lib/dropbox_api/endpoints/files/create_folder.rb +3 -2
  322. data/lib/dropbox_api/endpoints/files/create_folder_batch.rb +41 -0
  323. data/lib/dropbox_api/endpoints/files/create_folder_batch_check.rb +22 -0
  324. data/lib/dropbox_api/endpoints/files/delete.rb +3 -2
  325. data/lib/dropbox_api/endpoints/files/delete_batch.rb +23 -0
  326. data/lib/dropbox_api/endpoints/files/delete_batch_check.rb +21 -0
  327. data/lib/dropbox_api/endpoints/files/download.rb +3 -2
  328. data/lib/dropbox_api/endpoints/files/get_metadata.rb +3 -2
  329. data/lib/dropbox_api/endpoints/files/get_preview.rb +3 -2
  330. data/lib/dropbox_api/endpoints/files/get_temporary_link.rb +3 -2
  331. data/lib/dropbox_api/endpoints/files/get_thumbnail.rb +3 -2
  332. data/lib/dropbox_api/endpoints/files/get_thumbnail_batch.rb +4 -3
  333. data/lib/dropbox_api/endpoints/files/list_folder.rb +3 -2
  334. data/lib/dropbox_api/endpoints/files/list_folder_continue.rb +3 -2
  335. data/lib/dropbox_api/endpoints/files/list_folder_get_latest_cursor.rb +2 -1
  336. data/lib/dropbox_api/endpoints/files/list_folder_longpoll.rb +3 -2
  337. data/lib/dropbox_api/endpoints/files/list_revisions.rb +3 -2
  338. data/lib/dropbox_api/endpoints/files/move.rb +4 -3
  339. data/lib/dropbox_api/endpoints/files/permanently_delete.rb +3 -2
  340. data/lib/dropbox_api/endpoints/files/restore.rb +4 -3
  341. data/lib/dropbox_api/endpoints/files/save_url.rb +4 -3
  342. data/lib/dropbox_api/endpoints/files/save_url_check_job_status.rb +3 -2
  343. data/lib/dropbox_api/endpoints/files/search.rb +16 -27
  344. data/lib/dropbox_api/endpoints/files/search_continue.rb +23 -0
  345. data/lib/dropbox_api/endpoints/files/upload.rb +3 -2
  346. data/lib/dropbox_api/endpoints/files/upload_session_append_v2.rb +3 -2
  347. data/lib/dropbox_api/endpoints/files/upload_session_finish.rb +4 -3
  348. data/lib/dropbox_api/endpoints/files/upload_session_start.rb +4 -3
  349. data/lib/dropbox_api/endpoints/rpc.rb +3 -2
  350. data/lib/dropbox_api/endpoints/rpc_content.rb +3 -2
  351. data/lib/dropbox_api/endpoints/rpc_notify.rb +4 -3
  352. data/lib/dropbox_api/endpoints/sharing/add_file_member.rb +4 -3
  353. data/lib/dropbox_api/endpoints/sharing/add_folder_member.rb +4 -3
  354. data/lib/dropbox_api/endpoints/sharing/create_shared_link_with_settings.rb +4 -3
  355. data/lib/dropbox_api/endpoints/sharing/get_shared_link_metadata.rb +3 -2
  356. data/lib/dropbox_api/endpoints/sharing/list_file_members.rb +4 -3
  357. data/lib/dropbox_api/endpoints/sharing/list_folder_members.rb +4 -3
  358. data/lib/dropbox_api/endpoints/sharing/list_shared_links.rb +2 -1
  359. data/lib/dropbox_api/endpoints/sharing/revoke_shared_link.rb +3 -2
  360. data/lib/dropbox_api/endpoints/sharing/share_folder.rb +3 -2
  361. data/lib/dropbox_api/endpoints/sharing/unshare_file.rb +3 -2
  362. data/lib/dropbox_api/endpoints/users/get_account.rb +3 -2
  363. data/lib/dropbox_api/endpoints/users/get_account_batch.rb +3 -2
  364. data/lib/dropbox_api/endpoints/users/get_current_account.rb +2 -1
  365. data/lib/dropbox_api/endpoints/users/get_space_usage.rb +2 -1
  366. data/lib/dropbox_api/endpoints/virtual/upload_by_chunks.rb +1 -0
  367. data/lib/dropbox_api/errors/add_file_member_error.rb +5 -4
  368. data/lib/dropbox_api/errors/add_folder_member_error.rb +11 -10
  369. data/lib/dropbox_api/errors/add_member_selector_error.rb +6 -5
  370. data/lib/dropbox_api/errors/already_shared_error.rb +1 -0
  371. data/lib/dropbox_api/errors/basic_error.rb +2 -1
  372. data/lib/dropbox_api/errors/create_file_request_error.rb +1 -0
  373. data/lib/dropbox_api/errors/create_folder_batch_error.rb +8 -0
  374. data/lib/dropbox_api/errors/create_folder_error.rb +2 -1
  375. data/lib/dropbox_api/errors/create_shared_link_with_settings_error.rb +6 -5
  376. data/lib/dropbox_api/errors/delete_error.rb +5 -3
  377. data/lib/dropbox_api/errors/download_error.rb +2 -1
  378. data/lib/dropbox_api/errors/expired_access_token_error.rb +5 -0
  379. data/lib/dropbox_api/errors/file_member_action_error.rb +5 -4
  380. data/lib/dropbox_api/errors/get_account_error.rb +2 -1
  381. data/lib/dropbox_api/errors/get_copy_reference_error.rb +2 -1
  382. data/lib/dropbox_api/errors/get_metadata_error.rb +2 -1
  383. data/lib/dropbox_api/errors/http_error.rb +1 -0
  384. data/lib/dropbox_api/errors/list_folder_continue_error.rb +3 -2
  385. data/lib/dropbox_api/errors/list_folder_error.rb +2 -1
  386. data/lib/dropbox_api/errors/list_folder_longpoll_error.rb +2 -1
  387. data/lib/dropbox_api/errors/list_revisions_error.rb +2 -1
  388. data/lib/dropbox_api/errors/list_shared_links_error.rb +3 -2
  389. data/lib/dropbox_api/errors/lookup_error.rb +6 -5
  390. data/lib/dropbox_api/errors/poll_error.rb +3 -2
  391. data/lib/dropbox_api/errors/preview_error.rb +5 -4
  392. data/lib/dropbox_api/errors/relocation_batch_entry_error.rb +10 -0
  393. data/lib/dropbox_api/errors/relocation_error.rb +8 -7
  394. data/lib/dropbox_api/errors/restore_error.rb +4 -3
  395. data/lib/dropbox_api/errors/revoke_shared_link_error.rb +5 -4
  396. data/lib/dropbox_api/errors/save_copy_reference_error.rb +6 -5
  397. data/lib/dropbox_api/errors/save_url_error.rb +5 -4
  398. data/lib/dropbox_api/errors/search_error.rb +2 -1
  399. data/lib/dropbox_api/errors/settings_error.rb +3 -2
  400. data/lib/dropbox_api/errors/share_folder_error.rb +6 -5
  401. data/lib/dropbox_api/errors/share_path_error.rb +12 -11
  402. data/lib/dropbox_api/errors/shared_folder_access_error.rb +5 -4
  403. data/lib/dropbox_api/errors/shared_link_error.rb +4 -3
  404. data/lib/dropbox_api/errors/sharing_file_access_error.rb +6 -5
  405. data/lib/dropbox_api/errors/sharing_user_error.rb +2 -1
  406. data/lib/dropbox_api/errors/thumbnail_batch_error.rb +2 -1
  407. data/lib/dropbox_api/errors/thumbnail_error.rb +5 -4
  408. data/lib/dropbox_api/errors/too_many_requests_error.rb +3 -2
  409. data/lib/dropbox_api/errors/unshare_file_error.rb +3 -2
  410. data/lib/dropbox_api/errors/upload_error.rb +2 -1
  411. data/lib/dropbox_api/errors/upload_session_finish_error.rb +4 -3
  412. data/lib/dropbox_api/errors/upload_session_lookup_error.rb +5 -4
  413. data/lib/dropbox_api/errors/upload_session_offset_error.rb +1 -0
  414. data/lib/dropbox_api/errors/upload_write_failed_error.rb +2 -1
  415. data/lib/dropbox_api/errors/write_conflict_error.rb +4 -3
  416. data/lib/dropbox_api/errors/write_error.rb +6 -5
  417. data/lib/dropbox_api/metadata/access_level.rb +1 -0
  418. data/lib/dropbox_api/metadata/add_file_member_result.rb +1 -0
  419. data/lib/dropbox_api/metadata/add_member.rb +3 -2
  420. data/lib/dropbox_api/metadata/base.rb +2 -1
  421. data/lib/dropbox_api/metadata/basic_account.rb +8 -1
  422. data/lib/dropbox_api/metadata/commit_info.rb +2 -1
  423. data/lib/dropbox_api/metadata/deleted.rb +1 -0
  424. data/lib/dropbox_api/metadata/dimensions.rb +1 -0
  425. data/lib/dropbox_api/metadata/field.rb +7 -4
  426. data/lib/dropbox_api/metadata/file.rb +2 -1
  427. data/lib/dropbox_api/metadata/file_categories_list.rb +9 -0
  428. data/lib/dropbox_api/metadata/file_category.rb +22 -0
  429. data/lib/dropbox_api/metadata/file_extensions_list.rb +13 -0
  430. data/lib/dropbox_api/metadata/file_link_metadata.rb +1 -0
  431. data/lib/dropbox_api/metadata/file_member_action.rb +2 -1
  432. data/lib/dropbox_api/metadata/file_request.rb +1 -0
  433. data/lib/dropbox_api/metadata/file_status.rb +14 -0
  434. data/lib/dropbox_api/metadata/folder.rb +2 -1
  435. data/lib/dropbox_api/metadata/folder_link_metadata.rb +1 -0
  436. data/lib/dropbox_api/metadata/folder_sharing_info.rb +1 -0
  437. data/lib/dropbox_api/metadata/link_permissions.rb +1 -0
  438. data/lib/dropbox_api/metadata/location.rb +1 -0
  439. data/lib/dropbox_api/metadata/media_info.rb +1 -0
  440. data/lib/dropbox_api/metadata/media_metadata.rb +1 -0
  441. data/lib/dropbox_api/metadata/member.rb +6 -5
  442. data/lib/dropbox_api/metadata/member_action.rb +1 -0
  443. data/lib/dropbox_api/metadata/member_action_list.rb +1 -0
  444. data/lib/dropbox_api/metadata/member_permission.rb +1 -0
  445. data/lib/dropbox_api/metadata/member_permission_list.rb +1 -0
  446. data/lib/dropbox_api/metadata/metadata_v2.rb +7 -0
  447. data/lib/dropbox_api/metadata/name.rb +1 -0
  448. data/lib/dropbox_api/metadata/namespace_id.rb +10 -0
  449. data/lib/dropbox_api/metadata/parent_folder_access_info.rb +1 -0
  450. data/lib/dropbox_api/metadata/photo_metadata.rb +1 -0
  451. data/lib/dropbox_api/metadata/resource.rb +2 -1
  452. data/lib/dropbox_api/metadata/root_info.rb +32 -0
  453. data/lib/dropbox_api/metadata/search_match_field_options.rb +9 -0
  454. data/lib/dropbox_api/metadata/search_match_type_v2.rb +16 -0
  455. data/lib/dropbox_api/metadata/search_match_v2.rb +18 -0
  456. data/lib/dropbox_api/metadata/search_options.rb +33 -0
  457. data/lib/dropbox_api/metadata/search_order_by.rb +14 -0
  458. data/lib/dropbox_api/metadata/shared_folder.rb +1 -0
  459. data/lib/dropbox_api/metadata/shared_folder_policy.rb +1 -0
  460. data/lib/dropbox_api/metadata/shared_link.rb +3 -2
  461. data/lib/dropbox_api/metadata/shared_link_metadata.rb +2 -1
  462. data/lib/dropbox_api/metadata/space_allocation.rb +1 -0
  463. data/lib/dropbox_api/metadata/space_usage.rb +1 -0
  464. data/lib/dropbox_api/metadata/tag.rb +2 -1
  465. data/lib/dropbox_api/metadata/team.rb +1 -0
  466. data/lib/dropbox_api/metadata/team_member_info.rb +1 -0
  467. data/lib/dropbox_api/metadata/team_root_info.rb +8 -0
  468. data/lib/dropbox_api/metadata/thumbnail_batch_result_data.rb +1 -0
  469. data/lib/dropbox_api/metadata/thumbnail_batch_result_entry.rb +3 -2
  470. data/lib/dropbox_api/metadata/upload_session_cursor.rb +1 -0
  471. data/lib/dropbox_api/metadata/user_root_info.rb +7 -0
  472. data/lib/dropbox_api/metadata/video_metadata.rb +1 -0
  473. data/lib/dropbox_api/metadata/write_mode.rb +6 -5
  474. data/lib/dropbox_api/middleware/decode_result.rb +3 -2
  475. data/lib/dropbox_api/middleware/path_root.rb +35 -0
  476. data/lib/dropbox_api/middleware/stack.rb +1 -0
  477. data/lib/dropbox_api/options_validator.rb +1 -0
  478. data/lib/dropbox_api/result_builder.rb +3 -2
  479. data/lib/dropbox_api/results/add_file_member_result_list.rb +1 -0
  480. data/lib/dropbox_api/results/base.rb +1 -0
  481. data/lib/dropbox_api/results/basic_account_batch.rb +1 -0
  482. data/lib/dropbox_api/results/copy_batch_result.rb +15 -0
  483. data/lib/dropbox_api/results/create_folder_batch_result.rb +21 -0
  484. data/lib/dropbox_api/results/create_folder_batch_result_entry.rb +20 -0
  485. data/lib/dropbox_api/results/delete_batch_result.rb +21 -0
  486. data/lib/dropbox_api/results/delete_batch_result_entry.rb +16 -0
  487. data/lib/dropbox_api/results/get_copy_reference_result.rb +4 -3
  488. data/lib/dropbox_api/results/get_temporary_link_result.rb +3 -2
  489. data/lib/dropbox_api/results/get_thumbnail_batch_result.rb +2 -1
  490. data/lib/dropbox_api/results/list_folder_get_latest_cursor_result.rb +2 -1
  491. data/lib/dropbox_api/results/list_folder_longpoll_result.rb +3 -2
  492. data/lib/dropbox_api/results/list_folder_result.rb +4 -3
  493. data/lib/dropbox_api/results/list_revisions_result.rb +3 -2
  494. data/lib/dropbox_api/results/list_shared_links_result.rb +4 -3
  495. data/lib/dropbox_api/results/relocation_batch_result.rb +21 -0
  496. data/lib/dropbox_api/results/relocation_batch_result_entry.rb +16 -0
  497. data/lib/dropbox_api/results/save_copy_reference_result.rb +2 -1
  498. data/lib/dropbox_api/results/save_url_job_status.rb +7 -6
  499. data/lib/dropbox_api/results/save_url_result.rb +2 -1
  500. data/lib/dropbox_api/results/search/match.rb +3 -2
  501. data/lib/dropbox_api/results/search_v2_result.rb +23 -0
  502. data/lib/dropbox_api/results/share_folder_launch.rb +4 -3
  503. data/lib/dropbox_api/results/shared_file_members.rb +5 -4
  504. data/lib/dropbox_api/results/shared_folder_members.rb +5 -4
  505. data/lib/dropbox_api/results/upload_session_start.rb +2 -1
  506. data/lib/dropbox_api/results/void_result.rb +1 -0
  507. data/lib/dropbox_api/version.rb +2 -1
  508. data/lib/dropbox_api.rb +38 -6
  509. data/yardoc/endpoint_handler.rb +2 -1
  510. data/yardoc/helpers/html_helper.rb +2 -1
  511. data/yardoc/rspec.rb +3 -2
  512. data/yardoc/templates/default/method_details/setup.rb +1 -0
  513. metadata +84 -93
  514. data/CHANGES.md +0 -7
  515. 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 Wed Sep 29 23:44:24 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.6.5).
108
108
  </div>
109
109
 
110
110
  </div>
data/dropbox_api.gemspec CHANGED
@@ -1,30 +1,25 @@
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.required_ruby_version = '>= 2.3'
21
22
 
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"
23
+ spec.add_dependency 'faraday', '< 3.0'
24
+ spec.add_dependency 'oauth2', '~> 1.1'
30
25
  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.request :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