volcano-sdk 0.5.2

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 (458) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +203 -0
  3. data/README.md +758 -0
  4. data/lib/volcano/auth.rb +113 -0
  5. data/lib/volcano/auth_anonymous.rb +51 -0
  6. data/lib/volcano/auth_confirm_email.rb +19 -0
  7. data/lib/volcano/auth_email_change.rb +75 -0
  8. data/lib/volcano/auth_get_user.rb +110 -0
  9. data/lib/volcano/auth_hosted.rb +43 -0
  10. data/lib/volcano/auth_oauth.rb +102 -0
  11. data/lib/volcano/auth_oauth_api.rb +51 -0
  12. data/lib/volcano/auth_oauth_sign_in.rb +61 -0
  13. data/lib/volcano/auth_oauth_token.rb +51 -0
  14. data/lib/volcano/auth_refresh.rb +117 -0
  15. data/lib/volcano/auth_resend_confirmation.rb +19 -0
  16. data/lib/volcano/auth_reset_password.rb +23 -0
  17. data/lib/volcano/auth_reset_password_for_email.rb +19 -0
  18. data/lib/volcano/auth_sessions.rb +139 -0
  19. data/lib/volcano/auth_sign_up.rb +40 -0
  20. data/lib/volcano/auth_state.rb +148 -0
  21. data/lib/volcano/auth_update_user.rb +32 -0
  22. data/lib/volcano/client.rb +121 -0
  23. data/lib/volcano/connection_string.rb +85 -0
  24. data/lib/volcano/database.rb +243 -0
  25. data/lib/volcano/errors.rb +38 -0
  26. data/lib/volcano/function_resolution.rb +120 -0
  27. data/lib/volcano/function_response.rb +26 -0
  28. data/lib/volcano/functions.rb +136 -0
  29. data/lib/volcano/generated/lib/volcano-generated/api/anon_keys_api.rb +471 -0
  30. data/lib/volcano/generated/lib/volcano-generated/api/auth_admin_api.rb +739 -0
  31. data/lib/volcano/generated/lib/volcano-generated/api/auth_configuration_api.rb +1798 -0
  32. data/lib/volcano/generated/lib/volcano-generated/api/authentication_api.rb +1523 -0
  33. data/lib/volcano/generated/lib/volcano-generated/api/database_backups_api.rb +791 -0
  34. data/lib/volcano/generated/lib/volcano-generated/api/database_branches_api.rb +665 -0
  35. data/lib/volcano/generated/lib/volcano-generated/api/database_queries_api.rb +905 -0
  36. data/lib/volcano/generated/lib/volcano-generated/api/databases_api.rb +819 -0
  37. data/lib/volcano/generated/lib/volcano-generated/api/frontends_api.rb +913 -0
  38. data/lib/volcano/generated/lib/volcano-generated/api/functions_api.rb +1355 -0
  39. data/lib/volcano/generated/lib/volcano-generated/api/git_connections_api.rb +1012 -0
  40. data/lib/volcano/generated/lib/volcano-generated/api/locks_api.rb +480 -0
  41. data/lib/volcano/generated/lib/volcano-generated/api/logs_api.rb +250 -0
  42. data/lib/volcano/generated/lib/volcano-generated/api/o_auth_authentication_api.rb +962 -0
  43. data/lib/volcano/generated/lib/volcano-generated/api/o_auth_configuration_api.rb +452 -0
  44. data/lib/volcano/generated/lib/volcano-generated/api/project_imports_api.rb +599 -0
  45. data/lib/volcano/generated/lib/volcano-generated/api/projects_api.rb +1862 -0
  46. data/lib/volcano/generated/lib/volcano-generated/api/realtime_api.rb +222 -0
  47. data/lib/volcano/generated/lib/volcano-generated/api/service_keys_api.rb +402 -0
  48. data/lib/volcano/generated/lib/volcano-generated/api/storage_admin_api.rb +189 -0
  49. data/lib/volcano/generated/lib/volcano-generated/api/storage_buckets_api.rb +437 -0
  50. data/lib/volcano/generated/lib/volcano-generated/api/storage_objects_api.rb +857 -0
  51. data/lib/volcano/generated/lib/volcano-generated/api/storage_policies_api.rb +277 -0
  52. data/lib/volcano/generated/lib/volcano-generated/api/system_api.rb +79 -0
  53. data/lib/volcano/generated/lib/volcano-generated/api/variables_api.rb +454 -0
  54. data/lib/volcano/generated/lib/volcano-generated/api_client.rb +393 -0
  55. data/lib/volcano/generated/lib/volcano-generated/api_error.rb +58 -0
  56. data/lib/volcano/generated/lib/volcano-generated/api_model_base.rb +88 -0
  57. data/lib/volcano/generated/lib/volcano-generated/configuration.rb +337 -0
  58. data/lib/volcano/generated/lib/volcano-generated/models/anon_key.rb +257 -0
  59. data/lib/volcano/generated/lib/volcano-generated/models/auth_config.rb +728 -0
  60. data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email200_response.rb +181 -0
  61. data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_change200_response.rb +156 -0
  62. data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_change_request.rb +164 -0
  63. data/lib/volcano/generated/lib/volcano-generated/models/auth_confirm_email_request.rb +165 -0
  64. data/lib/volcano/generated/lib/volcano-generated/models/auth_convert_anonymous200_response.rb +147 -0
  65. data/lib/volcano/generated/lib/volcano-generated/models/auth_device_authorize_request.rb +165 -0
  66. data/lib/volcano/generated/lib/volcano-generated/models/auth_device_token_request.rb +240 -0
  67. data/lib/volcano/generated/lib/volcano-generated/models/auth_device_verify200_response.rb +156 -0
  68. data/lib/volcano/generated/lib/volcano-generated/models/auth_device_verify_request.rb +209 -0
  69. data/lib/volcano/generated/lib/volcano-generated/models/auth_forgot_password200_response.rb +147 -0
  70. data/lib/volcano/generated/lib/volcano-generated/models/auth_forgot_password_request.rb +164 -0
  71. data/lib/volcano/generated/lib/volcano-generated/models/auth_get_my_sessions200_response.rb +231 -0
  72. data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page.rb +225 -0
  73. data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_defaults.rb +193 -0
  74. data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_response.rb +203 -0
  75. data/lib/volcano/generated/lib/volcano-generated/models/auth_hosted_page_runtime.rb +220 -0
  76. data/lib/volcano/generated/lib/volcano-generated/models/auth_identities_response.rb +166 -0
  77. data/lib/volcano/generated/lib/volcano-generated/models/auth_identity.rb +273 -0
  78. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_interval.rb +41 -0
  79. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_response.rb +270 -0
  80. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_series_point.rb +263 -0
  81. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_summary.rb +210 -0
  82. data/lib/volcano/generated/lib/volcano-generated/models/auth_insights_window.rb +238 -0
  83. data/lib/volcano/generated/lib/volcano-generated/models/auth_link_o_auth_provider200_response.rb +147 -0
  84. data/lib/volcano/generated/lib/volcano-generated/models/auth_list_o_auth_providers200_response.rb +149 -0
  85. data/lib/volcano/generated/lib/volcano-generated/models/auth_list_o_auth_providers200_response_providers_inner.rb +165 -0
  86. data/lib/volcano/generated/lib/volcano-generated/models/auth_method_summary.rb +370 -0
  87. data/lib/volcano/generated/lib/volcano-generated/models/auth_methods_response.rb +166 -0
  88. data/lib/volcano/generated/lib/volcano-generated/models/auth_o_auth_exchange_request.rb +190 -0
  89. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_defaults.rb +212 -0
  90. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_options.rb +306 -0
  91. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_appearance_response.rb +299 -0
  92. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_density.rb +41 -0
  93. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_font.rb +43 -0
  94. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_layout.rb +41 -0
  95. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_radius.rb +42 -0
  96. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_scale.rb +41 -0
  97. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_theme.rb +318 -0
  98. data/lib/volcano/generated/lib/volcano-generated/models/auth_page_theme_colors.rb +323 -0
  99. data/lib/volcano/generated/lib/volcano-generated/models/auth_password_policy.rb +409 -0
  100. data/lib/volcano/generated/lib/volcano-generated/models/auth_platform_exchange_request.rb +164 -0
  101. data/lib/volcano/generated/lib/volcano-generated/models/auth_refresh_request.rb +190 -0
  102. data/lib/volcano/generated/lib/volcano-generated/models/auth_request_email_change200_response.rb +156 -0
  103. data/lib/volcano/generated/lib/volcano-generated/models/auth_request_email_change_request.rb +164 -0
  104. data/lib/volcano/generated/lib/volcano-generated/models/auth_reset_password200_response.rb +147 -0
  105. data/lib/volcano/generated/lib/volcano-generated/models/auth_reset_password_request.rb +192 -0
  106. data/lib/volcano/generated/lib/volcano-generated/models/auth_session.rb +393 -0
  107. data/lib/volcano/generated/lib/volcano-generated/models/auth_signin_request.rb +233 -0
  108. data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_anonymous_request.rb +150 -0
  109. data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_request.rb +202 -0
  110. data/lib/volcano/generated/lib/volcano-generated/models/auth_signup_response.rb +193 -0
  111. data/lib/volcano/generated/lib/volcano-generated/models/auth_token_response.rb +254 -0
  112. data/lib/volcano/generated/lib/volcano-generated/models/auth_update_user_request.rb +160 -0
  113. data/lib/volcano/generated/lib/volcano-generated/models/auth_user.rb +330 -0
  114. data/lib/volcano/generated/lib/volcano-generated/models/ban_auth_user_request.rb +148 -0
  115. data/lib/volcano/generated/lib/volcano-generated/models/ban_user_response.rb +278 -0
  116. data/lib/volcano/generated/lib/volcano-generated/models/batch_function_deploy_failure.rb +242 -0
  117. data/lib/volcano/generated/lib/volcano-generated/models/batch_function_deploy_response.rb +205 -0
  118. data/lib/volcano/generated/lib/volcano-generated/models/call_o_auth_provider_api200_response.rb +272 -0
  119. data/lib/volcano/generated/lib/volcano-generated/models/call_o_auth_provider_api_request.rb +223 -0
  120. data/lib/volcano/generated/lib/volcano-generated/models/complete_upload_session_response.rb +148 -0
  121. data/lib/volcano/generated/lib/volcano-generated/models/configure_auth_methods_request.rb +167 -0
  122. data/lib/volcano/generated/lib/volcano-generated/models/configure_auth_methods_request_oauth_providers_inner.rb +156 -0
  123. data/lib/volcano/generated/lib/volcano-generated/models/connect_project_git_request.rb +250 -0
  124. data/lib/volcano/generated/lib/volcano-generated/models/create_anon_key_request.rb +228 -0
  125. data/lib/volcano/generated/lib/volcano-generated/models/create_database_backup_request.rb +185 -0
  126. data/lib/volcano/generated/lib/volcano-generated/models/create_database_branch_request.rb +223 -0
  127. data/lib/volcano/generated/lib/volcano-generated/models/create_database_request.rb +290 -0
  128. data/lib/volcano/generated/lib/volcano-generated/models/create_database_restore_request.rb +187 -0
  129. data/lib/volcano/generated/lib/volcano-generated/models/create_email_template_request.rb +270 -0
  130. data/lib/volcano/generated/lib/volcano-generated/models/create_frontend_custom_domain_request.rb +191 -0
  131. data/lib/volcano/generated/lib/volcano-generated/models/create_function_scheduler_request.rb +252 -0
  132. data/lib/volcano/generated/lib/volcano-generated/models/create_o_auth_config_request.rb +230 -0
  133. data/lib/volcano/generated/lib/volcano-generated/models/create_project_request.rb +219 -0
  134. data/lib/volcano/generated/lib/volcano-generated/models/create_service_key_request.rb +206 -0
  135. data/lib/volcano/generated/lib/volcano-generated/models/create_storage_bucket_request.rb +216 -0
  136. data/lib/volcano/generated/lib/volcano-generated/models/create_storage_policy_request.rb +243 -0
  137. data/lib/volcano/generated/lib/volcano-generated/models/create_upload_session_request.rb +276 -0
  138. data/lib/volcano/generated/lib/volcano-generated/models/create_upload_session_response.rb +179 -0
  139. data/lib/volcano/generated/lib/volcano-generated/models/create_variable_request.rb +219 -0
  140. data/lib/volcano/generated/lib/volcano-generated/models/database.rb +442 -0
  141. data/lib/volcano/generated/lib/volcano-generated/models/database_backup.rb +283 -0
  142. data/lib/volcano/generated/lib/volcano-generated/models/database_backup_list.rb +175 -0
  143. data/lib/volcano/generated/lib/volcano-generated/models/database_backup_schedule.rb +167 -0
  144. data/lib/volcano/generated/lib/volcano-generated/models/database_backup_schedule_entry.rb +301 -0
  145. data/lib/volcano/generated/lib/volcano-generated/models/database_branch.rb +480 -0
  146. data/lib/volcano/generated/lib/volcano-generated/models/database_branch_list.rb +166 -0
  147. data/lib/volcano/generated/lib/volcano-generated/models/database_branch_storage.rb +228 -0
  148. data/lib/volcano/generated/lib/volcano-generated/models/database_delete_request.rb +203 -0
  149. data/lib/volcano/generated/lib/volcano-generated/models/database_insert_request.rb +194 -0
  150. data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter.rb +242 -0
  151. data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter_value.rb +106 -0
  152. data/lib/volcano/generated/lib/volcano-generated/models/database_query_filter_value_one_of_inner.rb +105 -0
  153. data/lib/volcano/generated/lib/volcano-generated/models/database_query_order.rb +187 -0
  154. data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_database.rb +190 -0
  155. data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_item.rb +411 -0
  156. data/lib/volcano/generated/lib/volcano-generated/models/database_query_performance_response.rb +166 -0
  157. data/lib/volcano/generated/lib/volcano-generated/models/database_query_result.rb +161 -0
  158. data/lib/volcano/generated/lib/volcano-generated/models/database_restore.rb +388 -0
  159. data/lib/volcano/generated/lib/volcano-generated/models/database_restore_list.rb +166 -0
  160. data/lib/volcano/generated/lib/volcano-generated/models/database_restore_window.rb +159 -0
  161. data/lib/volcano/generated/lib/volcano-generated/models/database_select_request.rb +268 -0
  162. data/lib/volcano/generated/lib/volcano-generated/models/database_stats.rb +447 -0
  163. data/lib/volcano/generated/lib/volcano-generated/models/database_update_request.rb +232 -0
  164. data/lib/volcano/generated/lib/volcano-generated/models/delete_database202_response.rb +156 -0
  165. data/lib/volcano/generated/lib/volcano-generated/models/delete_database_backup200_response.rb +190 -0
  166. data/lib/volcano/generated/lib/volcano-generated/models/delete_database_branch202_response.rb +190 -0
  167. data/lib/volcano/generated/lib/volcano-generated/models/deployment_phase.rb +263 -0
  168. data/lib/volcano/generated/lib/volcano-generated/models/deployment_progress.rb +324 -0
  169. data/lib/volcano/generated/lib/volcano-generated/models/deployment_reference.rb +165 -0
  170. data/lib/volcano/generated/lib/volcano-generated/models/device_authorization_response.rb +296 -0
  171. data/lib/volcano/generated/lib/volcano-generated/models/email_template.rb +305 -0
  172. data/lib/volcano/generated/lib/volcano-generated/models/error.rb +174 -0
  173. data/lib/volcano/generated/lib/volcano-generated/models/export_project_source_request.rb +174 -0
  174. data/lib/volcano/generated/lib/volcano-generated/models/frontend.rb +504 -0
  175. data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_response.rb +370 -0
  176. data/lib/volcano/generated/lib/volcano-generated/models/frontend_custom_domain_tls_config.rb +253 -0
  177. data/lib/volcano/generated/lib/volcano-generated/models/frontend_deployment.rb +487 -0
  178. data/lib/volcano/generated/lib/volcano-generated/models/frontend_domain_routing_record.rb +240 -0
  179. data/lib/volcano/generated/lib/volcano-generated/models/frontend_domain_verification_record.rb +216 -0
  180. data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_daily_entry.rb +247 -0
  181. data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_data.rb +204 -0
  182. data/lib/volcano/generated/lib/volcano-generated/models/frontend_usage_history_response.rb +298 -0
  183. data/lib/volcano/generated/lib/volcano-generated/models/function.rb +565 -0
  184. data/lib/volcano/generated/lib/volcano-generated/models/function_deployment.rb +477 -0
  185. data/lib/volcano/generated/lib/volcano-generated/models/function_http_auth_mode.rb +40 -0
  186. data/lib/volcano/generated/lib/volcano-generated/models/function_invocation_mode.rb +40 -0
  187. data/lib/volcano/generated/lib/volcano-generated/models/function_invocation_request.rb +150 -0
  188. data/lib/volcano/generated/lib/volcano-generated/models/function_region.rb +219 -0
  189. data/lib/volcano/generated/lib/volcano-generated/models/function_runtime_deployment.rb +250 -0
  190. data/lib/volcano/generated/lib/volcano-generated/models/function_runtime_option.rb +245 -0
  191. data/lib/volcano/generated/lib/volcano-generated/models/function_runtimes_response.rb +166 -0
  192. data/lib/volcano/generated/lib/volcano-generated/models/function_scheduler.rb +330 -0
  193. data/lib/volcano/generated/lib/volcano-generated/models/function_scheduler_list_response.rb +290 -0
  194. data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response.rb +178 -0
  195. data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response_email_password.rb +165 -0
  196. data/lib/volcano/generated/lib/volcano-generated/models/get_auth_methods200_response_oauth_providers_inner.rb +194 -0
  197. data/lib/volcano/generated/lib/volcano-generated/models/git_connect_start_response.rb +164 -0
  198. data/lib/volcano/generated/lib/volcano-generated/models/git_connection.rb +346 -0
  199. data/lib/volcano/generated/lib/volcano-generated/models/git_connections_response.rb +166 -0
  200. data/lib/volcano/generated/lib/volcano-generated/models/git_installation.rb +242 -0
  201. data/lib/volcano/generated/lib/volcano-generated/models/git_installations_response.rb +166 -0
  202. data/lib/volcano/generated/lib/volcano-generated/models/git_repositories_response.rb +166 -0
  203. data/lib/volcano/generated/lib/volcano-generated/models/git_repository.rb +270 -0
  204. data/lib/volcano/generated/lib/volcano-generated/models/hosted_auth_page_type.rb +44 -0
  205. data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_email_check_request.rb +164 -0
  206. data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_email_check_response.rb +147 -0
  207. data/lib/volcano/generated/lib/volcano-generated/models/hosted_login_options_response.rb +185 -0
  208. data/lib/volcano/generated/lib/volcano-generated/models/hosted_renderable_page_type.rb +43 -0
  209. data/lib/volcano/generated/lib/volcano-generated/models/import_connect_start_response.rb +164 -0
  210. data/lib/volcano/generated/lib/volcano-generated/models/import_connection.rb +432 -0
  211. data/lib/volcano/generated/lib/volcano-generated/models/import_connections_response.rb +166 -0
  212. data/lib/volcano/generated/lib/volcano-generated/models/import_provider.rb +39 -0
  213. data/lib/volcano/generated/lib/volcano-generated/models/import_source.rb +242 -0
  214. data/lib/volcano/generated/lib/volcano-generated/models/import_sources_response.rb +166 -0
  215. data/lib/volcano/generated/lib/volcano-generated/models/list_anon_keys200_response.rb +189 -0
  216. data/lib/volcano/generated/lib/volcano-generated/models/list_available_o_auth_providers200_response.rb +149 -0
  217. data/lib/volcano/generated/lib/volcano-generated/models/list_available_o_auth_providers200_response_providers_inner.rb +167 -0
  218. data/lib/volcano/generated/lib/volcano-generated/models/list_database_regions200_response_inner.rb +158 -0
  219. data/lib/volcano/generated/lib/volcano-generated/models/list_email_templates200_response.rb +149 -0
  220. data/lib/volcano/generated/lib/volcano-generated/models/list_o_auth_configs200_response.rb +149 -0
  221. data/lib/volcano/generated/lib/volcano-generated/models/list_postgres_versions200_response_inner.rb +178 -0
  222. data/lib/volcano/generated/lib/volcano-generated/models/list_storage_buckets200_response.rb +104 -0
  223. data/lib/volcano/generated/lib/volcano-generated/models/list_storage_objects_admin200_response.rb +205 -0
  224. data/lib/volcano/generated/lib/volcano-generated/models/live_log_level.rb +44 -0
  225. data/lib/volcano/generated/lib/volcano-generated/models/log_activity_bucket.rb +246 -0
  226. data/lib/volcano/generated/lib/volcano-generated/models/log_activity_bucket_counts.rb +226 -0
  227. data/lib/volcano/generated/lib/volcano-generated/models/log_activity_request.rb +252 -0
  228. data/lib/volcano/generated/lib/volcano-generated/models/log_activity_response.rb +194 -0
  229. data/lib/volcano/generated/lib/volcano-generated/models/log_database_request_resource.rb +221 -0
  230. data/lib/volcano/generated/lib/volcano-generated/models/log_deployment.rb +210 -0
  231. data/lib/volcano/generated/lib/volcano-generated/models/log_deployment_request_selector.rb +170 -0
  232. data/lib/volcano/generated/lib/volcano-generated/models/log_event.rb +257 -0
  233. data/lib/volcano/generated/lib/volcano-generated/models/log_event_body.rb +108 -0
  234. data/lib/volcano/generated/lib/volcano-generated/models/log_frontend_request_resource.rb +230 -0
  235. data/lib/volcano/generated/lib/volcano-generated/models/log_function_request_resource.rb +230 -0
  236. data/lib/volcano/generated/lib/volcano-generated/models/log_request_resource.rb +58 -0
  237. data/lib/volcano/generated/lib/volcano-generated/models/log_resource.rb +227 -0
  238. data/lib/volcano/generated/lib/volcano-generated/models/log_search_event.rb +297 -0
  239. data/lib/volcano/generated/lib/volcano-generated/models/log_search_request.rb +264 -0
  240. data/lib/volcano/generated/lib/volcano-generated/models/log_search_response.rb +232 -0
  241. data/lib/volcano/generated/lib/volcano-generated/models/log_stream_request.rb +244 -0
  242. data/lib/volcano/generated/lib/volcano-generated/models/metric_usage_data.rb +278 -0
  243. data/lib/volcano/generated/lib/volcano-generated/models/o_auth_config.rb +256 -0
  244. data/lib/volcano/generated/lib/volcano-generated/models/o_auth_error_response.rb +173 -0
  245. data/lib/volcano/generated/lib/volcano-generated/models/paginated_auth_users.rb +284 -0
  246. data/lib/volcano/generated/lib/volcano-generated/models/paginated_databases.rb +304 -0
  247. data/lib/volcano/generated/lib/volcano-generated/models/paginated_frontend_deployments.rb +284 -0
  248. data/lib/volcano/generated/lib/volcano-generated/models/paginated_frontends.rb +304 -0
  249. data/lib/volcano/generated/lib/volcano-generated/models/paginated_function_deployments.rb +284 -0
  250. data/lib/volcano/generated/lib/volcano-generated/models/paginated_functions.rb +304 -0
  251. data/lib/volcano/generated/lib/volcano-generated/models/paginated_project_custom_domains.rb +284 -0
  252. data/lib/volcano/generated/lib/volcano-generated/models/paginated_project_deployments.rb +306 -0
  253. data/lib/volcano/generated/lib/volcano-generated/models/paginated_projects.rb +368 -0
  254. data/lib/volcano/generated/lib/volcano-generated/models/paginated_service_keys.rb +304 -0
  255. data/lib/volcano/generated/lib/volcano-generated/models/paginated_storage_buckets.rb +251 -0
  256. data/lib/volcano/generated/lib/volcano-generated/models/paginated_variables.rb +304 -0
  257. data/lib/volcano/generated/lib/volcano-generated/models/platform_exchange_response.rb +242 -0
  258. data/lib/volcano/generated/lib/volcano-generated/models/preview_auth_page_request.rb +221 -0
  259. data/lib/volcano/generated/lib/volcano-generated/models/preview_auth_page_response.rb +190 -0
  260. data/lib/volcano/generated/lib/volcano-generated/models/project.rb +419 -0
  261. data/lib/volcano/generated/lib/volcano-generated/models/project_config.rb +273 -0
  262. data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_result.rb +261 -0
  263. data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_result_entry.rb +245 -0
  264. data/lib/volcano/generated/lib/volcano-generated/models/project_config_apply_summary.rb +320 -0
  265. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth.rb +238 -0
  266. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_cors.rb +176 -0
  267. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email.rb +175 -0
  268. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_from.rb +156 -0
  269. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_password_provider.rb +147 -0
  270. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_smtp.rb +184 -0
  271. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_email_verification.rb +158 -0
  272. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_managed_pages.rb +175 -0
  273. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_page_appearance.rb +156 -0
  274. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_page_layouts.rb +214 -0
  275. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_password.rb +211 -0
  276. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_password_reset.rb +167 -0
  277. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_providers.rb +159 -0
  278. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_rate_limits.rb +175 -0
  279. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_redirects.rb +180 -0
  280. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_sessions.rb +158 -0
  281. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_signup.rb +232 -0
  282. data/lib/volcano/generated/lib/volcano-generated/models/project_config_auth_tokens.rb +175 -0
  283. data/lib/volcano/generated/lib/volcano-generated/models/project_config_bucket.rb +226 -0
  284. data/lib/volcano/generated/lib/volcano-generated/models/project_config_bucket_policy.rb +250 -0
  285. data/lib/volcano/generated/lib/volcano-generated/models/project_config_custom_domain.rb +175 -0
  286. data/lib/volcano/generated/lib/volcano-generated/models/project_config_database.rb +274 -0
  287. data/lib/volcano/generated/lib/volcano-generated/models/project_config_email_template.rb +205 -0
  288. data/lib/volcano/generated/lib/volcano-generated/models/project_config_email_templates.rb +175 -0
  289. data/lib/volcano/generated/lib/volcano-generated/models/project_config_frontend.rb +183 -0
  290. data/lib/volcano/generated/lib/volcano-generated/models/project_config_function.rb +248 -0
  291. data/lib/volcano/generated/lib/volcano-generated/models/project_config_hosted_page.rb +203 -0
  292. data/lib/volcano/generated/lib/volcano-generated/models/project_config_hosted_pages.rb +193 -0
  293. data/lib/volcano/generated/lib/volcano-generated/models/project_config_missing_resource.rb +214 -0
  294. data/lib/volcano/generated/lib/volcano-generated/models/project_config_o_auth_provider.rb +238 -0
  295. data/lib/volcano/generated/lib/volcano-generated/models/project_config_project.rb +209 -0
  296. data/lib/volcano/generated/lib/volcano-generated/models/project_config_realtime.rb +174 -0
  297. data/lib/volcano/generated/lib/volcano-generated/models/project_config_scheduler.rb +229 -0
  298. data/lib/volcano/generated/lib/volcano-generated/models/project_config_skipped_resource.rb +240 -0
  299. data/lib/volcano/generated/lib/volcano-generated/models/project_config_validation_error.rb +201 -0
  300. data/lib/volcano/generated/lib/volcano-generated/models/project_config_validation_error_response.rb +193 -0
  301. data/lib/volcano/generated/lib/volcano-generated/models/project_config_variable.rb +199 -0
  302. data/lib/volcano/generated/lib/volcano-generated/models/project_deployment.rb +412 -0
  303. data/lib/volcano/generated/lib/volcano-generated/models/project_deployment_resource.rb +241 -0
  304. data/lib/volcano/generated/lib/volcano-generated/models/project_deployment_summary.rb +312 -0
  305. data/lib/volcano/generated/lib/volcano-generated/models/project_frontend_custom_domain.rb +403 -0
  306. data/lib/volcano/generated/lib/volcano-generated/models/project_frontend_custom_domain_all_of_frontend.rb +191 -0
  307. data/lib/volcano/generated/lib/volcano-generated/models/project_git_connection.rb +296 -0
  308. data/lib/volcano/generated/lib/volcano-generated/models/project_git_connection_summary.rb +294 -0
  309. data/lib/volcano/generated/lib/volcano-generated/models/project_git_deploy_settings.rb +239 -0
  310. data/lib/volcano/generated/lib/volcano-generated/models/project_health_category.rb +40 -0
  311. data/lib/volcano/generated/lib/volcano-generated/models/project_health_check.rb +316 -0
  312. data/lib/volcano/generated/lib/volcano-generated/models/project_health_data_status.rb +42 -0
  313. data/lib/volcano/generated/lib/volcano-generated/models/project_health_evidence.rb +251 -0
  314. data/lib/volcano/generated/lib/volcano-generated/models/project_health_resource.rb +240 -0
  315. data/lib/volcano/generated/lib/volcano-generated/models/project_health_response.rb +356 -0
  316. data/lib/volcano/generated/lib/volcano-generated/models/project_health_scope.rb +164 -0
  317. data/lib/volcano/generated/lib/volcano-generated/models/project_health_status.rb +42 -0
  318. data/lib/volcano/generated/lib/volcano-generated/models/project_health_summary.rb +186 -0
  319. data/lib/volcano/generated/lib/volcano-generated/models/project_import_action.rb +238 -0
  320. data/lib/volcano/generated/lib/volcano-generated/models/project_import_action_code.rb +42 -0
  321. data/lib/volcano/generated/lib/volcano-generated/models/project_import_destination.rb +238 -0
  322. data/lib/volcano/generated/lib/volcano-generated/models/project_import_destination_mode.rb +39 -0
  323. data/lib/volcano/generated/lib/volcano-generated/models/project_import_disposition.rb +42 -0
  324. data/lib/volcano/generated/lib/volcano-generated/models/project_import_finding.rb +327 -0
  325. data/lib/volcano/generated/lib/volcano-generated/models/project_import_impact.rb +41 -0
  326. data/lib/volcano/generated/lib/volcano-generated/models/project_import_preflight_request.rb +305 -0
  327. data/lib/volcano/generated/lib/volcano-generated/models/project_import_readiness.rb +41 -0
  328. data/lib/volcano/generated/lib/volcano-generated/models/project_import_report.rb +476 -0
  329. data/lib/volcano/generated/lib/volcano-generated/models/project_import_resource.rb +270 -0
  330. data/lib/volcano/generated/lib/volcano-generated/models/project_import_resource_kind.rb +43 -0
  331. data/lib/volcano/generated/lib/volcano-generated/models/project_import_run.rb +412 -0
  332. data/lib/volcano/generated/lib/volcano-generated/models/project_import_run_status.rb +43 -0
  333. data/lib/volcano/generated/lib/volcano-generated/models/project_import_start_request.rb +365 -0
  334. data/lib/volcano/generated/lib/volcano-generated/models/project_import_summary.rb +348 -0
  335. data/lib/volcano/generated/lib/volcano-generated/models/project_import_target.rb +39 -0
  336. data/lib/volcano/generated/lib/volcano-generated/models/project_lock_lease.rb +192 -0
  337. data/lib/volcano/generated/lib/volcano-generated/models/project_lock_lease_request.rb +183 -0
  338. data/lib/volcano/generated/lib/volcano-generated/models/project_lock_state.rb +185 -0
  339. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_data_status.rb +41 -0
  340. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_dimensions.rb +190 -0
  341. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_group_by.rb +40 -0
  342. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_metric.rb +42 -0
  343. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query.rb +250 -0
  344. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_request.rb +210 -0
  345. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_response.rb +227 -0
  346. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_query_time_range.rb +188 -0
  347. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_result.rb +292 -0
  348. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_unit.rb +41 -0
  349. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_value.rb +199 -0
  350. data/lib/volcano/generated/lib/volcano-generated/models/project_metrics_window.rb +190 -0
  351. data/lib/volcano/generated/lib/volcano-generated/models/project_source_export.rb +302 -0
  352. data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_omission.rb +218 -0
  353. data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_skip.rb +217 -0
  354. data/lib/volcano/generated/lib/volcano-generated/models/project_source_export_state.rb +228 -0
  355. data/lib/volcano/generated/lib/volcano-generated/models/project_usage_response.rb +234 -0
  356. data/lib/volcano/generated/lib/volcano-generated/models/realtime_config.rb +217 -0
  357. data/lib/volcano/generated/lib/volcano-generated/models/realtime_plan_limits.rb +189 -0
  358. data/lib/volcano/generated/lib/volcano-generated/models/realtime_stats.rb +178 -0
  359. data/lib/volcano/generated/lib/volcano-generated/models/refresh_o_auth_provider_token200_response.rb +165 -0
  360. data/lib/volcano/generated/lib/volcano-generated/models/reset_database_password200_response.rb +177 -0
  361. data/lib/volcano/generated/lib/volcano-generated/models/resolve_function_response.rb +248 -0
  362. data/lib/volcano/generated/lib/volcano-generated/models/resource_reference.rb +241 -0
  363. data/lib/volcano/generated/lib/volcano-generated/models/schedule_request.rb +210 -0
  364. data/lib/volcano/generated/lib/volcano-generated/models/service_key.rb +294 -0
  365. data/lib/volcano/generated/lib/volcano-generated/models/set_project_git_production_branch_request.rb +183 -0
  366. data/lib/volcano/generated/lib/volcano-generated/models/storage_bucket.rb +282 -0
  367. data/lib/volcano/generated/lib/volcano-generated/models/storage_copy_request.rb +192 -0
  368. data/lib/volcano/generated/lib/volcano-generated/models/storage_list_response.rb +159 -0
  369. data/lib/volcano/generated/lib/volcano-generated/models/storage_move_request.rb +192 -0
  370. data/lib/volcano/generated/lib/volcano-generated/models/storage_object.rb +359 -0
  371. data/lib/volcano/generated/lib/volcano-generated/models/storage_object_with_bucket.rb +383 -0
  372. data/lib/volcano/generated/lib/volcano-generated/models/storage_policy.rb +313 -0
  373. data/lib/volcano/generated/lib/volcano-generated/models/storage_stats.rb +220 -0
  374. data/lib/volcano/generated/lib/volcano-generated/models/storage_visibility_request.rb +165 -0
  375. data/lib/volcano/generated/lib/volcano-generated/models/test_email_request.rb +234 -0
  376. data/lib/volcano/generated/lib/volcano-generated/models/test_email_response.rb +164 -0
  377. data/lib/volcano/generated/lib/volcano-generated/models/unban_user_response.rb +267 -0
  378. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_config_request.rb +626 -0
  379. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_hosted_page_request.rb +175 -0
  380. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_page_layout_request.rb +186 -0
  381. data/lib/volcano/generated/lib/volcano-generated/models/update_auth_page_theme_request.rb +164 -0
  382. data/lib/volcano/generated/lib/volcano-generated/models/update_database_branch_request.rb +184 -0
  383. data/lib/volcano/generated/lib/volcano-generated/models/update_database_type_request.rb +190 -0
  384. data/lib/volcano/generated/lib/volcano-generated/models/update_email_template_request.rb +165 -0
  385. data/lib/volcano/generated/lib/volcano-generated/models/update_function_request.rb +201 -0
  386. data/lib/volcano/generated/lib/volcano-generated/models/update_function_scheduler_request.rb +225 -0
  387. data/lib/volcano/generated/lib/volcano-generated/models/update_o_auth_config_request.rb +187 -0
  388. data/lib/volcano/generated/lib/volcano-generated/models/update_project_git_deploy_settings_request.rb +211 -0
  389. data/lib/volcano/generated/lib/volcano-generated/models/update_project_request.rb +198 -0
  390. data/lib/volcano/generated/lib/volcano-generated/models/update_realtime_config_request.rb +179 -0
  391. data/lib/volcano/generated/lib/volcano-generated/models/update_storage_bucket_request.rb +158 -0
  392. data/lib/volcano/generated/lib/volcano-generated/models/update_variable_request.rb +164 -0
  393. data/lib/volcano/generated/lib/volcano-generated/models/upload_session_part.rb +169 -0
  394. data/lib/volcano/generated/lib/volcano-generated/models/upload_session_status_response.rb +295 -0
  395. data/lib/volcano/generated/lib/volcano-generated/models/upload_storage_object201_response.rb +104 -0
  396. data/lib/volcano/generated/lib/volcano-generated/models/usage_data_point.rb +193 -0
  397. data/lib/volcano/generated/lib/volcano-generated/models/variable.rb +389 -0
  398. data/lib/volcano/generated/lib/volcano-generated/version.rb +15 -0
  399. data/lib/volcano/generated/lib/volcano-generated.rb +405 -0
  400. data/lib/volcano/generated_transport.rb +131 -0
  401. data/lib/volcano/generated_transport_anonymous.rb +34 -0
  402. data/lib/volcano/generated_transport_auth.rb +108 -0
  403. data/lib/volcano/generated_transport_confirmation.rb +30 -0
  404. data/lib/volcano/generated_transport_database.rb +54 -0
  405. data/lib/volcano/generated_transport_email_change.rb +44 -0
  406. data/lib/volcano/generated_transport_functions.rb +108 -0
  407. data/lib/volcano/generated_transport_logs.rb +31 -0
  408. data/lib/volcano/generated_transport_oauth.rb +64 -0
  409. data/lib/volcano/generated_transport_sessions.rb +27 -0
  410. data/lib/volcano/generated_transport_storage.rb +86 -0
  411. data/lib/volcano/generated_transport_support.rb +221 -0
  412. data/lib/volcano/generated_transport_upload_session_api.rb +69 -0
  413. data/lib/volcano/generated_transport_upload_sessions.rb +67 -0
  414. data/lib/volcano/lock_auto_renewal.rb +51 -0
  415. data/lib/volcano/lock_guard.rb +135 -0
  416. data/lib/volcano/lock_lease_clock.rb +39 -0
  417. data/lib/volcano/lock_renewer.rb +73 -0
  418. data/lib/volcano/lock_session.rb +70 -0
  419. data/lib/volcano/locks.rb +109 -0
  420. data/lib/volcano/log_responses.rb +39 -0
  421. data/lib/volcano/logs.rb +82 -0
  422. data/lib/volcano/models.rb +115 -0
  423. data/lib/volcano/realtime/blocking_call.rb +32 -0
  424. data/lib/volcano/realtime/broadcast_delivery.rb +63 -0
  425. data/lib/volcano/realtime/channel_callbacks.rb +127 -0
  426. data/lib/volcano/realtime/channel_lifecycle.rb +133 -0
  427. data/lib/volcano/realtime/connection.rb +114 -0
  428. data/lib/volcano/realtime/connection_callbacks.rb +126 -0
  429. data/lib/volcano/realtime/lifecycle.rb +46 -0
  430. data/lib/volcano/realtime/postgres_batch.rb +89 -0
  431. data/lib/volcano/realtime/postgres_changes.rb +107 -0
  432. data/lib/volcano/realtime/postgres_database.rb +63 -0
  433. data/lib/volcano/realtime/postgres_delivery.rb +113 -0
  434. data/lib/volcano/realtime/postgres_expansion.rb +66 -0
  435. data/lib/volcano/realtime/presence.rb +122 -0
  436. data/lib/volcano/realtime/presence_state.rb +61 -0
  437. data/lib/volcano/realtime/protocol.rb +150 -0
  438. data/lib/volcano/realtime/protocol_dispatch.rb +114 -0
  439. data/lib/volcano/realtime/protocol_io.rb +96 -0
  440. data/lib/volcano/realtime/protocol_lifecycle.rb +122 -0
  441. data/lib/volcano/realtime/protocol_publication_dispatch.rb +121 -0
  442. data/lib/volcano/realtime/protocol_recovery.rb +117 -0
  443. data/lib/volcano/realtime/protocol_recovery_dispatch.rb +106 -0
  444. data/lib/volcano/realtime/protocol_recovery_position.rb +95 -0
  445. data/lib/volcano/realtime/reconnect.rb +88 -0
  446. data/lib/volcano/realtime.rb +260 -0
  447. data/lib/volcano/redaction.rb +60 -0
  448. data/lib/volcano/sign_up_result.rb +9 -0
  449. data/lib/volcano/storage.rb +120 -0
  450. data/lib/volcano/storage_models.rb +121 -0
  451. data/lib/volcano/storage_mutations.rb +81 -0
  452. data/lib/volcano/storage_public_url.rb +64 -0
  453. data/lib/volcano/storage_resumable_upload.rb +90 -0
  454. data/lib/volcano/storage_upload_sessions.rb +116 -0
  455. data/lib/volcano/transport.rb +60 -0
  456. data/lib/volcano/version.rb +5 -0
  457. data/lib/volcano.rb +58 -0
  458. metadata +580 -0
