files.com 1.1.812 → 1.1.814

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 (462) hide show
  1. checksums.yaml +4 -4
  2. data/_VERSION +1 -1
  3. data/doc/Files/APIConnectionError.html +1 -1
  4. data/doc/Files/APIError.html +1 -1
  5. data/doc/Files/AccountAlreadyExistsError.html +1 -1
  6. data/doc/Files/AccountLineItem.html +1 -1
  7. data/doc/Files/AccountOverdueError.html +1 -1
  8. data/doc/Files/Action.html +1 -1
  9. data/doc/Files/ActionLog.html +1 -1
  10. data/doc/Files/ActionNotificationExport.html +1 -1
  11. data/doc/Files/ActionNotificationExportResult.html +1 -1
  12. data/doc/Files/AdditionalAuthenticationRequiredError.html +1 -1
  13. data/doc/Files/AgentNode.html +1 -1
  14. data/doc/Files/AgentNodeConnection.html +1 -1
  15. data/doc/Files/AgentNodeInstance.html +1 -1
  16. data/doc/Files/AgentPushUpdate.html +1 -1
  17. data/doc/Files/AgentPushUpdateBlockedError.html +1 -1
  18. data/doc/Files/AgentUnavailableError.html +1 -1
  19. data/doc/Files/AgentUpgradeRequiredError.html +1 -1
  20. data/doc/Files/AiAssistantPersonality.html +1 -1
  21. data/doc/Files/AiTask.html +1 -1
  22. data/doc/Files/AiTaskCannotBeRunManuallyError.html +1 -1
  23. data/doc/Files/AlreadyCompletedError.html +1 -1
  24. data/doc/Files/Api.html +20 -13
  25. data/doc/Files/ApiClient/RequestLogContext.html +29 -29
  26. data/doc/Files/ApiClient/TransferSettings.html +721 -0
  27. data/doc/Files/ApiClient.html +756 -204
  28. data/doc/Files/ApiKey.html +1 -1
  29. data/doc/Files/ApiKeyIsDisabledError.html +1 -1
  30. data/doc/Files/ApiKeyIsPathRestrictedError.html +1 -1
  31. data/doc/Files/ApiKeyNotFoundError.html +1 -1
  32. data/doc/Files/ApiKeyOnlyForDesktopAppError.html +1 -1
  33. data/doc/Files/ApiKeyOnlyForFileOperationsError.html +1 -1
  34. data/doc/Files/ApiKeyOnlyForMobileAppError.html +1 -1
  35. data/doc/Files/ApiKeyOnlyForOfficeIntegrationError.html +1 -1
  36. data/doc/Files/ApiKeySessionsNotSupportedError.html +1 -1
  37. data/doc/Files/ApiRequestLog.html +1 -1
  38. data/doc/Files/App.html +1 -1
  39. data/doc/Files/As2IncomingMessage.html +1 -1
  40. data/doc/Files/As2OutgoingMessage.html +1 -1
  41. data/doc/Files/As2Partner.html +1 -1
  42. data/doc/Files/As2Station.html +1 -1
  43. data/doc/Files/AttachmentTooLargeError.html +1 -1
  44. data/doc/Files/AuthenticationError.html +1 -1
  45. data/doc/Files/AuthenticationRequiredError.html +1 -1
  46. data/doc/Files/Auto.html +1 -1
  47. data/doc/Files/Automation.html +1 -1
  48. data/doc/Files/AutomationAuthoringSchema.html +1 -1
  49. data/doc/Files/AutomationCannotBeRunManuallyError.html +1 -1
  50. data/doc/Files/AutomationExecutionNode.html +1 -1
  51. data/doc/Files/AutomationLog.html +1 -1
  52. data/doc/Files/AutomationRun.html +1 -1
  53. data/doc/Files/AutomationsUnavailableError.html +1 -1
  54. data/doc/Files/BadRequestError.html +1 -1
  55. data/doc/Files/BandwidthSnapshot.html +1 -1
  56. data/doc/Files/Behavior.html +1 -1
  57. data/doc/Files/BehaviorNotAllowedOnRemoteServerError.html +1 -1
  58. data/doc/Files/BillingInformationHiddenError.html +1 -1
  59. data/doc/Files/BillingPermissionRequiredError.html +1 -1
  60. data/doc/Files/BufferedUploadDisabledForThisDestinationError.html +1 -1
  61. data/doc/Files/Bundle.html +1 -1
  62. data/doc/Files/BundleAction.html +1 -1
  63. data/doc/Files/BundleDownload.html +1 -1
  64. data/doc/Files/BundleMaximumUsesReachedError.html +1 -1
  65. data/doc/Files/BundleNotification.html +1 -1
  66. data/doc/Files/BundleOnlyAllowsPreviewsError.html +1 -1
  67. data/doc/Files/BundleOperationRequiresSubfolderError.html +1 -1
  68. data/doc/Files/BundlePath.html +1 -1
  69. data/doc/Files/BundlePathNotFoundError.html +1 -1
  70. data/doc/Files/BundlePermissionRequiredError.html +1 -1
  71. data/doc/Files/BundleRecipient.html +1 -1
  72. data/doc/Files/BundleRegistration.html +1 -1
  73. data/doc/Files/BundleRegistrationCodeFailedError.html +1 -1
  74. data/doc/Files/BundleRegistrationNotFoundError.html +1 -1
  75. data/doc/Files/CannotAdministerHigherLevelUserError.html +1 -1
  76. data/doc/Files/CannotDownloadDirectoryError.html +1 -1
  77. data/doc/Files/CannotLoginWhileUsingKeyError.html +1 -1
  78. data/doc/Files/CantActForOtherUserError.html +1 -1
  79. data/doc/Files/CantMoveWithMultipleLocationsError.html +1 -1
  80. data/doc/Files/ChatMessage.html +1 -1
  81. data/doc/Files/ChatSession.html +1 -1
  82. data/doc/Files/ChildSiteManagementPolicy.html +1 -1
  83. data/doc/Files/Clickwrap.html +1 -1
  84. data/doc/Files/CodeNotFoundError.html +1 -1
  85. data/doc/Files/ConfigurationLockedPathError.html +1 -1
  86. data/doc/Files/ContactAdminForPasswordChangeHelpError.html +1 -1
  87. data/doc/Files/CouldNotCreateParentError.html +1 -1
  88. data/doc/Files/CustomDomain.html +1 -1
  89. data/doc/Files/DatetimeParseError.html +1 -1
  90. data/doc/Files/DesktopConfigurationProfile.html +1 -1
  91. data/doc/Files/DestinationExistsError.html +1 -1
  92. data/doc/Files/DestinationFolderLimitedError.html +1 -1
  93. data/doc/Files/DestinationParentConflictError.html +1 -1
  94. data/doc/Files/DestinationParentDoesNotExistError.html +1 -1
  95. data/doc/Files/DestinationSameError.html +1 -1
  96. data/doc/Files/DestinationSiteMismatchError.html +1 -1
  97. data/doc/Files/DirectConnectionInfo.html +1 -1
  98. data/doc/Files/DnsRecord.html +1 -1
  99. data/doc/Files/DoesNotSupportSortingError.html +1 -1
  100. data/doc/Files/DuplicateShareRecipientError.html +1 -1
  101. data/doc/Files/EmailIncomingMessage.html +1 -1
  102. data/doc/Files/EmailLog.html +1 -1
  103. data/doc/Files/Error.html +2 -2
  104. data/doc/Files/Errors.html +1 -1
  105. data/doc/Files/EventChannel.html +1 -1
  106. data/doc/Files/EventDeliveryAttempt.html +1 -1
  107. data/doc/Files/EventRecord.html +1 -1
  108. data/doc/Files/EventSubscription.html +1 -1
  109. data/doc/Files/EventTarget.html +1 -1
  110. data/doc/Files/ExavaultApiRequestLog.html +1 -1
  111. data/doc/Files/ExceededRuntimeLimitError.html +1 -1
  112. data/doc/Files/Expectation.html +1 -1
  113. data/doc/Files/ExpectationAlreadyHasOpenWindowError.html +1 -1
  114. data/doc/Files/ExpectationEvaluation.html +1 -1
  115. data/doc/Files/ExpectationIncident.html +1 -1
  116. data/doc/Files/ExpectationNotManualTriggerError.html +1 -1
  117. data/doc/Files/ExpiredPrivateKeyError.html +1 -1
  118. data/doc/Files/ExpiredPublicKeyError.html +1 -1
  119. data/doc/Files/ExportFailureError.html +1 -1
  120. data/doc/Files/ExportNotReadyError.html +1 -1
  121. data/doc/Files/ExternalEvent.html +1 -1
  122. data/doc/Files/FailedToChangePasswordError.html +1 -1
  123. data/doc/Files/File.html +2019 -1515
  124. data/doc/Files/FileAction.html +1 -1
  125. data/doc/Files/FileActionError.html +1 -1
  126. data/doc/Files/FileComment.html +1 -1
  127. data/doc/Files/FileCommentReaction.html +1 -1
  128. data/doc/Files/FileLockedError.html +1 -1
  129. data/doc/Files/FileMigration.html +1 -1
  130. data/doc/Files/FileMigrationLog.html +1 -1
  131. data/doc/Files/FileNotFoundError.html +1 -1
  132. data/doc/Files/FileNotUploadedError.html +1 -1
  133. data/doc/Files/FilePendingProcessingError.html +1 -1
  134. data/doc/Files/FileProcessingErrorError.html +1 -1
  135. data/doc/Files/FileTooBigToDecryptError.html +1 -1
  136. data/doc/Files/FileTooBigToEncryptError.html +1 -1
  137. data/doc/Files/FileUploadNotFoundError.html +1 -1
  138. data/doc/Files/FileUploadPart.html +1 -1
  139. data/doc/Files/FileUploadedToWrongRegionError.html +1 -1
  140. data/doc/Files/FileUtils.html +1 -1
  141. data/doc/Files/FilenameTooLongError.html +1 -1
  142. data/doc/Files/FilesAgentFailedAuthorizationError.html +1 -1
  143. data/doc/Files/FilesNativeStorageOverloadedError.html +1 -1
  144. data/doc/Files/Folder.html +1 -1
  145. data/doc/Files/FolderAdminOrBillingPermissionRequiredError.html +1 -1
  146. data/doc/Files/FolderAdminPermissionRequiredError.html +1 -1
  147. data/doc/Files/FolderLockedError.html +1 -1
  148. data/doc/Files/FolderMustNotBeAFileError.html +1 -1
  149. data/doc/Files/FolderNotEmptyError.html +1 -1
  150. data/doc/Files/FoldersNotAllowedError.html +1 -1
  151. data/doc/Files/FormField.html +1 -1
  152. data/doc/Files/FormFieldSet.html +1 -1
  153. data/doc/Files/FtpActionLog.html +1 -1
  154. data/doc/Files/FullPermissionRequiredError.html +1 -1
  155. data/doc/Files/GpgKey.html +1 -1
  156. data/doc/Files/Group.html +1 -1
  157. data/doc/Files/GroupNotFoundError.html +1 -1
  158. data/doc/Files/GroupUser.html +1 -1
  159. data/doc/Files/History.html +1 -1
  160. data/doc/Files/HistoryExport.html +1 -1
  161. data/doc/Files/HistoryExportResult.html +1 -1
  162. data/doc/Files/HistoryPermissionRequiredError.html +1 -1
  163. data/doc/Files/HistoryUnavailableError.html +1 -1
  164. data/doc/Files/HolidayCalendar.html +1 -1
  165. data/doc/Files/HolidayRegion.html +1 -1
  166. data/doc/Files/Image.html +1 -1
  167. data/doc/Files/InAppAiAssistantUnavailableError.html +1 -1
  168. data/doc/Files/InboundS3Log.html +1 -1
  169. data/doc/Files/InboxNotFoundError.html +1 -1
  170. data/doc/Files/InboxRecipient.html +1 -1
  171. data/doc/Files/InboxRegistration.html +1 -1
  172. data/doc/Files/InboxRegistrationCodeFailedError.html +1 -1
  173. data/doc/Files/InboxUpload.html +1 -1
  174. data/doc/Files/InsufficientPermissionForParamsError.html +1 -1
  175. data/doc/Files/InsufficientPermissionForSiteError.html +1 -1
  176. data/doc/Files/IntegrationCentricProfile.html +1 -1
  177. data/doc/Files/InternalGeneralErrorError.html +1 -1
  178. data/doc/Files/InvalidBodyError.html +1 -1
  179. data/doc/Files/InvalidBundleCodeError.html +1 -1
  180. data/doc/Files/InvalidCredentialsError.html +1 -1
  181. data/doc/Files/InvalidCursorError.html +1 -1
  182. data/doc/Files/InvalidCursorTypeForSortError.html +1 -1
  183. data/doc/Files/InvalidEtagsError.html +1 -1
  184. data/doc/Files/InvalidFileTypeError.html +1 -1
  185. data/doc/Files/InvalidFilenameError.html +1 -1
  186. data/doc/Files/InvalidFilterAliasCombinationError.html +1 -1
  187. data/doc/Files/InvalidFilterFieldError.html +1 -1
  188. data/doc/Files/InvalidFilterParamError.html +1 -1
  189. data/doc/Files/InvalidFilterParamFormatError.html +1 -1
  190. data/doc/Files/InvalidFilterParamValueError.html +1 -1
  191. data/doc/Files/InvalidInputEncodingError.html +1 -1
  192. data/doc/Files/InvalidInterfaceError.html +1 -1
  193. data/doc/Files/InvalidOauthError.html +1 -1
  194. data/doc/Files/InvalidOauthProviderError.html +1 -1
  195. data/doc/Files/InvalidOrExpiredCodeError.html +1 -1
  196. data/doc/Files/InvalidParameterError.html +5 -1
  197. data/doc/Files/InvalidPathError.html +1 -1
  198. data/doc/Files/InvalidPriorityColorError.html +1 -1
  199. data/doc/Files/InvalidRangeError.html +1 -1
  200. data/doc/Files/InvalidReturnToUrlError.html +1 -1
  201. data/doc/Files/InvalidSearchQueryError.html +1 -1
  202. data/doc/Files/InvalidSessionError.html +1 -1
  203. data/doc/Files/InvalidSiteError.html +1 -1
  204. data/doc/Files/InvalidSortFieldError.html +1 -1
  205. data/doc/Files/InvalidSortFilterCombinationError.html +1 -1
  206. data/doc/Files/InvalidUploadOffsetError.html +1 -1
  207. data/doc/Files/InvalidUploadPartGapError.html +1 -1
  208. data/doc/Files/InvalidUploadPartSizeError.html +1 -1
  209. data/doc/Files/InvalidUsernameOrPasswordError.html +1 -1
  210. data/doc/Files/InvalidWorkspaceIdHeaderError.html +1 -1
  211. data/doc/Files/InvalidZipFileError.html +1 -1
  212. data/doc/Files/Invoice.html +1 -1
  213. data/doc/Files/InvoiceLineItem.html +1 -1
  214. data/doc/Files/IpAddress.html +1 -1
  215. data/doc/Files/KeyLifecycleRule.html +1 -1
  216. data/doc/Files/List.html +1 -1
  217. data/doc/Files/Lock.html +1 -1
  218. data/doc/Files/LockOperationBusyError.html +1 -1
  219. data/doc/Files/LockedOutError.html +1 -1
  220. data/doc/Files/LockoutRegionMismatchError.html +1 -1
  221. data/doc/Files/MetadataCategory.html +1 -1
  222. data/doc/Files/MetadataNotSupportedOnRemotesError.html +1 -1
  223. data/doc/Files/MethodNotAllowedError.html +1 -1
  224. data/doc/Files/MigrationInProgressError.html +1 -1
  225. data/doc/Files/MissingParameterError.html +1 -1
  226. data/doc/Files/ModelSaveErrorError.html +1 -1
  227. data/doc/Files/MoverAccessDeniedError.html +1 -1
  228. data/doc/Files/MoverPackageRequiredError.html +1 -1
  229. data/doc/Files/MultipleProcessingErrorsError.html +1 -1
  230. data/doc/Files/MultipleSortParamsNotAllowedError.html +1 -1
  231. data/doc/Files/MustAuthenticateWithApiKeyError.html +1 -1
  232. data/doc/Files/NeedAdminPermissionForInboxError.html +1 -1
  233. data/doc/Files/NestedNotFoundError.html +1 -1
  234. data/doc/Files/NoAccountForSiteError.html +1 -1
  235. data/doc/Files/NoValidInputParamsError.html +1 -1
  236. data/doc/Files/NonAdminsMustQueryByFolderOrPathError.html +1 -1
  237. data/doc/Files/NotAllowedToCreateBundleError.html +1 -1
  238. data/doc/Files/NotAuthenticatedError.html +1 -1
  239. data/doc/Files/NotAuthorizedError.html +1 -1
  240. data/doc/Files/NotEnqueuableSyncError.html +1 -1
  241. data/doc/Files/NotFoundError.html +1 -1
  242. data/doc/Files/NotImplementedError.html +1 -1
  243. data/doc/Files/Notification.html +1 -1
  244. data/doc/Files/OffsetUploadNotAllowedWithMalwareScanningError.html +1 -1
  245. data/doc/Files/OneTimePasswordIncorrectError.html +1 -1
  246. data/doc/Files/OutboundConnectionLog.html +1 -1
  247. data/doc/Files/PartNumberTooLargeError.html +1 -1
  248. data/doc/Files/Partner.html +1 -1
  249. data/doc/Files/PartnerChannel.html +1 -1
  250. data/doc/Files/PartnerChannelTemplate.html +1 -1
  251. data/doc/Files/PartnerConnection.html +1 -1
  252. data/doc/Files/PartnerSite.html +1 -1
  253. data/doc/Files/PartnerSiteRequest.html +1 -1
  254. data/doc/Files/PasswordChangeNotRequiredError.html +1 -1
  255. data/doc/Files/PasswordChangeRequiredError.html +1 -1
  256. data/doc/Files/PathCannotHaveTrailingWhitespaceError.html +1 -1
  257. data/doc/Files/PathTooLongError.html +1 -1
  258. data/doc/Files/PathUtil.html +1 -1
  259. data/doc/Files/Payment.html +1 -1
  260. data/doc/Files/PaymentLineItem.html +1 -1
  261. data/doc/Files/PaymentMethodErrorError.html +1 -1
  262. data/doc/Files/PendingWorkEvent.html +1 -1
  263. data/doc/Files/Permission.html +1 -1
  264. data/doc/Files/PlanNotFoundError.html +1 -1
  265. data/doc/Files/Preview.html +1 -1
  266. data/doc/Files/PreviewOnlyPermissionCannotDownloadError.html +1 -1
  267. data/doc/Files/ProcessingFailureError.html +1 -1
  268. data/doc/Files/PublicHostingRequestLog.html +1 -1
  269. data/doc/Files/PublicIpAddress.html +1 -1
  270. data/doc/Files/PublicKey.html +1 -1
  271. data/doc/Files/RateLimitedError.html +1 -1
  272. data/doc/Files/ReadOnlySessionError.html +1 -1
  273. data/doc/Files/ReadPermissionRequiredError.html +1 -1
  274. data/doc/Files/ReauthenticationFailedError.html +1 -1
  275. data/doc/Files/ReauthenticationFailedFinalError.html +1 -1
  276. data/doc/Files/ReauthenticationNeededActionError.html +1 -1
  277. data/doc/Files/ReauthenticationNeededFieldsError.html +1 -1
  278. data/doc/Files/ReauthenticationRateLimitedError.html +1 -1
  279. data/doc/Files/RecaptchaFailedError.html +1 -1
  280. data/doc/Files/RecipientAlreadySharedError.html +1 -1
  281. data/doc/Files/RemoteBandwidthSnapshot.html +1 -1
  282. data/doc/Files/RemoteDesktopDebugLoggingDisabledError.html +1 -1
  283. data/doc/Files/RemoteEntryReadOnlyError.html +1 -1
  284. data/doc/Files/RemoteMountBackend.html +1 -1
  285. data/doc/Files/RemoteServer.html +1 -1
  286. data/doc/Files/RemoteServerConfigurationFile.html +1 -1
  287. data/doc/Files/RemoteServerCredential.html +1 -1
  288. data/doc/Files/RemoteServerErrorError.html +1 -1
  289. data/doc/Files/Request.html +1 -1
  290. data/doc/Files/RequestBodyTooLargeError.html +1 -1
  291. data/doc/Files/RequestParamsContainInvalidCharacterError.html +1 -1
  292. data/doc/Files/RequestParamsInvalidError.html +1 -1
  293. data/doc/Files/RequestParamsRequiredError.html +1 -1
  294. data/doc/Files/ResourceBelongsToParentSiteError.html +1 -1
  295. data/doc/Files/ResourceLockedError.html +1 -1
  296. data/doc/Files/Response.html +1 -1
  297. data/doc/Files/Restore.html +1 -1
  298. data/doc/Files/RootFolderBehaviorSiteAdminRequiredError.html +1 -1
  299. data/doc/Files/RootFolderBehaviorSkipSiteAdminRequiredError.html +1 -1
  300. data/doc/Files/Schedule.html +1 -1
  301. data/doc/Files/ScheduledExport.html +1 -1
  302. data/doc/Files/ScimLog.html +1 -1
  303. data/doc/Files/SearchAllOnChildPathError.html +1 -1
  304. data/doc/Files/SearchUnavailableError.html +1 -1
  305. data/doc/Files/Secret.html +1 -1
  306. data/doc/Files/SelfManagedRequiredError.html +1 -1
  307. data/doc/Files/ServiceUnavailableError.html +1 -1
  308. data/doc/Files/Session.html +1 -1
  309. data/doc/Files/SettingsChange.html +1 -1
  310. data/doc/Files/SftpActionLog.html +1 -1
  311. data/doc/Files/SftpHostKey.html +1 -1
  312. data/doc/Files/ShareGroup.html +1 -1
  313. data/doc/Files/ShareGroupMember.html +1 -1
  314. data/doc/Files/SiemHttpDestination.html +1 -1
  315. data/doc/Files/SiemHttpDestinationEvent.html +1 -1
  316. data/doc/Files/Site.html +1 -1
  317. data/doc/Files/SiteAdminOrPartnerAdminPermissionRequiredError.html +1 -1
  318. data/doc/Files/SiteAdminOrWorkspaceAdminOrFolderAdminPermissionRequiredError.html +1 -1
  319. data/doc/Files/SiteAdminOrWorkspaceAdminOrPartnerAdminOrFolderAdminPermissionRequiredError.html +1 -1
  320. data/doc/Files/SiteAdminOrWorkspaceAdminOrPartnerAdminPermissionRequiredError.html +1 -1
  321. data/doc/Files/SiteAdminOrWorkspaceAdminPermissionRequiredError.html +1 -1
  322. data/doc/Files/SiteAdminRequiredError.html +1 -1
  323. data/doc/Files/SiteConfigurationError.html +1 -1
  324. data/doc/Files/SiteDisabledError.html +1 -1
  325. data/doc/Files/SiteFilesAreImmutableError.html +1 -1
  326. data/doc/Files/SiteNotFoundError.html +1 -1
  327. data/doc/Files/SiteSubdomainRedirect.html +1 -1
  328. data/doc/Files/SiteWasRemovedError.html +1 -1
  329. data/doc/Files/SizableIO.html +43 -41
  330. data/doc/Files/Snapshot.html +1 -1
  331. data/doc/Files/SsoEvent.html +1 -1
  332. data/doc/Files/SsoStrategy.html +1 -1
  333. data/doc/Files/Status.html +1 -1
  334. data/doc/Files/Style.html +1 -1
  335. data/doc/Files/SubfolderLockedError.html +1 -1
  336. data/doc/Files/Sync.html +1 -1
  337. data/doc/Files/SyncInProgressError.html +1 -1
  338. data/doc/Files/SyncLog.html +1 -1
  339. data/doc/Files/SyncRun.html +1 -1
  340. data/doc/Files/SyncRunLiveTransfer.html +1 -1
  341. data/doc/Files/SystemProfiler.html +1 -1
  342. data/doc/Files/TooManyConcurrentLoginsError.html +1 -1
  343. data/doc/Files/TooManyConcurrentRequestsError.html +1 -1
  344. data/doc/Files/TooManyLoginAttemptsError.html +1 -1
  345. data/doc/Files/TooManyRequestsError.html +1 -1
  346. data/doc/Files/TooManySharesError.html +1 -1
  347. data/doc/Files/Transfer/BufferLimitError.html +175 -0
  348. data/doc/Files/Transfer/ByteBudget/Reservation.html +301 -0
  349. data/doc/Files/Transfer/ByteBudget.html +748 -0
  350. data/doc/Files/Transfer/CancelledError.html +235 -0
  351. data/doc/Files/Transfer/Checkpoint.html +1371 -0
  352. data/doc/Files/Transfer/CheckpointError.html +173 -0
  353. data/doc/Files/Transfer/ClientTransport/ClientResponse.html +661 -0
  354. data/doc/Files/Transfer/ClientTransport/Reader.html +530 -0
  355. data/doc/Files/Transfer/ClientTransport.html +675 -0
  356. data/doc/Files/Transfer/Clock.html +189 -0
  357. data/doc/Files/Transfer/Control.html +667 -0
  358. data/doc/Files/Transfer/Controller/Attempt.html +465 -0
  359. data/doc/Files/Transfer/Controller.html +1166 -0
  360. data/doc/Files/Transfer/Coordinator/Timing.html +568 -0
  361. data/doc/Files/Transfer/Coordinator.html +534 -0
  362. data/doc/Files/Transfer/DownloadCoordinator/FileSink.html +976 -0
  363. data/doc/Files/Transfer/DownloadCoordinator/IoSink.html +1168 -0
  364. data/doc/Files/Transfer/DownloadCoordinator/Piece.html +875 -0
  365. data/doc/Files/Transfer/DownloadCoordinator.html +728 -0
  366. data/doc/Files/Transfer/FileSlots.html +480 -0
  367. data/doc/Files/Transfer/FrontendResponseError.html +235 -0
  368. data/doc/Files/Transfer/Holds.html +505 -0
  369. data/doc/Files/Transfer/HttpTransport.html +579 -0
  370. data/doc/Files/Transfer/Job.html +2338 -0
  371. data/doc/Files/Transfer/Options.html +924 -0
  372. data/doc/Files/Transfer/PausedError.html +319 -0
  373. data/doc/Files/Transfer/Policy.html +1642 -0
  374. data/doc/Files/Transfer/RequestPermits.html +160 -0
  375. data/doc/Files/Transfer/SourceChangedError.html +235 -0
  376. data/doc/Files/Transfer/StorageResponse.html +546 -0
  377. data/doc/Files/Transfer/StorageRetry.html +1098 -0
  378. data/doc/Files/Transfer/UploadCoordinator/Grant.html +1048 -0
  379. data/doc/Files/Transfer/UploadCoordinator/Part.html +1048 -0
  380. data/doc/Files/Transfer/UploadCoordinator/Region.html +295 -0
  381. data/doc/Files/Transfer/UploadCoordinator/Segments.html +299 -0
  382. data/doc/Files/Transfer/UploadCoordinator/Source.html +725 -0
  383. data/doc/Files/Transfer/UploadCoordinator/StreamSource.html +664 -0
  384. data/doc/Files/Transfer/UploadCoordinator.html +546 -0
  385. data/doc/Files/Transfer/UploadPlan.html +522 -0
  386. data/doc/Files/Transfer/VersionChangedError.html +235 -0
  387. data/doc/Files/Transfer.html +134 -0
  388. data/doc/Files/TrialExpiredError.html +1 -1
  389. data/doc/Files/TrialLockedError.html +1 -1
  390. data/doc/Files/TwoFactorAuthenticationCodeAlreadySentError.html +1 -1
  391. data/doc/Files/TwoFactorAuthenticationCountryBlacklistedError.html +1 -1
  392. data/doc/Files/TwoFactorAuthenticationErrorError.html +1 -1
  393. data/doc/Files/TwoFactorAuthenticationGeneralErrorError.html +1 -1
  394. data/doc/Files/TwoFactorAuthenticationMethodUnsupportedErrorError.html +1 -1
  395. data/doc/Files/TwoFactorAuthenticationRequiredError.html +1 -1
  396. data/doc/Files/TwoFactorAuthenticationSetupExpiredError.html +1 -1
  397. data/doc/Files/TwoFactorAuthenticationUnsubscribedRecipientError.html +1 -1
  398. data/doc/Files/URI.html +1 -1
  399. data/doc/Files/UnrecognizedSortIndexError.html +1 -1
  400. data/doc/Files/UnsupportedCurrencyError.html +1 -1
  401. data/doc/Files/UnsupportedHttpResponseFormatError.html +1 -1
  402. data/doc/Files/UnsupportedMediaTypeError.html +1 -1
  403. data/doc/Files/UpdatesNotAllowedForRemotesError.html +1 -1
  404. data/doc/Files/UploadsUnavailableError.html +1 -1
  405. data/doc/Files/UsageByTopLevelDir.html +1 -1
  406. data/doc/Files/UsageDailySnapshot.html +1 -1
  407. data/doc/Files/UsageSnapshot.html +1 -1
  408. data/doc/Files/User.html +1 -1
  409. data/doc/Files/UserAdditionalEmailRecipient.html +1 -1
  410. data/doc/Files/UserCipherUse.html +1 -1
  411. data/doc/Files/UserIdInvalidError.html +1 -1
  412. data/doc/Files/UserIdOnUserEndpointError.html +1 -1
  413. data/doc/Files/UserIdWithoutSiteAdminError.html +1 -1
  414. data/doc/Files/UserLifecycleRule.html +1 -1
  415. data/doc/Files/UserNotFoundError.html +1 -1
  416. data/doc/Files/UserRequest.html +1 -1
  417. data/doc/Files/UserRequestsEnabledRequiredError.html +1 -1
  418. data/doc/Files/UserRequiredError.html +1 -1
  419. data/doc/Files/UserSecurityEvent.html +1 -1
  420. data/doc/Files/UserSftpClientUse.html +1 -1
  421. data/doc/Files/Util/LogSettings.html +1 -1
  422. data/doc/Files/Util.html +1 -1
  423. data/doc/Files/WebDavActionLog.html +1 -1
  424. data/doc/Files/WebhookTest.html +1 -1
  425. data/doc/Files/Workspace.html +1 -1
  426. data/doc/Files/WriteAndBundlePermissionRequiredError.html +1 -1
  427. data/doc/Files/WritePermissionRequiredError.html +1 -1
  428. data/doc/Files/ZipListEntry.html +1 -1
  429. data/doc/Files.html +116 -116
  430. data/doc/_index.html +314 -4
  431. data/doc/class_list.html +1 -1
  432. data/doc/file.README.html +1 -1
  433. data/doc/index.html +1 -1
  434. data/doc/method_list.html +4703 -2415
  435. data/doc/top-level-namespace.html +1 -1
  436. data/docs/file.md +346 -0
  437. data/lib/files.com/api.rb +6 -1
  438. data/lib/files.com/api_client.rb +220 -32
  439. data/lib/files.com/models/file.rb +124 -17
  440. data/lib/files.com/sizable_io.rb +1 -0
  441. data/lib/files.com/transfer/budgets.rb +123 -0
  442. data/lib/files.com/transfer/checkpoint.rb +113 -0
  443. data/lib/files.com/transfer/clock.rb +14 -0
  444. data/lib/files.com/transfer/controller.rb +549 -0
  445. data/lib/files.com/transfer/download_coordinator.rb +906 -0
  446. data/lib/files.com/transfer/errors.rb +100 -0
  447. data/lib/files.com/transfer/http_transport.rb +337 -0
  448. data/lib/files.com/transfer/job.rb +778 -0
  449. data/lib/files.com/transfer/options.rb +126 -0
  450. data/lib/files.com/transfer/policy.rb +91 -0
  451. data/lib/files.com/transfer/storage_retry.rb +169 -0
  452. data/lib/files.com/transfer/upload_coordinator.rb +657 -0
  453. data/lib/files.com/transfer/upload_plan.rb +157 -0
  454. data/lib/files.com.rb +13 -0
  455. data/spec/lib/api_client_spec.rb +125 -3
  456. data/spec/models/file_transfer_spec.rb +70 -4
  457. data/spec/support/transfer_server.rb +113 -14
  458. data/spec/transfer/adaptive_download_spec.rb +1102 -0
  459. data/spec/transfer/adaptive_upload_spec.rb +1602 -0
  460. data/spec/transfer/concurrency_controller_spec.rb +382 -0
  461. data/spec/workspace_id_spec.rb +19 -14
  462. metadata +59 -1