@@ -0,0 +1,221 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Volcano
4
+ # Internal transport implementation assembled across support modules.
5
+ class GeneratedTransport
6
+ # Resolves generated model constants across the private namespace boundary.
7
+ module ModelDeserialization
8
+ def _deserialize(type, value)
9
+ super
10
+ rescue NameError => e
11
+ raise unless e.name == :Generated && e.message.include?('private constant Volcano::Generated')
12
+
13
+ klass = Generated.const_get(type)
14
+ if klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of)
15
+ klass.build(value)
16
+ else
17
+ klass.build_from_hash(value)
18
+ end
19
+ end
20
+ end
21
+ private_constant :ModelDeserialization
22
+
23
+ Generated::ApiModelBase.singleton_class.prepend(ModelDeserialization)
24
+
25
+ # Corrects generated content negotiation and private model lookup.
26
+ class ApiClient < Generated::ApiClient
27
+ def build_request(http_method, path, options = {})
28
+ request = super
29
+ request.options[:followlocation] = options.fetch(:follow_location, true)
30
+ request.options[:params_encoding] = options.fetch(:params_encoding, request.options[:params_encoding])
31
+ request
32
+ end
33
+
34
+ def select_header_content_type(content_types)
35
+ if content_types.include?('multipart/form-data') && content_types.include?('application/json')
36
+ return 'multipart/form-data'
37
+ end
38
+
39
+ super
40
+ end
41
+
42
+ def convert_to_type(data, return_type)
43
+ super
44
+ rescue NameError => e
45
+ raise unless e.name == :Generated && e.message.include?('private constant Volcano::Generated')
46
+
47
+ klass = Generated.const_get(return_type)
48
+ klass.respond_to?(:openapi_one_of) ? klass.build(data) : klass.build_from_hash(data)
49
+ end
50
+ end
51
+
52
+ # Captures a generated request URL without performing network I/O.
53
+ class AuthorizationURLApiClient < ApiClient
54
+ def call_api(http_method, path, options = {})
55
+ [build_request(http_method, path, options).url, 0, {}]
56
+ end
57
+ end
58
+ private_constant :AuthorizationURLApiClient
59
+
60
+ # Implements storage endpoints omitted by the generated API surface.
61
+ class StorageApi < Generated::StorageObjectsApi
62
+ include UploadSessionStorageApi
63
+
64
+ UPLOAD_OPTIONS = {
65
+ operation: :'StorageObjectsApi.upload_storage_object',
66
+ header_params: { 'Accept' => 'application/json', 'Content-Type' => 'multipart/form-data' }.freeze,
67
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken AnonKey].freeze,
68
+ return_type: 'StorageObject'
69
+ }.freeze
70
+ DOWNLOAD_OPTIONS = {
71
+ operation: :'StorageObjectsApi.download_storage_object',
72
+ header_params: { 'Accept' => 'application/octet-stream, application/json' }.freeze,
73
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken AnonKey].freeze,
74
+ return_type: 'File'
75
+ }.freeze
76
+ DELETE_OPTIONS = {
77
+ operation: :'StorageObjectsApi.delete_storage_object',
78
+ header_params: { 'Accept' => 'application/json' }.freeze,
79
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken].freeze
80
+ }.freeze
81
+ VISIBILITY_OPTIONS = {
82
+ operation: :'StorageObjectsApi.update_storage_object_visibility',
83
+ header_params: { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }.freeze,
84
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken].freeze,
85
+ return_type: 'StorageObject'
86
+ }.freeze
87
+
88
+ def upload_storage_object_with_http_info(bucket_name, path, file, opts = {})
89
+ if opts[:content_type]
90
+ # Ethon accepts [filename, MIME type, local path] with encoding disabled.
91
+ file = [File.basename(file.path), opts[:content_type], File.expand_path(file.path)]
92
+ opts = opts.merge(params_encoding: :none)
93
+ end
94
+ options = opts.merge(UPLOAD_OPTIONS).merge(form_params: { 'file' => file })
95
+ call_storage_api(:POST, bucket_name, path, options)
96
+ end
97
+
98
+ def download_storage_object_with_http_info(bucket_name, path, opts = {})
99
+ header_params = DOWNLOAD_OPTIONS.fetch(:header_params).merge(opts[:header_params] || {})
100
+ header_params['Range'] = opts[:range] unless opts[:range].nil?
101
+ options = opts.merge(DOWNLOAD_OPTIONS, header_params: header_params)
102
+
103
+ call_storage_api(:GET, bucket_name, path, options)
104
+ end
105
+
106
+ def delete_storage_object_with_http_info(bucket_name, path, opts = {})
107
+ call_storage_api(:DELETE, bucket_name, path, opts.merge(DELETE_OPTIONS))
108
+ end
109
+
110
+ def update_storage_object_visibility_with_http_info(bucket_name, path, request, opts = {})
111
+ options = opts.merge(VISIBILITY_OPTIONS).merge(body: api_client.object_to_http_body(request))
112
+ call_storage_api(:PATCH, bucket_name, path, options, suffix: '/visibility')
113
+ end
114
+
115
+ private
116
+
117
+ def call_storage_api(method, bucket_name, path, options, suffix: '')
118
+ raise ArgumentError, 'bucket_name is required' if bucket_name.nil?
119
+ raise ArgumentError, 'path is required' if path.nil?
120
+
121
+ bucket = CGI.escapeURIComponent(bucket_name.to_s)
122
+ object_path = CGI.escapeURIComponent(path.to_s).gsub('%2F', '/')
123
+ api_client.call_api(method, "/storage/#{bucket}/#{object_path}#{suffix}", options)
124
+ end
125
+ end
126
+
127
+ # Normalizes values returned by the generated client.
128
+ module ValueNormalization
129
+ private
130
+
131
+ def parse_body(value)
132
+ return {} if value.nil? || value.empty?
133
+
134
+ JSON.parse(value)
135
+ rescue JSON::ParserError
136
+ {}
137
+ end
138
+
139
+ def plain_value(value)
140
+ value = value.to_hash if value.respond_to?(:to_hash)
141
+ case value
142
+ when Hash then value.to_h { |key, item| [key.to_s, plain_value(item)] }
143
+ when Array then value.map { |item| plain_value(item) }
144
+ else value
145
+ end
146
+ end
147
+
148
+ def deep_symbolize(value)
149
+ case value
150
+ when Hash then value.to_h { |key, item| [key.to_sym, deep_symbolize(item)] }
151
+ when Array then value.map { |item| deep_symbolize(item) }
152
+ else value
153
+ end
154
+ end
155
+
156
+ def binary_data(value)
157
+ return value.to_s.b unless value.respond_to?(:read)
158
+
159
+ prepare_stream(value)
160
+ value.read.b
161
+ ensure
162
+ value.close! if value.respond_to?(:close!)
163
+ end
164
+
165
+ def prepare_stream(value)
166
+ value.open if value.respond_to?(:closed?) && value.closed? && value.respond_to?(:open)
167
+ value.binmode if value.respond_to?(:binmode)
168
+ value.rewind if value.respond_to?(:rewind)
169
+ end
170
+ end
171
+
172
+ # Builds generated API wrappers with consistent authentication and timeouts.
173
+ module ApiFactory
174
+ private
175
+
176
+ def build_apis(authorization)
177
+ api_client = ApiClient.new(generated_configuration(authorization))
178
+ generated_apis(api_client)
179
+ end
180
+
181
+ def generated_configuration(authorization)
182
+ uri = URI(@api_url)
183
+ Generated::Configuration.new.tap do |configuration|
184
+ configuration.scheme = uri.scheme
185
+ configuration.host = host_with_port(uri)
186
+ configuration.base_path = uri.path == '/' ? '' : uri.path
187
+ configuration.ignore_operation_servers = true
188
+ configuration.access_token = authorization
189
+ configuration.timeout = timeout_milliseconds
190
+ end
191
+ end
192
+
193
+ def timeout_milliseconds
194
+ (@timeout * 1_000).round
195
+ end
196
+
197
+ def generated_apis(api_client)
198
+ GeneratedApis.new(
199
+ authentication: Generated::AuthenticationApi.new(api_client),
200
+ oauth: Generated::OAuthAuthenticationApi.new(api_client),
201
+ database: Generated::DatabaseQueriesApi.new(api_client),
202
+ storage: StorageApi.new(api_client),
203
+ locks: Generated::LocksApi.new(api_client),
204
+ functions: Generated::FunctionsApi.new(api_client),
205
+ logs: Generated::LogsApi.new(api_client)
206
+ )
207
+ end
208
+
209
+ def oauth_authorization_api
210
+ api_client = AuthorizationURLApiClient.new(generated_configuration(nil))
211
+ Generated::OAuthAuthenticationApi.new(api_client)
212
+ end
213
+
214
+ def host_with_port(uri)
215
+ return uri.host if uri.port == uri.default_port
216
+
217
+ "#{uri.host}:#{uri.port}"
218
+ end
219
+ end
220
+ end
221
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Volcano
4
+ # Corrects generated HTTP operations for resumable storage uploads.
5
+ module UploadSessionStorageApi
6
+ CREATE_OPTIONS = {
7
+ operation: :'StorageObjectsApi.upload_storage_object',
8
+ header_params: { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }.freeze,
9
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken AnonKey].freeze,
10
+ return_type: 'CreateUploadSessionResponse'
11
+ }.freeze
12
+ UPLOAD_PART_OPTIONS = {
13
+ operation: :'StorageObjectsApi.upload_part',
14
+ header_params: { 'Accept' => 'application/json', 'Content-Type' => 'application/octet-stream' }.freeze,
15
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken AnonKey].freeze,
16
+ return_type: 'UploadSessionPart'
17
+ }.freeze
18
+ COMPLETE_OPTIONS = {
19
+ operation: :'StorageObjectsApi.upload_storage_object',
20
+ header_params: { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }.freeze,
21
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken AnonKey].freeze,
22
+ return_type: 'CompleteUploadSessionResponse'
23
+ }.freeze
24
+ STATUS_OPTIONS = {
25
+ operation: :'StorageObjectsApi.download_storage_object',
26
+ header_params: { 'Accept' => 'application/json' }.freeze,
27
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken AnonKey].freeze,
28
+ return_type: 'UploadSessionStatusResponse'
29
+ }.freeze
30
+ ABORT_OPTIONS = {
31
+ operation: :'StorageObjectsApi.delete_storage_object',
32
+ header_params: { 'Accept' => 'application/json' }.freeze,
33
+ auth_names: %w[ServiceRoleKey AuthUserAccessToken].freeze
34
+ }.freeze
35
+
36
+ def create_upload_session_with_http_info(bucket_name, path, request)
37
+ options = CREATE_OPTIONS.merge(body: api_client.object_to_http_body(request))
38
+ call_storage_api(:POST, bucket_name, path, options)
39
+ end
40
+
41
+ def upload_part_with_http_info(bucket_name, path, session_id, part_number, data)
42
+ headers = UPLOAD_PART_OPTIONS.fetch(:header_params).merge(
43
+ 'X-Upload-Session' => session_id, 'X-Part-Number' => part_number.to_s
44
+ )
45
+ call_storage_api(
46
+ :PUT, bucket_name, path, UPLOAD_PART_OPTIONS.merge(header_params: headers, body: data)
47
+ )
48
+ end
49
+
50
+ def complete_upload_session_with_http_info(bucket_name, path, session_id)
51
+ headers = COMPLETE_OPTIONS.fetch(:header_params).merge(
52
+ 'X-Upload-Session' => session_id, 'X-Upload-Complete' => 'true'
53
+ )
54
+ options = COMPLETE_OPTIONS.merge(header_params: headers, body: JSON.generate({}))
55
+ call_storage_api(:POST, bucket_name, path, options)
56
+ end
57
+
58
+ def get_upload_session_with_http_info(bucket_name, path, session_id)
59
+ headers = STATUS_OPTIONS.fetch(:header_params).merge('X-Upload-Session' => session_id)
60
+ call_storage_api(:GET, bucket_name, path, STATUS_OPTIONS.merge(header_params: headers))
61
+ end
62
+
63
+ def abort_upload_session_with_http_info(bucket_name, path, session_id)
64
+ headers = ABORT_OPTIONS.fetch(:header_params).merge('X-Upload-Session' => session_id)
65
+ call_storage_api(:DELETE, bucket_name, path, ABORT_OPTIONS.merge(header_params: headers))
66
+ end
67
+ end
68
+ private_constant :UploadSessionStorageApi
69
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Volcano
4
+ # Resumable storage operations for the internal generated transport.
5
+ class GeneratedTransport
6
+ def create_upload_session(authorization:, bucket_name:, request:)
7
+ invoke do
8
+ attributes = {
9
+ object_path: request.path,
10
+ content_type: request.content_type,
11
+ total_size: request.total_size,
12
+ part_size: request.part_size
13
+ }.compact
14
+ generated_request = Generated::CreateUploadSessionRequest.new(attributes)
15
+ apis = @api_factory.call(authorization)
16
+ data, status, headers = apis.storage.create_upload_session_with_http_info(
17
+ bucket_name, request.path, generated_request
18
+ )
19
+ response(data, status, headers)
20
+ end
21
+ end
22
+
23
+ def upload_part(authorization:, bucket_name:, request:)
24
+ invoke do
25
+ apis = @api_factory.call(authorization)
26
+ data, status, headers = apis.storage.upload_part_with_http_info(
27
+ bucket_name,
28
+ request.path,
29
+ request.session_id,
30
+ request.part_number,
31
+ request.data
32
+ )
33
+ response(data, status, headers)
34
+ end
35
+ end
36
+
37
+ def complete_upload_session(authorization:, bucket_name:, request:)
38
+ invoke do
39
+ apis = @api_factory.call(authorization)
40
+ data, status, headers = apis.storage.complete_upload_session_with_http_info(
41
+ bucket_name, request.path, request.session_id
42
+ )
43
+ response(data, status, headers)
44
+ end
45
+ end
46
+
47
+ def get_upload_session(authorization:, bucket_name:, request:)
48
+ invoke do
49
+ apis = @api_factory.call(authorization)
50
+ data, status, headers = apis.storage.get_upload_session_with_http_info(
51
+ bucket_name, request.path, request.session_id
52
+ )
53
+ response(data, status, headers)
54
+ end
55
+ end
56
+
57
+ def abort_upload_session(authorization:, bucket_name:, request:)
58
+ invoke do
59
+ apis = @api_factory.call(authorization)
60
+ data, status, headers = apis.storage.abort_upload_session_with_http_info(
61
+ bucket_name, request.path, request.session_id
62
+ )
63
+ response(data, status, headers)
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Volcano
4
+ # Adds block-scoped automatic renewal to the lock facade.
5
+ module LockAutoRenewal
6
+ MIN_LOCK_TTL_SECONDS = 5
7
+ MAX_LOCK_TTL_SECONDS = 7_776_000
8
+ MAX_RENEWAL_DELAY_SECONDS = 60.0
9
+ RENEWAL_SAFETY_MARGIN_SECONDS = 1.0
10
+ RENEWAL_REQUEST_BUDGET_SECONDS = 1.0
11
+ RENEWER_SHUTDOWN_TIMEOUT_SECONDS = 1.0
12
+
13
+ def with_lock(key, ttl:, &)
14
+ validate_ttl(ttl)
15
+ started_at = LockLeaseClock.capture
16
+ guard = LockGuard.new(acquire(key, ttl: ttl), ttl: ttl, started_at: started_at)
17
+ owned_key = guard.lease.key
18
+ renewer = lock_renewer(owned_key, guard, ttl)
19
+ LockSession.new(self, owned_key, guard, renewer, method(:renewal_delay)).run(&)
20
+ end
21
+
22
+ private
23
+
24
+ def lock_renewer(key, guard, ttl)
25
+ config = LockRenewer::Config.new(
26
+ ttl: ttl, delay: method(:renewal_delay),
27
+ shutdown_timeout: RENEWER_SHUTDOWN_TIMEOUT_SECONDS
28
+ )
29
+ LockRenewer.new(self, key, guard, config)
30
+ end
31
+
32
+ def renewal_delay(ttl, remaining: nil)
33
+ delay = [ttl / 3.0, MAX_RENEWAL_DELAY_SECONDS].min
34
+ latest = latest_renewal_delay(remaining)
35
+ delay = [delay, latest].min if latest
36
+ jittered = [0.0, delay * (0.9 + (rand * 0.2))].max
37
+ latest ? [jittered, latest].min : jittered
38
+ end
39
+
40
+ def latest_renewal_delay(remaining)
41
+ return unless remaining
42
+
43
+ [0.0, remaining - RENEWAL_SAFETY_MARGIN_SECONDS - RENEWAL_REQUEST_BUDGET_SECONDS].max
44
+ end
45
+
46
+ def validate_ttl(ttl)
47
+ valid = ttl.is_a?(Integer) && ttl.between?(MIN_LOCK_TTL_SECONDS, MAX_LOCK_TTL_SECONDS)
48
+ raise ArgumentError, 'ttl must be an integer between 5 seconds and 90 days' unless valid
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'timeout'
4
+
5
+ module Volcano
6
+ # Exposes the latest lease and reports asynchronous lease loss.
7
+ class LockGuard
8
+ EXPIRY_MESSAGE = 'lock lease expired before renewal completed'
9
+ MAX_EXPIRY_POLL_SECONDS = 1.0
10
+ UNSAFE_RENEWAL_MESSAGE = 'lock renewal returned no safe lease window'
11
+
12
+ attr_reader :ttl
13
+
14
+ def initialize(lease, ttl:, started_at:)
15
+ @lease = lease
16
+ @ttl = ttl
17
+ @lease_clock = LockLeaseClock.new(ttl: ttl, started_at: started_at)
18
+ @mutex = Mutex.new
19
+ @changed = ConditionVariable.new
20
+ @failure = nil
21
+ @expiry_stopped = false
22
+ @expiry_thread = nil
23
+ end
24
+
25
+ def lease = @mutex.synchronize { @lease }
26
+
27
+ def lost?
28
+ @mutex.synchronize do
29
+ record_expiry_if_needed
30
+ !@failure.nil?
31
+ end
32
+ end
33
+
34
+ def wait_lost(timeout: nil) = @mutex.synchronize { wait_for_failure?(wait_deadline(timeout)) }
35
+
36
+ def replace_lease(lease, started_at:)
37
+ @mutex.synchronize do
38
+ return false if @failure
39
+
40
+ @lease = lease
41
+ @lease_clock.reset(started_at)
42
+ @changed.broadcast
43
+ true
44
+ end
45
+ end
46
+
47
+ def mark_lost(failure)
48
+ @mutex.synchronize do
49
+ @failure ||= failure
50
+ @changed.broadcast
51
+ end
52
+ end
53
+
54
+ def failure
55
+ @mutex.synchronize do
56
+ record_expiry_if_needed
57
+ @failure
58
+ end
59
+ end
60
+
61
+ def renewal_delay(delay) = @mutex.synchronize { delay.call(@ttl, remaining: remaining_time) }
62
+
63
+ def start_expiry_watch
64
+ @mutex.synchronize { @expiry_stopped = false }
65
+ @expiry_thread = Thread.new { expiry_loop }
66
+ end
67
+
68
+ def stop_expiry_watch
69
+ @mutex.synchronize do
70
+ record_expiry_if_needed
71
+ @expiry_stopped = true
72
+ @changed.broadcast
73
+ end
74
+ @expiry_thread&.join
75
+ end
76
+
77
+ private
78
+
79
+ def wait_for_failure?(deadline)
80
+ loop do
81
+ record_expiry_if_needed
82
+ return true if @failure
83
+
84
+ wait = wait_duration(deadline)
85
+ return false unless wait
86
+
87
+ @changed.wait(@mutex, wait)
88
+ end
89
+ end
90
+
91
+ def wait_duration(deadline)
92
+ return [expiry_delay, MAX_EXPIRY_POLL_SECONDS].min unless deadline
93
+
94
+ caller_remaining = deadline - @lease_clock.monotonic_now
95
+ return if caller_remaining <= 0
96
+
97
+ [expiry_delay, caller_remaining, MAX_EXPIRY_POLL_SECONDS].min
98
+ end
99
+
100
+ def expiry_loop
101
+ loop do
102
+ state = @mutex.synchronize { expiry_step }
103
+ break if state == :finished
104
+ end
105
+ end
106
+
107
+ def expiry_step
108
+ return :finished if @expiry_stopped
109
+
110
+ delay = expiry_delay
111
+ return record_expiry if delay <= 0
112
+
113
+ @changed.wait(@mutex, [delay, MAX_EXPIRY_POLL_SECONDS].min)
114
+ :waiting
115
+ end
116
+
117
+ def expiry_delay = remaining_time
118
+
119
+ def record_expiry
120
+ @failure ||= Timeout::Error.new(EXPIRY_MESSAGE)
121
+ @changed.broadcast
122
+ :finished
123
+ end
124
+
125
+ def record_expiry_if_needed
126
+ record_expiry if !@failure && remaining_time <= 0
127
+ end
128
+
129
+ def remaining_time = @lease_clock.remaining
130
+
131
+ def wait_deadline(timeout)
132
+ timeout && (@lease_clock.monotonic_now + timeout)
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Volcano
4
+ # Tracks lease age across wall-clock changes and host suspension.
5
+ class LockLeaseClock
6
+ MAX_LEASE_LIFETIME_SECONDS = 7_776_000
7
+ SUSPEND_AWARE = Process.const_defined?(:CLOCK_BOOTTIME)
8
+ CLOCK_ID = SUSPEND_AWARE ? Process.const_get(:CLOCK_BOOTTIME) : Process::CLOCK_MONOTONIC
9
+ Timestamp = Data.define(:monotonic, :wall)
10
+
11
+ def self.now = Process.clock_gettime(CLOCK_ID)
12
+ def self.capture = Timestamp.new(monotonic: now, wall: Time.now)
13
+ def self.suspend_aware? = SUSPEND_AWARE
14
+
15
+ def initialize(ttl:, started_at:)
16
+ @ttl = ttl
17
+ @absolute_deadline = started_at.monotonic + MAX_LEASE_LIFETIME_SECONDS
18
+ @absolute_wall_deadline = started_at.wall + MAX_LEASE_LIFETIME_SECONDS
19
+ reset(started_at)
20
+ end
21
+
22
+ def reset(started_at)
23
+ @deadline = [started_at.monotonic + @ttl, @absolute_deadline].min
24
+ @wall_deadline = [started_at.wall + @ttl, @absolute_wall_deadline].min
25
+ end
26
+
27
+ def remaining
28
+ monotonic_remaining = @deadline - monotonic_now
29
+ remaining = if self.class.suspend_aware?
30
+ monotonic_remaining
31
+ else
32
+ [monotonic_remaining, @wall_deadline - Time.now].min
33
+ end
34
+ remaining.clamp(0.0, Float::INFINITY)
35
+ end
36
+
37
+ def monotonic_now = self.class.now
38
+ end
39
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Volcano
4
+ # Renews one guarded lease until its block exits or ownership is lost.
5
+ class LockRenewer
6
+ Config = Data.define(:ttl, :delay, :shutdown_timeout)
7
+
8
+ def initialize(locks, key, guard, config)
9
+ @locks = locks
10
+ @key = key
11
+ @guard = guard
12
+ @config = config
13
+ @mutex = Mutex.new
14
+ @stopped = ConditionVariable.new
15
+ @stop = false
16
+ @thread = nil
17
+ end
18
+
19
+ def start
20
+ @thread = Thread.new { renewal_loop }
21
+ end
22
+
23
+ def stop
24
+ request_stop
25
+ return unless @thread
26
+
27
+ # Renew requires current token ownership, so a late request cannot resurrect a released lease.
28
+ @thread.join(@config.shutdown_timeout)
29
+ end
30
+
31
+ private
32
+
33
+ def renewal_loop
34
+ loop do
35
+ return if @guard.lost?
36
+ return if wait_to_renew
37
+ return if @guard.lost?
38
+
39
+ renew
40
+ end
41
+ end
42
+
43
+ def wait_to_renew
44
+ seconds = @guard.renewal_delay(@config.delay)
45
+ @mutex.synchronize do
46
+ @stopped.wait(@mutex, seconds) unless @stop
47
+ @stop
48
+ end
49
+ end
50
+
51
+ def renew
52
+ started_at = LockLeaseClock.capture
53
+ lease = @locks.renew(@key, @guard.lease, ttl: @config.ttl)
54
+ replaced = @guard.replace_lease(lease, started_at: started_at)
55
+ return if replaced && renewal_safe?
56
+
57
+ @guard.mark_lost(Timeout::Error.new(LockGuard::UNSAFE_RENEWAL_MESSAGE))
58
+ rescue StandardError => e
59
+ @guard.mark_lost(e)
60
+ end
61
+
62
+ def renewal_safe?
63
+ @guard.renewal_delay(@config.delay).positive?
64
+ end
65
+
66
+ def request_stop
67
+ @mutex.synchronize do
68
+ @stop = true
69
+ @stopped.broadcast
70
+ end
71
+ end
72
+ end
73
+ end