@@ -0,0 +1,1098 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: Files::Transfer::StorageRetry
8
+
9
+ &mdash; Documentation by YARD 0.9.45
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css">
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css">
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Files::Transfer::StorageRetry";
19
+ relpath = '../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div id="main_progress" aria-hidden="true"></div>
31
+
32
+ <div class="nav_wrap">
33
+ <iframe id="nav" src="../../class_list.html?1"></iframe>
34
+ <div id="resizer"></div>
35
+ </div>
36
+
37
+ <div id="main" tabindex="-1">
38
+ <div id="header">
39
+ <div id="menu">
40
+
41
+ <a href="../../_index.html">Index (S)</a> &raquo;
42
+ <span class='title'><span class='object_link'><a href="../../Files.html" title="Files (module)">Files</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Transfer.html" title="Files::Transfer (module)">Transfer</a></span></span>
43
+ &raquo;
44
+ <span class="title">StorageRetry</span>
45
+
46
+ </div>
47
+
48
+ <div id="search">
49
+
50
+ <a class="full_list_link" id="class_list_link"
51
+ href="../../class_list.html">
52
+
53
+ <svg width="24" height="24">
54
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
55
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
56
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
57
+ </svg>
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <div id="content"><h1>Module: Files::Transfer::StorageRetry
65
+
66
+
67
+
68
+ </h1>
69
+ <div class="box_info">
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ <dl>
82
+ <dt>Defined in:</dt>
83
+ <dd>lib/files.com/transfer/storage_retry.rb
84
+ </dd>
85
+ </dl>
86
+
87
+ </div>
88
+
89
+ <h2>Overview</h2><div class="docstring">
90
+ <div class="discussion">
91
+ <p>What a storage response means for the request that got it, and when a signed URL stops working.</p>
92
+ <p>429 and 503 are throttles, retried after their whole Retry-After (seconds or an HTTP date) or at once without
93
+ one; a Retry-After too large to schedule refuses the request instead. 500, 502, 504, a network failure and S3's
94
+ RequestTimeout error (a 400 whose whole body, of at most 64 KiB, is a complete, DTD-free XML document whose
95
+ unnamespaced root <Error> has a direct <Code>RequestTimeout</Code>) are retried after 100 ms. Throttles hold the
96
+ destination back for every request of the job (Holds). Anything else is refused: 501, the other 4xx,
97
+ 3xx (redirects are never followed) and a success that does not acknowledge the part. Each retry is a new
98
+ admission, within the caller's Files.max_network_retries, and never for a part whose instructions say
99
+ retry_parts: false.</p>
100
+
101
+ </div>
102
+ </div>
103
+ <div class="tags">
104
+
105
+
106
+ </div>
107
+
108
+ <h2>
109
+ Constant Summary
110
+ <small><a href="#" class="constants_summary_toggle">collapse</a></small>
111
+ </h2>
112
+
113
+ <dl class="constants">
114
+
115
+ <dt id="THROTTLE_STATUSES-constant" class="">THROTTLE_STATUSES =
116
+
117
+ </dt>
118
+ <dd><pre class="code"><span class='lbracket'>[</span> <span class='int'>429</span><span class='comma'>,</span> <span class='int'>503</span> <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
119
+
120
+ <dt id="RETRY_STATUSES-constant" class="">RETRY_STATUSES =
121
+
122
+ </dt>
123
+ <dd><pre class="code"><span class='lbracket'>[</span> <span class='int'>500</span><span class='comma'>,</span> <span class='int'>502</span><span class='comma'>,</span> <span class='int'>504</span> <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
124
+
125
+ <dt id="RETRY_DELAY-constant" class="">RETRY_DELAY =
126
+
127
+ </dt>
128
+ <dd><pre class="code"><span class='float'>0.1</span></pre></dd>
129
+
130
+ <dt id="EXPIRY_MARGIN-constant" class="">EXPIRY_MARGIN =
131
+ <div class="docstring">
132
+ <div class="discussion">
133
+ <p>Seconds before a signed URL's expiry at which it is renewed rather than used.</p>
134
+
135
+ </div>
136
+ </div>
137
+ <div class="tags">
138
+
139
+
140
+ </div>
141
+ </dt>
142
+ <dd><pre class="code"><span class='int'>5</span></pre></dd>
143
+
144
+ <dt id="FRONTEND_HEADER-constant" class="">FRONTEND_HEADER =
145
+
146
+ </dt>
147
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>x-files-frontend-app</span><span class='tstring_end'>&quot;</span></span></pre></dd>
148
+
149
+ <dt id="XML_MAX_BYTES-constant" class="">XML_MAX_BYTES =
150
+ <div class="docstring">
151
+ <div class="discussion">
152
+ <p>The most of a 400's body judged, which bounds the XML checked.</p>
153
+
154
+ </div>
155
+ </div>
156
+ <div class="tags">
157
+
158
+
159
+ </div>
160
+ </dt>
161
+ <dd><pre class="code"><span class='int'>64</span> <span class='op'>*</span> <span class='int'>1024</span></pre></dd>
162
+
163
+ <dt id="XML_DECLARATION-constant" class="">XML_DECLARATION =
164
+ <div class="docstring">
165
+ <div class="discussion">
166
+ <p>An XML declaration, accepted only at the very start of the body.</p>
167
+
168
+ </div>
169
+ </div>
170
+ <div class="tags">
171
+
172
+
173
+ </div>
174
+ </dt>
175
+ <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A&lt;\?xml\s+version\s*=\s*([&quot;&#39;])1\.[0-9]+\1(?:\s+encoding\s*=\s*([&quot;&#39;])[A-Za-z][A-Za-z0-9._-]*\2)?(?:\s+standalone\s*=\s*([&quot;&#39;])(?:yes|no)\3)?\s*\?&gt;</span><span class='regexp_end'>/</span></span></pre></dd>
176
+
177
+ <dt id="XML_REFERENCE-constant" class="">XML_REFERENCE =
178
+ <div class="docstring">
179
+ <div class="discussion">
180
+ <p>A predefined entity or a character reference: no other entity can be defined, since a DTD is never accepted.</p>
181
+
182
+ </div>
183
+ </div>
184
+ <div class="tags">
185
+
186
+
187
+ </div>
188
+ </dt>
189
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>&amp;(?:amp|lt|gt|quot|apos|#[0-9]+|#x\h+);</span><span class='tstring_end'>&#39;</span></span></pre></dd>
190
+
191
+ <dt id="XML_VALUE-constant" class="">XML_VALUE =
192
+
193
+ </dt>
194
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>%{</span><span class='tstring_content'>(?:&quot;(?:[^&quot;&lt;&amp;]|</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="#XML_REFERENCE-constant" title="Files::Transfer::StorageRetry::XML_REFERENCE (constant)">XML_REFERENCE</a></span></span><span class='embexpr_end'>}</span><span class='tstring_content'>)*&quot;|&#39;(?:[^&#39;&lt;&amp;]|</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="#XML_REFERENCE-constant" title="Files::Transfer::StorageRetry::XML_REFERENCE (constant)">XML_REFERENCE</a></span></span><span class='embexpr_end'>}</span><span class='tstring_content'>)*&#39;)</span><span class='tstring_end'>}</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
195
+
196
+ <dt id="XML_ATTRIBUTE-constant" class="">XML_ATTRIBUTE =
197
+ <div class="docstring">
198
+ <div class="discussion">
199
+ <p>One attribute: its name, with any prefix, and its quoted value.</p>
200
+
201
+ </div>
202
+ </div>
203
+ <div class="tags">
204
+
205
+
206
+ </div>
207
+ </dt>
208
+ <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\s+([A-Za-z_][\w.:-]*)\s*=\s*(</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="#XML_VALUE-constant" title="Files::Transfer::StorageRetry::XML_VALUE (constant)">XML_VALUE</a></span></span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='regexp_end'>/</span></span></pre></dd>
209
+
210
+ <dt id="XML_TOKEN-constant" class="">XML_TOKEN =
211
+ <div class="docstring">
212
+ <div class="discussion">
213
+ <p>A start, end or empty-element tag, with its attributes, or character data. A comment, processing instruction,
214
+ CDATA section or DTD matches nothing, so a body holding one is refused, as is a prefixed element name.</p>
215
+
216
+ </div>
217
+ </div>
218
+ <div class="tags">
219
+
220
+
221
+ </div>
222
+ </dt>
223
+ <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\G(?:&lt;(\/?)([A-Za-z_][\w.-]*)((?:\s+[A-Za-z_][\w.:-]*\s*=\s*</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="#XML_VALUE-constant" title="Files::Transfer::StorageRetry::XML_VALUE (constant)">XML_VALUE</a></span></span><span class='embexpr_end'>}</span><span class='tstring_content'>)*)\s*(\/?)&gt;|((?:[^&lt;&amp;]|</span><span class='embexpr_beg'>#{</span><span class='const'><span class='object_link'><a href="#XML_REFERENCE-constant" title="Files::Transfer::StorageRetry::XML_REFERENCE (constant)">XML_REFERENCE</a></span></span><span class='embexpr_end'>}</span><span class='tstring_content'>)+))</span><span class='regexp_end'>/</span></span></pre></dd>
224
+
225
+ <dt id="XML_CHARACTER_REFERENCE-constant" class="">XML_CHARACTER_REFERENCE =
226
+
227
+ </dt>
228
+ <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>&amp;#(x\h+|[0-9]+);</span><span class='regexp_end'>/</span></span></pre></dd>
229
+
230
+ <dt id="XML_FORBIDDEN-constant" class="">XML_FORBIDDEN =
231
+ <div class="docstring">
232
+ <div class="discussion">
233
+ <p>Characters XML never allows: the C0 controls other than tab, newline and carriage return.</p>
234
+
235
+ </div>
236
+ </div>
237
+ <div class="tags">
238
+
239
+
240
+ </div>
241
+ </dt>
242
+ <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[\x00-\x08\x0B\x0C\x0E-\x1F]</span><span class='regexp_end'>/n</span></span></pre></dd>
243
+
244
+ <dt id="SIGNATURE_PARAMS-constant" class="">SIGNATURE_PARAMS =
245
+
246
+ </dt>
247
+ <dd><pre class="code"><span class='lbracket'>[</span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>x-amz-date</span><span class='words_sep'> </span><span class='tstring_content'>x-amz-expires</span><span class='tstring_end'>]</span></span><span class='comma'>,</span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>x-files-date</span><span class='words_sep'> </span><span class='tstring_content'>x-files-expires</span><span class='tstring_end'>]</span></span><span class='comma'>,</span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>x-goog-date</span><span class='words_sep'> </span><span class='tstring_content'>x-goog-expires</span><span class='tstring_end'>]</span></span> <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
248
+
249
+ </dl>
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+ <h2>
260
+ Class Method Summary
261
+ <small><a href="#" class="summary_toggle">collapse</a></small>
262
+ </h2>
263
+
264
+ <ul class="summary">
265
+
266
+ <li class="public ">
267
+ <span class="summary_signature">
268
+
269
+ <a href="#api_time-class_method" title="api_time (class method)">.<strong>api_time</strong>(value) &#x21d2; Object </a>
270
+
271
+
272
+
273
+ </span>
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+ <span class="summary_desc"><div class='inline'></div></span>
284
+
285
+ </li>
286
+
287
+
288
+ <li class="public ">
289
+ <span class="summary_signature">
290
+
291
+ <a href="#classify-class_method" title="classify (class method)">.<strong>classify</strong>(status, headers, body, truncated: false) &#x21d2; Object </a>
292
+
293
+
294
+
295
+ </span>
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+ <span class="summary_desc"><div class='inline'><p>[:throttle, seconds], [:retry, seconds] or [:refuse] for a response that is not a success.</p></div></span>
306
+
307
+ </li>
308
+
309
+
310
+ <li class="public ">
311
+ <span class="summary_signature">
312
+
313
+ <a href="#compact_time-class_method" title="compact_time (class method)">.<strong>compact_time</strong>(text) &#x21d2; Object </a>
314
+
315
+
316
+
317
+ </span>
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+ <span class="summary_desc"><div class='inline'></div></span>
328
+
329
+ </li>
330
+
331
+
332
+ <li class="public ">
333
+ <span class="summary_signature">
334
+
335
+ <a href="#expired%3F-class_method" title="expired? (class method)">.<strong>expired?</strong>(expires_at, now: Time.now) &#x21d2; Boolean </a>
336
+
337
+
338
+
339
+ </span>
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+ <span class="summary_desc"><div class='inline'></div></span>
350
+
351
+ </li>
352
+
353
+
354
+ <li class="public ">
355
+ <span class="summary_signature">
356
+
357
+ <a href="#expires_at-class_method" title="expires_at (class method)">.<strong>expires_at</strong>(url, api_expires = nil) &#x21d2; Object </a>
358
+
359
+
360
+
361
+ </span>
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+ <span class="summary_desc"><div class='inline'><p>The earliest of the API's expires and the expiry the signed URL states: S3's X-Amz-Date plus X-Amz-Expires, the same X-Files- and X-Goog- parameters, or an Azure SAS's se.</p></div></span>
372
+
373
+ </li>
374
+
375
+
376
+ <li class="public ">
377
+ <span class="summary_signature">
378
+
379
+ <a href="#frontend%3F-class_method" title="frontend? (class method)">.<strong>frontend?</strong>(headers) &#x21d2; Boolean </a>
380
+
381
+
382
+
383
+ </span>
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+ <span class="summary_desc"><div class='inline'></div></span>
394
+
395
+ </li>
396
+
397
+
398
+ <li class="public ">
399
+ <span class="summary_signature">
400
+
401
+ <a href="#request_timeout%3F-class_method" title="request_timeout? (class method)">.<strong>request_timeout?</strong>(body) &#x21d2; Boolean </a>
402
+
403
+
404
+
405
+ </span>
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+ <span class="summary_desc"><div class='inline'><p>Whether body is exactly S3's RequestTimeout error: a well-formed XML document of at most 64 KiB in UTF-8, with no DTD, comment, processing instruction (but an XML declaration at its start), CDATA section or entity but the predefined ones, no namespace (neither an xmlns declaration nor a prefix on any element or attribute), no repeated attribute and no character XML disallows, whose root is <Error> with a single direct <Code> child holding only RequestTimeout.</p></div></span>
416
+
417
+ </li>
418
+
419
+
420
+ <li class="public ">
421
+ <span class="summary_signature">
422
+
423
+ <a href="#retry_after-class_method" title="retry_after (class method)">.<strong>retry_after</strong>(value, now: Time.now) &#x21d2; Object </a>
424
+
425
+
426
+
427
+ </span>
428
+
429
+
430
+
431
+
432
+
433
+
434
+
435
+
436
+
437
+ <span class="summary_desc"><div class='inline'><p>Seconds to wait, never negative and never shortened.</p></div></span>
438
+
439
+ </li>
440
+
441
+
442
+ <li class="public ">
443
+ <span class="summary_signature">
444
+
445
+ <a href="#valid_xml_attributes%3F-class_method" title="valid_xml_attributes? (class method)">.<strong>valid_xml_attributes?</strong>(attributes) &#x21d2; Boolean </a>
446
+
447
+
448
+
449
+ </span>
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+ <span class="summary_desc"><div class='inline'><p>A tag's attributes: none in a namespace (no xmlns declaration, no prefix), none named twice, and each value well formed.</p></div></span>
460
+
461
+ </li>
462
+
463
+
464
+ <li class="public ">
465
+ <span class="summary_signature">
466
+
467
+ <a href="#valid_xml_text%3F-class_method" title="valid_xml_text? (class method)">.<strong>valid_xml_text?</strong>(text) &#x21d2; Boolean </a>
468
+
469
+
470
+
471
+ </span>
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+ <span class="summary_desc"><div class='inline'><p>Character data or an attribute value: without &quot;]]&gt;&quot;, and with character references only to characters XML allows.</p></div></span>
482
+
483
+ </li>
484
+
485
+
486
+ </ul>
487
+
488
+
489
+
490
+
491
+
492
+ <div id="class_method_details" class="method_details_list">
493
+ <h2>Class Method Details</h2>
494
+
495
+
496
+ <div class="method_details first">
497
+ <h3 class="signature first" id="api_time-class_method">
498
+
499
+ .<strong>api_time</strong>(value) &#x21d2; <tt>Object</tt>
500
+
501
+
502
+
503
+
504
+
505
+ </h3><table class="source_code">
506
+ <tr>
507
+ <td>
508
+ <pre class="lines">
509
+
510
+
511
+ 159
512
+ 160
513
+ 161
514
+ 162
515
+ 163
516
+ 164
517
+ 165
518
+ 166</pre>
519
+ </td>
520
+ <td>
521
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 159</span>
522
+
523
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_api_time'>api_time</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
524
+ <span class='kw'>case</span> <span class='id identifier rubyid_value'>value</span>
525
+ <span class='kw'>when</span> <span class='const'>Time</span> <span class='kw'>then</span> <span class='id identifier rubyid_value'>value</span>
526
+ <span class='kw'>when</span> <span class='const'>String</span> <span class='kw'>then</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_iso8601'>iso8601</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
527
+ <span class='kw'>end</span>
528
+ <span class='kw'>rescue</span> <span class='const'>ArgumentError</span>
529
+ <span class='kw'>nil</span>
530
+ <span class='kw'>end</span></pre>
531
+ </td>
532
+ </tr>
533
+ </table>
534
+ </div>
535
+
536
+ <div class="method_details ">
537
+ <h3 class="signature " id="classify-class_method">
538
+
539
+ .<strong>classify</strong>(status, headers, body, truncated: false) &#x21d2; <tt>Object</tt>
540
+
541
+
542
+
543
+
544
+
545
+ </h3><div class="docstring">
546
+ <div class="discussion">
547
+ <p>[:throttle, seconds], [:retry, seconds] or [:refuse] for a response that is not a success. headers are
548
+ lowercase names, each with its values. truncated says the body is only the first part of a longer one, which a
549
+ transport keeps no more of: such a 400 is never taken for RequestTimeout, since its whole document was not seen.</p>
550
+
551
+ </div>
552
+ </div>
553
+ <div class="tags">
554
+
555
+
556
+ </div><table class="source_code">
557
+ <tr>
558
+ <td>
559
+ <pre class="lines">
560
+
561
+
562
+ 44
563
+ 45
564
+ 46
565
+ 47
566
+ 48
567
+ 49
568
+ 50
569
+ 51
570
+ 52
571
+ 53</pre>
572
+ </td>
573
+ <td>
574
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 44</span>
575
+
576
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_classify'>classify</span><span class='lparen'>(</span><span class='id identifier rubyid_status'>status</span><span class='comma'>,</span> <span class='id identifier rubyid_headers'>headers</span><span class='comma'>,</span> <span class='id identifier rubyid_body'>body</span><span class='comma'>,</span> <span class='label'>truncated:</span> <span class='kw'>false</span><span class='rparen'>)</span>
577
+ <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="#THROTTLE_STATUSES-constant" title="Files::Transfer::StorageRetry::THROTTLE_STATUSES (constant)">THROTTLE_STATUSES</a></span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_status'>status</span><span class='rparen'>)</span>
578
+ <span class='id identifier rubyid_seconds'>seconds</span> <span class='op'>=</span> <span class='id identifier rubyid_retry_after'>retry_after</span><span class='lparen'>(</span><span class='id identifier rubyid_headers'>headers</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>retry-after</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rparen'>)</span>
579
+ <span class='kw'>return</span> <span class='id identifier rubyid_seconds'>seconds</span><span class='period'>.</span><span class='id identifier rubyid_finite?'>finite?</span> <span class='op'>?</span> <span class='lbracket'>[</span> <span class='symbol'>:throttle</span><span class='comma'>,</span> <span class='id identifier rubyid_seconds'>seconds</span> <span class='rbracket'>]</span> <span class='op'>:</span> <span class='lbracket'>[</span> <span class='symbol'>:refuse</span> <span class='rbracket'>]</span>
580
+ <span class='kw'>end</span>
581
+ <span class='kw'>return</span> <span class='lbracket'>[</span> <span class='symbol'>:retry</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="#RETRY_DELAY-constant" title="Files::Transfer::StorageRetry::RETRY_DELAY (constant)">RETRY_DELAY</a></span></span> <span class='rbracket'>]</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="#RETRY_STATUSES-constant" title="Files::Transfer::StorageRetry::RETRY_STATUSES (constant)">RETRY_STATUSES</a></span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_status'>status</span><span class='rparen'>)</span>
582
+ <span class='kw'>return</span> <span class='lbracket'>[</span> <span class='symbol'>:retry</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="#RETRY_DELAY-constant" title="Files::Transfer::StorageRetry::RETRY_DELAY (constant)">RETRY_DELAY</a></span></span> <span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_status'>status</span> <span class='op'>==</span> <span class='int'>400</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_truncated'>truncated</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_request_timeout?'>request_timeout?</span><span class='lparen'>(</span><span class='id identifier rubyid_body'>body</span><span class='rparen'>)</span>
583
+
584
+ <span class='lbracket'>[</span> <span class='symbol'>:refuse</span> <span class='rbracket'>]</span>
585
+ <span class='kw'>end</span></pre>
586
+ </td>
587
+ </tr>
588
+ </table>
589
+ </div>
590
+
591
+ <div class="method_details ">
592
+ <h3 class="signature " id="compact_time-class_method">
593
+
594
+ .<strong>compact_time</strong>(text) &#x21d2; <tt>Object</tt>
595
+
596
+
597
+
598
+
599
+
600
+ </h3><table class="source_code">
601
+ <tr>
602
+ <td>
603
+ <pre class="lines">
604
+
605
+
606
+ 154
607
+ 155
608
+ 156
609
+ 157</pre>
610
+ </td>
611
+ <td>
612
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 154</span>
613
+
614
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_compact_time'>compact_time</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='rparen'>)</span>
615
+ <span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})Z\z</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
616
+ <span class='id identifier rubyid_match'>match</span> <span class='op'>&amp;&amp;</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_match'>match</span><span class='period'>.</span><span class='id identifier rubyid_captures'>captures</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:to_i</span><span class='rparen'>)</span><span class='rparen'>)</span>
617
+ <span class='kw'>end</span></pre>
618
+ </td>
619
+ </tr>
620
+ </table>
621
+ </div>
622
+
623
+ <div class="method_details ">
624
+ <h3 class="signature " id="expired?-class_method">
625
+
626
+ .<strong>expired?</strong>(expires_at, now: Time.now) &#x21d2; <tt>Boolean</tt>
627
+
628
+
629
+
630
+
631
+
632
+ </h3><div class="docstring">
633
+ <div class="discussion">
634
+
635
+
636
+ </div>
637
+ </div>
638
+ <div class="tags">
639
+
640
+ <p class="tag_title">Returns:</p>
641
+ <ul class="return">
642
+
643
+ <li>
644
+
645
+
646
+ <span class='type'>(<tt>Boolean</tt>)</span>
647
+
648
+
649
+
650
+ </li>
651
+
652
+ </ul>
653
+
654
+ </div><table class="source_code">
655
+ <tr>
656
+ <td>
657
+ <pre class="lines">
658
+
659
+
660
+ 150
661
+ 151
662
+ 152</pre>
663
+ </td>
664
+ <td>
665
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 150</span>
666
+
667
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_expired?'>expired?</span><span class='lparen'>(</span><span class='id identifier rubyid_expires_at'>expires_at</span><span class='comma'>,</span> <span class='label'>now:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='rparen'>)</span>
668
+ <span class='op'>!</span><span class='id identifier rubyid_expires_at'>expires_at</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_now'>now</span> <span class='op'>&gt;=</span> <span class='id identifier rubyid_expires_at'>expires_at</span> <span class='op'>-</span> <span class='const'><span class='object_link'><a href="#EXPIRY_MARGIN-constant" title="Files::Transfer::StorageRetry::EXPIRY_MARGIN (constant)">EXPIRY_MARGIN</a></span></span>
669
+ <span class='kw'>end</span></pre>
670
+ </td>
671
+ </tr>
672
+ </table>
673
+ </div>
674
+
675
+ <div class="method_details ">
676
+ <h3 class="signature " id="expires_at-class_method">
677
+
678
+ .<strong>expires_at</strong>(url, api_expires = nil) &#x21d2; <tt>Object</tt>
679
+
680
+
681
+
682
+
683
+
684
+ </h3><div class="docstring">
685
+ <div class="discussion">
686
+ <p>The earliest of the API's expires and the expiry the signed URL states: S3's X-Amz-Date plus X-Amz-Expires,
687
+ the same X-Files- and X-Goog- parameters, or an Azure SAS's se. nil when neither says.</p>
688
+
689
+ </div>
690
+ </div>
691
+ <div class="tags">
692
+
693
+
694
+ </div><table class="source_code">
695
+ <tr>
696
+ <td>
697
+ <pre class="lines">
698
+
699
+
700
+ 135
701
+ 136
702
+ 137
703
+ 138
704
+ 139
705
+ 140
706
+ 141
707
+ 142
708
+ 143
709
+ 144
710
+ 145
711
+ 146
712
+ 147
713
+ 148</pre>
714
+ </td>
715
+ <td>
716
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 135</span>
717
+
718
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_expires_at'>expires_at</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_api_expires'>api_expires</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
719
+ <span class='id identifier rubyid_times'>times</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_api_time'>api_time</span><span class='lparen'>(</span><span class='id identifier rubyid_api_expires'>api_expires</span><span class='rparen'>)</span> <span class='rbracket'>]</span>
720
+ <span class='comment'># Names compare without case, and the last of the parameters with a name wins, in the order the URL gives them.
721
+ </span> <span class='id identifier rubyid_query'>query</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
722
+ <span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_decode_www_form'>decode_www_form</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span> <span class='rbrace'>}</span>
723
+ <span class='const'><span class='object_link'><a href="#SIGNATURE_PARAMS-constant" title="Files::Transfer::StorageRetry::SIGNATURE_PARAMS (constant)">SIGNATURE_PARAMS</a></span></span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_date'>date</span><span class='comma'>,</span> <span class='id identifier rubyid_lifetime'>lifetime</span><span class='op'>|</span>
724
+ <span class='id identifier rubyid_signed'>signed</span> <span class='op'>=</span> <span class='id identifier rubyid_compact_time'>compact_time</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='id identifier rubyid_date'>date</span><span class='rbracket'>]</span><span class='rparen'>)</span>
725
+ <span class='id identifier rubyid_times'>times</span> <span class='op'>&lt;&lt;</span> <span class='lparen'>(</span><span class='id identifier rubyid_signed'>signed</span> <span class='op'>+</span> <span class='const'>Integer</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='id identifier rubyid_lifetime'>lifetime</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='int'>10</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_signed'>signed</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='id identifier rubyid_lifetime'>lifetime</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A\d+\z</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
726
+ <span class='kw'>end</span>
727
+ <span class='id identifier rubyid_times'>times</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_api_time'>api_time</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>se</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
728
+ <span class='id identifier rubyid_times'>times</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span>
729
+ <span class='kw'>rescue</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>URI</span><span class='op'>::</span><span class='const'>InvalidURIError</span>
730
+ <span class='id identifier rubyid_api_time'>api_time</span><span class='lparen'>(</span><span class='id identifier rubyid_api_expires'>api_expires</span><span class='rparen'>)</span>
731
+ <span class='kw'>end</span></pre>
732
+ </td>
733
+ </tr>
734
+ </table>
735
+ </div>
736
+
737
+ <div class="method_details ">
738
+ <h3 class="signature " id="frontend?-class_method">
739
+
740
+ .<strong>frontend?</strong>(headers) &#x21d2; <tt>Boolean</tt>
741
+
742
+
743
+
744
+
745
+
746
+ </h3><div class="docstring">
747
+ <div class="discussion">
748
+
749
+
750
+ </div>
751
+ </div>
752
+ <div class="tags">
753
+
754
+ <p class="tag_title">Returns:</p>
755
+ <ul class="return">
756
+
757
+ <li>
758
+
759
+
760
+ <span class='type'>(<tt>Boolean</tt>)</span>
761
+
762
+
763
+
764
+ </li>
765
+
766
+ </ul>
767
+
768
+ </div><table class="source_code">
769
+ <tr>
770
+ <td>
771
+ <pre class="lines">
772
+
773
+
774
+ 129
775
+ 130
776
+ 131</pre>
777
+ </td>
778
+ <td>
779
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 129</span>
780
+
781
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_frontend?'>frontend?</span><span class='lparen'>(</span><span class='id identifier rubyid_headers'>headers</span><span class='rparen'>)</span>
782
+ <span class='id identifier rubyid_headers'>headers</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="#FRONTEND_HEADER-constant" title="Files::Transfer::StorageRetry::FRONTEND_HEADER (constant)">FRONTEND_HEADER</a></span></span><span class='rparen'>)</span>
783
+ <span class='kw'>end</span></pre>
784
+ </td>
785
+ </tr>
786
+ </table>
787
+ </div>
788
+
789
+ <div class="method_details ">
790
+ <h3 class="signature " id="request_timeout?-class_method">
791
+
792
+ .<strong>request_timeout?</strong>(body) &#x21d2; <tt>Boolean</tt>
793
+
794
+
795
+
796
+
797
+
798
+ </h3><div class="docstring">
799
+ <div class="discussion">
800
+ <p>Whether body is exactly S3's RequestTimeout error: a well-formed XML document of at most 64 KiB in UTF-8, with
801
+ no DTD, comment, processing instruction (but an XML declaration at its start), CDATA section or entity but the
802
+ predefined ones, no namespace (neither an xmlns declaration nor a prefix on any element or attribute), no
803
+ repeated attribute and no character XML disallows, whose root is <Error> with a single direct <Code> child
804
+ holding only RequestTimeout. A nested or repeated Code, another code, or anything else is not.</p>
805
+
806
+ </div>
807
+ </div>
808
+ <div class="tags">
809
+
810
+ <p class="tag_title">Returns:</p>
811
+ <ul class="return">
812
+
813
+ <li>
814
+
815
+
816
+ <span class='type'>(<tt>Boolean</tt>)</span>
817
+
818
+
819
+
820
+ </li>
821
+
822
+ </ul>
823
+
824
+ </div><table class="source_code">
825
+ <tr>
826
+ <td>
827
+ <pre class="lines">
828
+
829
+
830
+ 71
831
+ 72
832
+ 73
833
+ 74
834
+ 75
835
+ 76
836
+ 77
837
+ 78
838
+ 79
839
+ 80
840
+ 81
841
+ 82
842
+ 83
843
+ 84
844
+ 85
845
+ 86
846
+ 87
847
+ 88
848
+ 89
849
+ 90
850
+ 91
851
+ 92
852
+ 93
853
+ 94
854
+ 95
855
+ 96
856
+ 97
857
+ 98
858
+ 99
859
+ 100
860
+ 101
861
+ 102
862
+ 103
863
+ 104
864
+ 105
865
+ 106</pre>
866
+ </td>
867
+ <td>
868
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 71</span>
869
+
870
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_request_timeout?'>request_timeout?</span><span class='lparen'>(</span><span class='id identifier rubyid_body'>body</span><span class='rparen'>)</span>
871
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_bytesize'>bytesize</span> <span class='op'>&lt;=</span> <span class='const'><span class='object_link'><a href="#XML_MAX_BYTES-constant" title="Files::Transfer::StorageRetry::XML_MAX_BYTES (constant)">XML_MAX_BYTES</a></span></span>
872
+
873
+ <span class='id identifier rubyid_text'>text</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span><span class='period'>.</span><span class='id identifier rubyid_b'>b</span>
874
+ <span class='id identifier rubyid_utf8'>utf8</span> <span class='op'>=</span> <span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span><span class='period'>.</span><span class='id identifier rubyid_force_encoding'>force_encoding</span><span class='lparen'>(</span><span class='const'>Encoding</span><span class='op'>::</span><span class='const'>UTF_8</span><span class='rparen'>)</span>
875
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_utf8'>utf8</span><span class='period'>.</span><span class='id identifier rubyid_valid_encoding?'>valid_encoding?</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="#XML_FORBIDDEN-constant" title="Files::Transfer::StorageRetry::XML_FORBIDDEN (constant)">XML_FORBIDDEN</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_utf8'>utf8</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[￾￿]</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
876
+
877
+ <span class='id identifier rubyid_text'>text</span> <span class='op'>=</span> <span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="#XML_DECLARATION-constant" title="Files::Transfer::StorageRetry::XML_DECLARATION (constant)">XML_DECLARATION</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
878
+ <span class='id identifier rubyid_stack'>stack</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
879
+ <span class='id identifier rubyid_codes'>codes</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
880
+ <span class='id identifier rubyid_rooted'>rooted</span> <span class='op'>=</span> <span class='kw'>false</span>
881
+ <span class='id identifier rubyid_position'>position</span> <span class='op'>=</span> <span class='int'>0</span>
882
+ <span class='kw'>while</span> <span class='id identifier rubyid_position'>position</span> <span class='op'>&lt;</span> <span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_bytesize'>bytesize</span>
883
+ <span class='id identifier rubyid_token'>token</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#XML_TOKEN-constant" title="Files::Transfer::StorageRetry::XML_TOKEN (constant)">XML_TOKEN</a></span></span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='comma'>,</span> <span class='id identifier rubyid_position'>position</span><span class='rparen'>)</span>
884
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_token'>token</span><span class='op'>&amp;.</span><span class='id identifier rubyid_begin'>begin</span><span class='lparen'>(</span><span class='int'>0</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id identifier rubyid_position'>position</span>
885
+
886
+ <span class='id identifier rubyid_position'>position</span> <span class='op'>=</span> <span class='id identifier rubyid_token'>token</span><span class='period'>.</span><span class='id identifier rubyid_end'>end</span><span class='lparen'>(</span><span class='int'>0</span><span class='rparen'>)</span>
887
+ <span class='id identifier rubyid_closing'>closing</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='id identifier rubyid_empty'>empty</span><span class='comma'>,</span> <span class='id identifier rubyid_content'>content</span> <span class='op'>=</span> <span class='id identifier rubyid_token'>token</span><span class='period'>.</span><span class='id identifier rubyid_captures'>captures</span>
888
+ <span class='kw'>if</span> <span class='id identifier rubyid_content'>content</span>
889
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='lparen'>(</span><span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span> <span class='op'>||</span> <span class='id identifier rubyid_content'>content</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_valid_xml_text?'>valid_xml_text?</span><span class='lparen'>(</span><span class='id identifier rubyid_content'>content</span><span class='rparen'>)</span>
890
+
891
+ <span class='id identifier rubyid_codes'>codes</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_content'>content</span> <span class='kw'>if</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>==</span> <span class='int'>2</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Code</span><span class='tstring_end'>&quot;</span></span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_codes'>codes</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
892
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_closing'>closing</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/</span><span class='tstring_end'>&quot;</span></span>
893
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_empty'>empty</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_pop'>pop</span> <span class='op'>==</span> <span class='id identifier rubyid_name'>name</span>
894
+ <span class='kw'>else</span>
895
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_valid_xml_attributes?'>valid_xml_attributes?</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
896
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>&amp;&amp;</span> <span class='lparen'>(</span><span class='id identifier rubyid_rooted'>rooted</span> <span class='op'>||</span> <span class='id identifier rubyid_name'>name</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Error</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
897
+
898
+ <span class='id identifier rubyid_rooted'>rooted</span> <span class='op'>=</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
899
+ <span class='id identifier rubyid_codes'>codes</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>==</span> <span class='int'>2</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Code</span><span class='tstring_end'>&quot;</span></span>
900
+ <span class='id identifier rubyid_codes'>codes</span> <span class='op'>&lt;&lt;</span> <span class='op'>+</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_name'>name</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Code</span><span class='tstring_end'>&quot;</span></span>
901
+ <span class='id identifier rubyid_stack'>stack</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_name'>name</span> <span class='kw'>unless</span> <span class='id identifier rubyid_empty'>empty</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/</span><span class='tstring_end'>&quot;</span></span>
902
+ <span class='kw'>end</span>
903
+ <span class='kw'>end</span>
904
+ <span class='id identifier rubyid_rooted'>rooted</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_stack'>stack</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_codes'>codes</span> <span class='op'>==</span> <span class='lbracket'>[</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>RequestTimeout</span><span class='tstring_end'>&quot;</span></span> <span class='rbracket'>]</span>
905
+ <span class='kw'>end</span></pre>
906
+ </td>
907
+ </tr>
908
+ </table>
909
+ </div>
910
+
911
+ <div class="method_details ">
912
+ <h3 class="signature " id="retry_after-class_method">
913
+
914
+ .<strong>retry_after</strong>(value, now: Time.now) &#x21d2; <tt>Object</tt>
915
+
916
+
917
+
918
+
919
+
920
+ </h3><div class="docstring">
921
+ <div class="discussion">
922
+ <p>Seconds to wait, never negative and never shortened. Infinity when the value cannot be scheduled.</p>
923
+
924
+ </div>
925
+ </div>
926
+ <div class="tags">
927
+
928
+
929
+ </div><table class="source_code">
930
+ <tr>
931
+ <td>
932
+ <pre class="lines">
933
+
934
+
935
+ 56
936
+ 57
937
+ 58
938
+ 59
939
+ 60
940
+ 61
941
+ 62
942
+ 63
943
+ 64</pre>
944
+ </td>
945
+ <td>
946
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 56</span>
947
+
948
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_retry_after'>retry_after</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>now:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='rparen'>)</span>
949
+ <span class='kw'>return</span> <span class='float'>0.0</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
950
+
951
+ <span class='id identifier rubyid_text'>text</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
952
+ <span class='id identifier rubyid_seconds'>seconds</span> <span class='op'>=</span> <span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A\d+\z</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span> <span class='op'>:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_httpdate'>httpdate</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='rparen'>)</span> <span class='op'>-</span> <span class='id identifier rubyid_now'>now</span>
953
+ <span class='id identifier rubyid_seconds'>seconds</span><span class='period'>.</span><span class='id identifier rubyid_nan?'>nan?</span> <span class='op'>?</span> <span class='const'>Float</span><span class='op'>::</span><span class='const'>INFINITY</span> <span class='op'>:</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_seconds'>seconds</span><span class='comma'>,</span> <span class='float'>0.0</span> <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
954
+ <span class='kw'>rescue</span> <span class='const'>ArgumentError</span>
955
+ <span class='float'>0.0</span>
956
+ <span class='kw'>end</span></pre>
957
+ </td>
958
+ </tr>
959
+ </table>
960
+ </div>
961
+
962
+ <div class="method_details ">
963
+ <h3 class="signature " id="valid_xml_attributes?-class_method">
964
+
965
+ .<strong>valid_xml_attributes?</strong>(attributes) &#x21d2; <tt>Boolean</tt>
966
+
967
+
968
+
969
+
970
+
971
+ </h3><div class="docstring">
972
+ <div class="discussion">
973
+ <p>A tag's attributes: none in a namespace (no xmlns declaration, no prefix), none named twice, and each value well
974
+ formed.</p>
975
+
976
+ </div>
977
+ </div>
978
+ <div class="tags">
979
+
980
+ <p class="tag_title">Returns:</p>
981
+ <ul class="return">
982
+
983
+ <li>
984
+
985
+
986
+ <span class='type'>(<tt>Boolean</tt>)</span>
987
+
988
+
989
+
990
+ </li>
991
+
992
+ </ul>
993
+
994
+ </div><table class="source_code">
995
+ <tr>
996
+ <td>
997
+ <pre class="lines">
998
+
999
+
1000
+ 110
1001
+ 111
1002
+ 112
1003
+ 113
1004
+ 114
1005
+ 115
1006
+ 116
1007
+ 117
1008
+ 118</pre>
1009
+ </td>
1010
+ <td>
1011
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 110</span>
1012
+
1013
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_valid_xml_attributes?'>valid_xml_attributes?</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
1014
+ <span class='id identifier rubyid_names'>names</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1015
+ <span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="#XML_ATTRIBUTE-constant" title="Files::Transfer::StorageRetry::XML_ATTRIBUTE (constant)">XML_ATTRIBUTE</a></span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
1016
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_name'>name</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>xmlns</span><span class='tstring_end'>&quot;</span></span> <span class='op'>||</span> <span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>:</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_names'>names</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='op'>!</span><span class='id identifier rubyid_valid_xml_text?'>valid_xml_text?</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
1017
+
1018
+ <span class='id identifier rubyid_names'>names</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_name'>name</span>
1019
+ <span class='kw'>end</span>
1020
+ <span class='kw'>true</span>
1021
+ <span class='kw'>end</span></pre>
1022
+ </td>
1023
+ </tr>
1024
+ </table>
1025
+ </div>
1026
+
1027
+ <div class="method_details ">
1028
+ <h3 class="signature " id="valid_xml_text?-class_method">
1029
+
1030
+ .<strong>valid_xml_text?</strong>(text) &#x21d2; <tt>Boolean</tt>
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+ </h3><div class="docstring">
1037
+ <div class="discussion">
1038
+ <p>Character data or an attribute value: without &quot;]]&gt;&quot;, and with character references only to characters XML
1039
+ allows.</p>
1040
+
1041
+ </div>
1042
+ </div>
1043
+ <div class="tags">
1044
+
1045
+ <p class="tag_title">Returns:</p>
1046
+ <ul class="return">
1047
+
1048
+ <li>
1049
+
1050
+
1051
+ <span class='type'>(<tt>Boolean</tt>)</span>
1052
+
1053
+
1054
+
1055
+ </li>
1056
+
1057
+ </ul>
1058
+
1059
+ </div><table class="source_code">
1060
+ <tr>
1061
+ <td>
1062
+ <pre class="lines">
1063
+
1064
+
1065
+ 122
1066
+ 123
1067
+ 124
1068
+ 125
1069
+ 126
1070
+ 127</pre>
1071
+ </td>
1072
+ <td>
1073
+ <pre class="code"><span class="info file"># File 'lib/files.com/transfer/storage_retry.rb', line 122</span>
1074
+
1075
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_valid_xml_text?'>valid_xml_text?</span><span class='lparen'>(</span><span class='id identifier rubyid_text'>text</span><span class='rparen'>)</span>
1076
+ <span class='op'>!</span><span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>]]&gt;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_text'>text</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="#XML_CHARACTER_REFERENCE-constant" title="Files::Transfer::StorageRetry::XML_CHARACTER_REFERENCE (constant)">XML_CHARACTER_REFERENCE</a></span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span> <span class='kw'>do</span> <span class='op'>|</span><span class='lparen'>(</span><span class='id identifier rubyid_digits'>digits</span><span class='rparen'>)</span><span class='op'>|</span>
1077
+ <span class='id identifier rubyid_code'>code</span> <span class='op'>=</span> <span class='id identifier rubyid_digits'>digits</span><span class='period'>.</span><span class='id identifier rubyid_start_with?'>start_with?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>x</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_digits'>digits</span><span class='lbracket'>[</span><span class='int'>1</span><span class='op'>..</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='lparen'>(</span><span class='int'>16</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_digits'>digits</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1078
+ <span class='lbracket'>[</span> <span class='int'>0x9</span><span class='comma'>,</span> <span class='int'>0xA</span><span class='comma'>,</span> <span class='int'>0xD</span> <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_code'>code</span><span class='period'>.</span><span class='id identifier rubyid_between?'>between?</span><span class='lparen'>(</span><span class='int'>0x20</span><span class='comma'>,</span> <span class='int'>0xD7FF</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_code'>code</span><span class='period'>.</span><span class='id identifier rubyid_between?'>between?</span><span class='lparen'>(</span><span class='int'>0xE000</span><span class='comma'>,</span> <span class='int'>0xFFFD</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_code'>code</span><span class='period'>.</span><span class='id identifier rubyid_between?'>between?</span><span class='lparen'>(</span><span class='int'>0x10000</span><span class='comma'>,</span> <span class='int'>0x10FFFF</span><span class='rparen'>)</span>
1079
+ <span class='kw'>end</span>
1080
+ <span class='kw'>end</span></pre>
1081
+ </td>
1082
+ </tr>
1083
+ </table>
1084
+ </div>
1085
+
1086
+ </div>
1087
+
1088
+ </div>
1089
+
1090
+ <div id="footer">
1091
+ Generated on Tue Nov 3 18:03:55 2026 by
1092
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1093
+ 0.9.45 (ruby-4.0.9).
1094
+ </div>
1095
+
1096
+ </div>
1097
+ </body>
1098
+ </html>