moderation_api 1.2.2 → 2.0.1

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 (438) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +36 -0
  4. data/README.md +198 -62
  5. data/SECURITY.md +27 -0
  6. data/lib/moderation_api/client.rb +98 -0
  7. data/lib/moderation_api/errors.rb +228 -0
  8. data/lib/moderation_api/file_part.rb +58 -0
  9. data/lib/moderation_api/internal/transport/base_client.rb +577 -0
  10. data/lib/moderation_api/internal/transport/pooled_net_requester.rb +208 -0
  11. data/lib/moderation_api/internal/type/array_of.rb +168 -0
  12. data/lib/moderation_api/internal/type/base_model.rb +534 -0
  13. data/lib/moderation_api/internal/type/base_page.rb +55 -0
  14. data/lib/moderation_api/internal/type/boolean.rb +77 -0
  15. data/lib/moderation_api/internal/type/converter.rb +327 -0
  16. data/lib/moderation_api/internal/type/enum.rb +131 -0
  17. data/lib/moderation_api/internal/type/file_input.rb +111 -0
  18. data/lib/moderation_api/internal/type/hash_of.rb +188 -0
  19. data/lib/moderation_api/internal/type/request_parameters.rb +42 -0
  20. data/lib/moderation_api/internal/type/union.rb +243 -0
  21. data/lib/moderation_api/internal/type/unknown.rb +81 -0
  22. data/lib/moderation_api/internal/util.rb +915 -0
  23. data/lib/moderation_api/internal.rb +20 -0
  24. data/lib/moderation_api/models/account_list_params.rb +14 -0
  25. data/lib/moderation_api/models/account_list_response.rb +68 -0
  26. data/lib/moderation_api/models/action_create_params.rb +217 -0
  27. data/lib/moderation_api/models/action_create_response.rb +188 -0
  28. data/lib/moderation_api/models/action_delete_params.rb +14 -0
  29. data/lib/moderation_api/models/action_delete_response.rb +25 -0
  30. data/lib/moderation_api/models/action_list_params.rb +20 -0
  31. data/lib/moderation_api/models/action_list_response.rb +247 -0
  32. data/lib/moderation_api/models/action_retrieve_params.rb +14 -0
  33. data/lib/moderation_api/models/action_retrieve_response.rb +244 -0
  34. data/lib/moderation_api/models/action_update_params.rb +217 -0
  35. data/lib/moderation_api/models/action_update_response.rb +188 -0
  36. data/lib/moderation_api/models/actions/execute_execute_by_id_params.rb +48 -0
  37. data/lib/moderation_api/models/actions/execute_execute_by_id_response.rb +35 -0
  38. data/lib/moderation_api/models/actions/execute_execute_params.rb +64 -0
  39. data/lib/moderation_api/models/actions/execute_execute_response.rb +21 -0
  40. data/lib/moderation_api/models/auth_create_params.rb +14 -0
  41. data/lib/moderation_api/models/auth_create_response.rb +33 -0
  42. data/lib/moderation_api/models/auth_retrieve_params.rb +14 -0
  43. data/lib/moderation_api/models/auth_retrieve_response.rb +25 -0
  44. data/lib/moderation_api/models/author_create_params.rb +127 -0
  45. data/lib/moderation_api/models/author_create_response.rb +272 -0
  46. data/lib/moderation_api/models/author_delete_params.rb +14 -0
  47. data/lib/moderation_api/models/author_delete_response.rb +16 -0
  48. data/lib/moderation_api/models/author_list_params.rb +93 -0
  49. data/lib/moderation_api/models/author_list_response.rb +326 -0
  50. data/lib/moderation_api/models/author_retrieve_params.rb +14 -0
  51. data/lib/moderation_api/models/author_retrieve_response.rb +274 -0
  52. data/lib/moderation_api/models/author_update_params.rb +119 -0
  53. data/lib/moderation_api/models/author_update_response.rb +272 -0
  54. data/lib/moderation_api/models/content_submit_params.rb +871 -0
  55. data/lib/moderation_api/models/content_submit_response.rb +742 -0
  56. data/lib/moderation_api/models/queue/item_list_params.rb +118 -0
  57. data/lib/moderation_api/models/queue/item_list_response.rb +235 -0
  58. data/lib/moderation_api/models/queue/item_resolve_params.rb +32 -0
  59. data/lib/moderation_api/models/queue/item_resolve_response.rb +34 -0
  60. data/lib/moderation_api/models/queue/item_unresolve_params.rb +32 -0
  61. data/lib/moderation_api/models/queue/item_unresolve_response.rb +34 -0
  62. data/lib/moderation_api/models/queue_get_stats_params.rb +22 -0
  63. data/lib/moderation_api/models/queue_get_stats_response.rb +251 -0
  64. data/lib/moderation_api/models/queue_retrieve_params.rb +14 -0
  65. data/lib/moderation_api/models/queue_retrieve_response.rb +190 -0
  66. data/lib/moderation_api/models/wordlist/word_add_params.rb +24 -0
  67. data/lib/moderation_api/models/wordlist/word_add_response.rb +35 -0
  68. data/lib/moderation_api/models/wordlist/word_remove_params.rb +24 -0
  69. data/lib/moderation_api/models/wordlist/word_remove_response.rb +35 -0
  70. data/lib/moderation_api/models/wordlist_get_embedding_status_params.rb +14 -0
  71. data/lib/moderation_api/models/wordlist_get_embedding_status_response.rb +35 -0
  72. data/lib/moderation_api/models/wordlist_list_params.rb +14 -0
  73. data/lib/moderation_api/models/wordlist_list_response.rb +52 -0
  74. data/lib/moderation_api/models/wordlist_retrieve_params.rb +14 -0
  75. data/lib/moderation_api/models/wordlist_retrieve_response.rb +65 -0
  76. data/lib/moderation_api/models/wordlist_update_params.rb +58 -0
  77. data/lib/moderation_api/models/wordlist_update_response.rb +65 -0
  78. data/lib/moderation_api/models.rb +90 -0
  79. data/lib/moderation_api/request_options.rb +78 -0
  80. data/lib/moderation_api/resources/account.rb +32 -0
  81. data/lib/moderation_api/resources/actions/execute.rb +80 -0
  82. data/lib/moderation_api/resources/actions.rb +175 -0
  83. data/lib/moderation_api/resources/auth.rb +50 -0
  84. data/lib/moderation_api/resources/authors.rb +179 -0
  85. data/lib/moderation_api/resources/content.rb +53 -0
  86. data/lib/moderation_api/resources/queue/items.rb +131 -0
  87. data/lib/moderation_api/resources/queue.rb +63 -0
  88. data/lib/moderation_api/resources/wordlist/words.rb +64 -0
  89. data/lib/moderation_api/resources/wordlist.rb +111 -0
  90. data/lib/moderation_api/version.rb +3 -13
  91. data/lib/moderation_api.rb +115 -89
  92. data/manifest.yaml +17 -0
  93. data/rbi/moderation_api/client.rbi +67 -0
  94. data/rbi/moderation_api/errors.rbi +205 -0
  95. data/rbi/moderation_api/file_part.rbi +37 -0
  96. data/rbi/moderation_api/internal/transport/base_client.rbi +305 -0
  97. data/rbi/moderation_api/internal/transport/pooled_net_requester.rbi +84 -0
  98. data/rbi/moderation_api/internal/type/array_of.rbi +104 -0
  99. data/rbi/moderation_api/internal/type/base_model.rbi +314 -0
  100. data/rbi/moderation_api/internal/type/base_page.rbi +43 -0
  101. data/rbi/moderation_api/internal/type/boolean.rbi +58 -0
  102. data/rbi/moderation_api/internal/type/converter.rbi +225 -0
  103. data/rbi/moderation_api/internal/type/enum.rbi +82 -0
  104. data/rbi/moderation_api/internal/type/file_input.rbi +59 -0
  105. data/rbi/moderation_api/internal/type/hash_of.rbi +104 -0
  106. data/rbi/moderation_api/internal/type/request_parameters.rbi +31 -0
  107. data/rbi/moderation_api/internal/type/union.rbi +128 -0
  108. data/rbi/moderation_api/internal/type/unknown.rbi +58 -0
  109. data/rbi/moderation_api/internal/util.rbi +487 -0
  110. data/rbi/moderation_api/internal.rbi +18 -0
  111. data/rbi/moderation_api/models/account_list_params.rbi +32 -0
  112. data/rbi/moderation_api/models/account_list_response.rbi +115 -0
  113. data/rbi/moderation_api/models/action_create_params.rbi +433 -0
  114. data/rbi/moderation_api/models/action_create_response.rbi +354 -0
  115. data/rbi/moderation_api/models/action_delete_params.rbi +32 -0
  116. data/rbi/moderation_api/models/action_delete_response.rbi +36 -0
  117. data/rbi/moderation_api/models/action_list_params.rbi +41 -0
  118. data/rbi/moderation_api/models/action_list_response.rbi +450 -0
  119. data/rbi/moderation_api/models/action_retrieve_params.rbi +32 -0
  120. data/rbi/moderation_api/models/action_retrieve_response.rbi +442 -0
  121. data/rbi/moderation_api/models/action_update_params.rbi +436 -0
  122. data/rbi/moderation_api/models/action_update_response.rbi +354 -0
  123. data/rbi/moderation_api/models/actions/execute_execute_by_id_params.rbi +84 -0
  124. data/rbi/moderation_api/models/actions/execute_execute_by_id_response.rbi +54 -0
  125. data/rbi/moderation_api/models/actions/execute_execute_params.rbi +103 -0
  126. data/rbi/moderation_api/models/actions/execute_execute_response.rbi +33 -0
  127. data/rbi/moderation_api/models/auth_create_params.rbi +32 -0
  128. data/rbi/moderation_api/models/auth_create_response.rbi +48 -0
  129. data/rbi/moderation_api/models/auth_retrieve_params.rbi +32 -0
  130. data/rbi/moderation_api/models/auth_retrieve_response.rbi +36 -0
  131. data/rbi/moderation_api/models/author_create_params.rbi +184 -0
  132. data/rbi/moderation_api/models/author_create_response.rbi +467 -0
  133. data/rbi/moderation_api/models/author_delete_params.rbi +32 -0
  134. data/rbi/moderation_api/models/author_delete_response.rbi +26 -0
  135. data/rbi/moderation_api/models/author_list_params.rbi +213 -0
  136. data/rbi/moderation_api/models/author_list_response.rbi +593 -0
  137. data/rbi/moderation_api/models/author_retrieve_params.rbi +32 -0
  138. data/rbi/moderation_api/models/author_retrieve_response.rbi +472 -0
  139. data/rbi/moderation_api/models/author_update_params.rbi +176 -0
  140. data/rbi/moderation_api/models/author_update_response.rbi +467 -0
  141. data/rbi/moderation_api/models/content_submit_params.rbi +1641 -0
  142. data/rbi/moderation_api/models/content_submit_response.rbi +1456 -0
  143. data/rbi/moderation_api/models/queue/item_list_params.rbi +237 -0
  144. data/rbi/moderation_api/models/queue/item_list_response.rbi +440 -0
  145. data/rbi/moderation_api/models/queue/item_resolve_params.rbi +59 -0
  146. data/rbi/moderation_api/models/queue/item_resolve_response.rbi +55 -0
  147. data/rbi/moderation_api/models/queue/item_unresolve_params.rbi +59 -0
  148. data/rbi/moderation_api/models/queue/item_unresolve_response.rbi +52 -0
  149. data/rbi/moderation_api/models/queue_get_stats_params.rbi +49 -0
  150. data/rbi/moderation_api/models/queue_get_stats_response.rbi +466 -0
  151. data/rbi/moderation_api/models/queue_retrieve_params.rbi +32 -0
  152. data/rbi/moderation_api/models/queue_retrieve_response.rbi +411 -0
  153. data/rbi/moderation_api/models/wordlist/word_add_params.rbi +48 -0
  154. data/rbi/moderation_api/models/wordlist/word_add_response.rbi +58 -0
  155. data/rbi/moderation_api/models/wordlist/word_remove_params.rbi +48 -0
  156. data/rbi/moderation_api/models/wordlist/word_remove_response.rbi +58 -0
  157. data/rbi/moderation_api/models/wordlist_get_embedding_status_params.rbi +32 -0
  158. data/rbi/moderation_api/models/wordlist_get_embedding_status_response.rbi +53 -0
  159. data/rbi/moderation_api/models/wordlist_list_params.rbi +32 -0
  160. data/rbi/moderation_api/models/wordlist_list_response.rbi +80 -0
  161. data/rbi/moderation_api/models/wordlist_retrieve_params.rbi +32 -0
  162. data/rbi/moderation_api/models/wordlist_retrieve_response.rbi +88 -0
  163. data/rbi/moderation_api/models/wordlist_update_params.rbi +95 -0
  164. data/rbi/moderation_api/models/wordlist_update_response.rbi +88 -0
  165. data/rbi/moderation_api/models.rbi +50 -0
  166. data/rbi/moderation_api/request_options.rbi +59 -0
  167. data/rbi/moderation_api/resources/account.rbi +21 -0
  168. data/rbi/moderation_api/resources/actions/execute.rbi +69 -0
  169. data/rbi/moderation_api/resources/actions.rbi +164 -0
  170. data/rbi/moderation_api/resources/auth.rbi +28 -0
  171. data/rbi/moderation_api/resources/authors.rbi +143 -0
  172. data/rbi/moderation_api/resources/content.rbi +84 -0
  173. data/rbi/moderation_api/resources/queue/items.rbi +95 -0
  174. data/rbi/moderation_api/resources/queue.rbi +47 -0
  175. data/rbi/moderation_api/resources/wordlist/words.rbi +48 -0
  176. data/rbi/moderation_api/resources/wordlist.rbi +82 -0
  177. data/rbi/moderation_api/version.rbi +5 -0
  178. data/sig/moderation_api/client.rbs +38 -0
  179. data/sig/moderation_api/errors.rbs +117 -0
  180. data/sig/moderation_api/file_part.rbs +21 -0
  181. data/sig/moderation_api/internal/transport/base_client.rbs +133 -0
  182. data/sig/moderation_api/internal/transport/pooled_net_requester.rbs +48 -0
  183. data/sig/moderation_api/internal/type/array_of.rbs +48 -0
  184. data/sig/moderation_api/internal/type/base_model.rbs +104 -0
  185. data/sig/moderation_api/internal/type/base_page.rbs +24 -0
  186. data/sig/moderation_api/internal/type/boolean.rbs +26 -0
  187. data/sig/moderation_api/internal/type/converter.rbs +79 -0
  188. data/sig/moderation_api/internal/type/enum.rbs +32 -0
  189. data/sig/moderation_api/internal/type/file_input.rbs +25 -0
  190. data/sig/moderation_api/internal/type/hash_of.rbs +48 -0
  191. data/sig/moderation_api/internal/type/request_parameters.rbs +19 -0
  192. data/sig/moderation_api/internal/type/union.rbs +52 -0
  193. data/sig/moderation_api/internal/type/unknown.rbs +26 -0
  194. data/sig/moderation_api/internal/util.rbs +185 -0
  195. data/sig/moderation_api/internal.rbs +10 -0
  196. data/sig/moderation_api/models/account_list_params.rbs +15 -0
  197. data/sig/moderation_api/models/account_list_response.rbs +56 -0
  198. data/sig/moderation_api/models/action_create_params.rbs +195 -0
  199. data/sig/moderation_api/models/action_create_response.rbs +143 -0
  200. data/sig/moderation_api/models/action_delete_params.rbs +15 -0
  201. data/sig/moderation_api/models/action_delete_response.rbs +15 -0
  202. data/sig/moderation_api/models/action_list_params.rbs +25 -0
  203. data/sig/moderation_api/models/action_list_response.rbs +190 -0
  204. data/sig/moderation_api/models/action_retrieve_params.rbs +15 -0
  205. data/sig/moderation_api/models/action_retrieve_response.rbs +185 -0
  206. data/sig/moderation_api/models/action_update_params.rbs +197 -0
  207. data/sig/moderation_api/models/action_update_response.rbs +143 -0
  208. data/sig/moderation_api/models/actions/execute_execute_by_id_params.rbs +51 -0
  209. data/sig/moderation_api/models/actions/execute_execute_by_id_response.rbs +28 -0
  210. data/sig/moderation_api/models/actions/execute_execute_params.rbs +63 -0
  211. data/sig/moderation_api/models/actions/execute_execute_response.rbs +15 -0
  212. data/sig/moderation_api/models/auth_create_params.rbs +15 -0
  213. data/sig/moderation_api/models/auth_create_response.rbs +18 -0
  214. data/sig/moderation_api/models/auth_retrieve_params.rbs +15 -0
  215. data/sig/moderation_api/models/auth_retrieve_response.rbs +15 -0
  216. data/sig/moderation_api/models/author_create_params.rbs +106 -0
  217. data/sig/moderation_api/models/author_create_response.rbs +195 -0
  218. data/sig/moderation_api/models/author_delete_params.rbs +15 -0
  219. data/sig/moderation_api/models/author_delete_response.rbs +13 -0
  220. data/sig/moderation_api/models/author_list_params.rbs +110 -0
  221. data/sig/moderation_api/models/author_list_response.rbs +254 -0
  222. data/sig/moderation_api/models/author_retrieve_params.rbs +15 -0
  223. data/sig/moderation_api/models/author_retrieve_response.rbs +195 -0
  224. data/sig/moderation_api/models/author_update_params.rbs +101 -0
  225. data/sig/moderation_api/models/author_update_response.rbs +195 -0
  226. data/sig/moderation_api/models/content_submit_params.rbs +733 -0
  227. data/sig/moderation_api/models/content_submit_response.rbs +599 -0
  228. data/sig/moderation_api/models/queue/item_list_params.rbs +127 -0
  229. data/sig/moderation_api/models/queue/item_list_response.rbs +209 -0
  230. data/sig/moderation_api/models/queue/item_resolve_params.rbs +32 -0
  231. data/sig/moderation_api/models/queue/item_resolve_response.rbs +26 -0
  232. data/sig/moderation_api/models/queue/item_unresolve_params.rbs +32 -0
  233. data/sig/moderation_api/models/queue/item_unresolve_response.rbs +24 -0
  234. data/sig/moderation_api/models/queue_get_stats_params.rbs +26 -0
  235. data/sig/moderation_api/models/queue_get_stats_response.rbs +207 -0
  236. data/sig/moderation_api/models/queue_retrieve_params.rbs +15 -0
  237. data/sig/moderation_api/models/queue_retrieve_response.rbs +207 -0
  238. data/sig/moderation_api/models/wordlist/word_add_params.rbs +26 -0
  239. data/sig/moderation_api/models/wordlist/word_add_response.rbs +28 -0
  240. data/sig/moderation_api/models/wordlist/word_remove_params.rbs +26 -0
  241. data/sig/moderation_api/models/wordlist/word_remove_response.rbs +32 -0
  242. data/sig/moderation_api/models/wordlist_get_embedding_status_params.rbs +15 -0
  243. data/sig/moderation_api/models/wordlist_get_embedding_status_response.rbs +26 -0
  244. data/sig/moderation_api/models/wordlist_list_params.rbs +15 -0
  245. data/sig/moderation_api/models/wordlist_list_response.rbs +45 -0
  246. data/sig/moderation_api/models/wordlist_retrieve_params.rbs +15 -0
  247. data/sig/moderation_api/models/wordlist_retrieve_response.rbs +50 -0
  248. data/sig/moderation_api/models/wordlist_update_params.rbs +56 -0
  249. data/sig/moderation_api/models/wordlist_update_response.rbs +50 -0
  250. data/sig/moderation_api/models.rbs +47 -0
  251. data/sig/moderation_api/request_options.rbs +36 -0
  252. data/sig/moderation_api/resources/account.rbs +11 -0
  253. data/sig/moderation_api/resources/actions/execute.rbs +28 -0
  254. data/sig/moderation_api/resources/actions.rbs +57 -0
  255. data/sig/moderation_api/resources/auth.rbs +15 -0
  256. data/sig/moderation_api/resources/authors.rbs +54 -0
  257. data/sig/moderation_api/resources/content.rbs +20 -0
  258. data/sig/moderation_api/resources/queue/items.rbs +39 -0
  259. data/sig/moderation_api/resources/queue.rbs +20 -0
  260. data/sig/moderation_api/resources/wordlist/words.rbs +21 -0
  261. data/sig/moderation_api/resources/wordlist.rbs +33 -0
  262. data/sig/moderation_api/version.rbs +3 -0
  263. metadata +277 -302
  264. data/Gemfile +0 -9
  265. data/Gemfile.lock +0 -87
  266. data/Rakefile +0 -10
  267. data/docs/AccountApi.md +0 -74
  268. data/docs/AccountGet200Response.md +0 -26
  269. data/docs/AccountGet200ResponseCurrentProject.md +0 -20
  270. data/docs/ActionsCreateRequest.md +0 -36
  271. data/docs/ActionsCreateRequestWebhooksInner.md +0 -24
  272. data/docs/ActionsDelete200Response.md +0 -20
  273. data/docs/ActionsExecute200Response.md +0 -22
  274. data/docs/ActionsExecuteDeprecatedRequest.md +0 -22
  275. data/docs/ActionsExecuteRequest.md +0 -24
  276. data/docs/ActionsGet200Response.md +0 -40
  277. data/docs/ActionsGet200ResponseWebhooksInner.md +0 -26
  278. data/docs/ActionsList200ResponseInner.md +0 -38
  279. data/docs/ActionsList200ResponseInnerPossibleValuesInner.md +0 -18
  280. data/docs/ActionsList400Response.md +0 -22
  281. data/docs/ActionsList400ResponseIssuesInner.md +0 -18
  282. data/docs/ActionsUpdateRequest.md +0 -36
  283. data/docs/ModerateApi.md +0 -357
  284. data/docs/ModerationAudioRequest.md +0 -28
  285. data/docs/ModerationImage200Response.md +0 -28
  286. data/docs/ModerationImage200ResponseLabelsInner.md +0 -20
  287. data/docs/ModerationImageRequest.md +0 -28
  288. data/docs/ModerationObject200Response.md +0 -36
  289. data/docs/ModerationObject200ResponseAllOfEntitiesInner.md +0 -22
  290. data/docs/ModerationObject200ResponseAllOfFieldsInner.md +0 -22
  291. data/docs/ModerationObject200ResponseAllOfLabelsInner.md +0 -22
  292. data/docs/ModerationObjectRequest.md +0 -28
  293. data/docs/ModerationObjectRequestValue.md +0 -20
  294. data/docs/ModerationObjectRequestValueDataValue.md +0 -22
  295. data/docs/ModerationText200Response.md +0 -64
  296. data/docs/ModerationText200ResponseAllOfAddress.md +0 -28
  297. data/docs/ModerationText200ResponseAllOfEmail.md +0 -28
  298. data/docs/ModerationText200ResponseAllOfName.md +0 -28
  299. data/docs/ModerationText200ResponseAllOfNsfw.md +0 -26
  300. data/docs/ModerationText200ResponseAllOfNsfwLabelScores.md +0 -22
  301. data/docs/ModerationText200ResponseAllOfPhone.md +0 -28
  302. data/docs/ModerationText200ResponseAllOfProfanity.md +0 -28
  303. data/docs/ModerationText200ResponseAllOfPropriety.md +0 -26
  304. data/docs/ModerationText200ResponseAllOfProprietyLabelScores.md +0 -22
  305. data/docs/ModerationText200ResponseAllOfQuality.md +0 -26
  306. data/docs/ModerationText200ResponseAllOfQualityLabelScores.md +0 -24
  307. data/docs/ModerationText200ResponseAllOfRequest.md +0 -20
  308. data/docs/ModerationText200ResponseAllOfSensitive.md +0 -28
  309. data/docs/ModerationText200ResponseAllOfSentiment.md +0 -26
  310. data/docs/ModerationText200ResponseAllOfSentimentLabelScores.md +0 -22
  311. data/docs/ModerationText200ResponseAllOfToxicity.md +0 -26
  312. data/docs/ModerationText200ResponseAllOfToxicityLabelScores.md +0 -30
  313. data/docs/ModerationText200ResponseAllOfUrl.md +0 -28
  314. data/docs/ModerationText200ResponseAllOfUsername.md +0 -28
  315. data/docs/ModerationText200ResponseAllOfWordlist.md +0 -28
  316. data/docs/ModerationText200ResponseAllOfWordlistsInner.md +0 -36
  317. data/docs/ModerationTextRequest.md +0 -28
  318. data/docs/ModerationVideo200Response.md +0 -24
  319. data/docs/ModerationVideoRequest.md +0 -28
  320. data/docs/QueueActionsApi.md +0 -503
  321. data/git_push.sh +0 -57
  322. data/lib/moderation_api/api/account_api.rb +0 -79
  323. data/lib/moderation_api/api/moderate_api.rb +0 -362
  324. data/lib/moderation_api/api/queue_actions_api.rb +0 -492
  325. data/lib/moderation_api/api_client.rb +0 -437
  326. data/lib/moderation_api/api_error.rb +0 -58
  327. data/lib/moderation_api/configuration.rb +0 -392
  328. data/lib/moderation_api/models/account_get200_response.rb +0 -278
  329. data/lib/moderation_api/models/account_get200_response_current_project.rb +0 -237
  330. data/lib/moderation_api/models/actions_create_request.rb +0 -374
  331. data/lib/moderation_api/models/actions_create_request_webhooks_inner.rb +0 -260
  332. data/lib/moderation_api/models/actions_delete200_response.rb +0 -239
  333. data/lib/moderation_api/models/actions_execute200_response.rb +0 -258
  334. data/lib/moderation_api/models/actions_execute_deprecated_request.rb +0 -244
  335. data/lib/moderation_api/models/actions_execute_request.rb +0 -261
  336. data/lib/moderation_api/models/actions_get200_response.rb +0 -408
  337. data/lib/moderation_api/models/actions_get200_response_webhooks_inner.rb +0 -278
  338. data/lib/moderation_api/models/actions_list200_response_inner.rb +0 -396
  339. data/lib/moderation_api/models/actions_list200_response_inner_possible_values_inner.rb +0 -222
  340. data/lib/moderation_api/models/actions_list400_response.rb +0 -248
  341. data/lib/moderation_api/models/actions_list400_response_issues_inner.rb +0 -221
  342. data/lib/moderation_api/models/actions_update_request.rb +0 -367
  343. data/lib/moderation_api/models/moderation_audio_request.rb +0 -302
  344. data/lib/moderation_api/models/moderation_image200_response.rb +0 -296
  345. data/lib/moderation_api/models/moderation_image200_response_labels_inner.rb +0 -301
  346. data/lib/moderation_api/models/moderation_image_request.rb +0 -302
  347. data/lib/moderation_api/models/moderation_object200_response.rb +0 -368
  348. data/lib/moderation_api/models/moderation_object200_response_all_of_entities_inner.rb +0 -251
  349. data/lib/moderation_api/models/moderation_object200_response_all_of_fields_inner.rb +0 -258
  350. data/lib/moderation_api/models/moderation_object200_response_all_of_labels_inner.rb +0 -284
  351. data/lib/moderation_api/models/moderation_object_request.rb +0 -301
  352. data/lib/moderation_api/models/moderation_object_request_value.rb +0 -275
  353. data/lib/moderation_api/models/moderation_object_request_value_data_value.rb +0 -285
  354. data/lib/moderation_api/models/moderation_text200_response.rb +0 -488
  355. data/lib/moderation_api/models/moderation_text200_response_all_of_address.rb +0 -303
  356. data/lib/moderation_api/models/moderation_text200_response_all_of_email.rb +0 -303
  357. data/lib/moderation_api/models/moderation_text200_response_all_of_name.rb +0 -303
  358. data/lib/moderation_api/models/moderation_text200_response_all_of_nsfw.rb +0 -255
  359. data/lib/moderation_api/models/moderation_text200_response_all_of_nsfw_label_scores.rb +0 -235
  360. data/lib/moderation_api/models/moderation_text200_response_all_of_phone.rb +0 -303
  361. data/lib/moderation_api/models/moderation_text200_response_all_of_profanity.rb +0 -303
  362. data/lib/moderation_api/models/moderation_text200_response_all_of_propriety.rb +0 -255
  363. data/lib/moderation_api/models/moderation_text200_response_all_of_propriety_label_scores.rb +0 -235
  364. data/lib/moderation_api/models/moderation_text200_response_all_of_quality.rb +0 -255
  365. data/lib/moderation_api/models/moderation_text200_response_all_of_quality_label_scores.rb +0 -245
  366. data/lib/moderation_api/models/moderation_text200_response_all_of_request.rb +0 -240
  367. data/lib/moderation_api/models/moderation_text200_response_all_of_sensitive.rb +0 -303
  368. data/lib/moderation_api/models/moderation_text200_response_all_of_sentiment.rb +0 -255
  369. data/lib/moderation_api/models/moderation_text200_response_all_of_sentiment_label_scores.rb +0 -235
  370. data/lib/moderation_api/models/moderation_text200_response_all_of_toxicity.rb +0 -262
  371. data/lib/moderation_api/models/moderation_text200_response_all_of_toxicity_label_scores.rb +0 -275
  372. data/lib/moderation_api/models/moderation_text200_response_all_of_url.rb +0 -303
  373. data/lib/moderation_api/models/moderation_text200_response_all_of_username.rb +0 -303
  374. data/lib/moderation_api/models/moderation_text200_response_all_of_wordlist.rb +0 -303
  375. data/lib/moderation_api/models/moderation_text200_response_all_of_wordlists_inner.rb +0 -377
  376. data/lib/moderation_api/models/moderation_text_request.rb +0 -330
  377. data/lib/moderation_api/models/moderation_video200_response.rb +0 -265
  378. data/lib/moderation_api/models/moderation_video_request.rb +0 -302
  379. data/lib/moderation_api/webhook.rb +0 -41
  380. data/moderation_api-1.2.0.gem +0 -0
  381. data/moderation_api-1.2.1.gem +0 -0
  382. data/moderation_api.gemspec +0 -45
  383. data/ruby_config.yaml +0 -30
  384. data/spec/api/account_api_spec.rb +0 -46
  385. data/spec/api/moderate_api_spec.rb +0 -95
  386. data/spec/api/queue_actions_api_spec.rb +0 -121
  387. data/spec/models/account_get200_response_current_project_spec.rb +0 -42
  388. data/spec/models/account_get200_response_spec.rb +0 -60
  389. data/spec/models/actions_create_request_spec.rb +0 -98
  390. data/spec/models/actions_create_request_webhooks_inner_spec.rb +0 -54
  391. data/spec/models/actions_delete200_response_spec.rb +0 -42
  392. data/spec/models/actions_execute200_response_spec.rb +0 -48
  393. data/spec/models/actions_execute_deprecated_request_spec.rb +0 -48
  394. data/spec/models/actions_execute_request_spec.rb +0 -54
  395. data/spec/models/actions_get200_response_spec.rb +0 -110
  396. data/spec/models/actions_get200_response_webhooks_inner_spec.rb +0 -60
  397. data/spec/models/actions_list200_response_inner_possible_values_inner_spec.rb +0 -36
  398. data/spec/models/actions_list200_response_inner_spec.rb +0 -104
  399. data/spec/models/actions_list400_response_issues_inner_spec.rb +0 -36
  400. data/spec/models/actions_list400_response_spec.rb +0 -48
  401. data/spec/models/actions_update_request_spec.rb +0 -98
  402. data/spec/models/moderation_audio_request_spec.rb +0 -66
  403. data/spec/models/moderation_image200_response_labels_inner_spec.rb +0 -46
  404. data/spec/models/moderation_image200_response_spec.rb +0 -66
  405. data/spec/models/moderation_image_request_spec.rb +0 -66
  406. data/spec/models/moderation_object200_response_all_of_entities_inner_spec.rb +0 -48
  407. data/spec/models/moderation_object200_response_all_of_fields_inner_spec.rb +0 -48
  408. data/spec/models/moderation_object200_response_all_of_labels_inner_spec.rb +0 -48
  409. data/spec/models/moderation_object200_response_spec.rb +0 -90
  410. data/spec/models/moderation_object_request_spec.rb +0 -66
  411. data/spec/models/moderation_object_request_value_data_value_spec.rb +0 -52
  412. data/spec/models/moderation_object_request_value_spec.rb +0 -46
  413. data/spec/models/moderation_text200_response_all_of_address_spec.rb +0 -70
  414. data/spec/models/moderation_text200_response_all_of_email_spec.rb +0 -70
  415. data/spec/models/moderation_text200_response_all_of_name_spec.rb +0 -70
  416. data/spec/models/moderation_text200_response_all_of_nsfw_label_scores_spec.rb +0 -48
  417. data/spec/models/moderation_text200_response_all_of_nsfw_spec.rb +0 -60
  418. data/spec/models/moderation_text200_response_all_of_phone_spec.rb +0 -70
  419. data/spec/models/moderation_text200_response_all_of_profanity_spec.rb +0 -70
  420. data/spec/models/moderation_text200_response_all_of_propriety_label_scores_spec.rb +0 -48
  421. data/spec/models/moderation_text200_response_all_of_propriety_spec.rb +0 -60
  422. data/spec/models/moderation_text200_response_all_of_quality_label_scores_spec.rb +0 -54
  423. data/spec/models/moderation_text200_response_all_of_quality_spec.rb +0 -60
  424. data/spec/models/moderation_text200_response_all_of_request_spec.rb +0 -42
  425. data/spec/models/moderation_text200_response_all_of_sensitive_spec.rb +0 -70
  426. data/spec/models/moderation_text200_response_all_of_sentiment_label_scores_spec.rb +0 -48
  427. data/spec/models/moderation_text200_response_all_of_sentiment_spec.rb +0 -60
  428. data/spec/models/moderation_text200_response_all_of_toxicity_label_scores_spec.rb +0 -72
  429. data/spec/models/moderation_text200_response_all_of_toxicity_spec.rb +0 -60
  430. data/spec/models/moderation_text200_response_all_of_url_spec.rb +0 -70
  431. data/spec/models/moderation_text200_response_all_of_username_spec.rb +0 -70
  432. data/spec/models/moderation_text200_response_all_of_wordlist_spec.rb +0 -70
  433. data/spec/models/moderation_text200_response_all_of_wordlists_inner_spec.rb +0 -94
  434. data/spec/models/moderation_text200_response_spec.rb +0 -174
  435. data/spec/models/moderation_text_request_spec.rb +0 -66
  436. data/spec/models/moderation_video200_response_spec.rb +0 -54
  437. data/spec/models/moderation_video_request_spec.rb +0 -66
  438. data/spec/spec_helper.rb +0 -111
@@ -0,0 +1,534 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ModerationAPI
4
+ module Internal
5
+ module Type
6
+ # @abstract
7
+ class BaseModel
8
+ extend ModerationAPI::Internal::Type::Converter
9
+ extend ModerationAPI::Internal::Util::SorbetRuntimeSupport
10
+
11
+ class << self
12
+ # @api private
13
+ #
14
+ # Assumes superclass fields are totally defined before fields are accessed /
15
+ # defined on subclasses.
16
+ #
17
+ # @param child [Class<ModerationAPI::Internal::Type::BaseModel>]
18
+ def inherited(child)
19
+ super
20
+ child.known_fields.replace(known_fields.dup)
21
+ end
22
+
23
+ # @api private
24
+ #
25
+ # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
26
+ def known_fields = @known_fields ||= {}
27
+
28
+ # @api private
29
+ #
30
+ # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
31
+ def fields
32
+ known_fields.transform_values do |field|
33
+ {**field.except(:type_fn), type: field.fetch(:type_fn).call}
34
+ end
35
+ end
36
+
37
+ # @api private
38
+ #
39
+ # @param name_sym [Symbol]
40
+ #
41
+ # @param required [Boolean]
42
+ #
43
+ # @param type_info [Hash{Symbol=>Object}, Proc, ModerationAPI::Internal::Type::Converter, Class]
44
+ #
45
+ # @param spec [Hash{Symbol=>Object}] .
46
+ #
47
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
48
+ #
49
+ # @option spec [Proc] :enum
50
+ #
51
+ # @option spec [Proc] :union
52
+ #
53
+ # @option spec [Boolean] :"nil?"
54
+ private def add_field(name_sym, required:, type_info:, spec:)
55
+ meta = ModerationAPI::Internal::Type::Converter.meta_info(type_info, spec)
56
+ type_fn, info =
57
+ case type_info
58
+ in Proc | ModerationAPI::Internal::Type::Converter | Class
59
+ [ModerationAPI::Internal::Type::Converter.type_info({**spec, union: type_info}), spec]
60
+ in Hash
61
+ [ModerationAPI::Internal::Type::Converter.type_info(type_info), type_info]
62
+ end
63
+
64
+ setter = :"#{name_sym}="
65
+ api_name = info.fetch(:api_name, name_sym)
66
+ nilable = info.fetch(:nil?, false)
67
+ const = required && !nilable ? info.fetch(:const, ModerationAPI::Internal::OMIT) : ModerationAPI::Internal::OMIT
68
+
69
+ [name_sym, setter].each { undef_method(_1) } if known_fields.key?(name_sym)
70
+
71
+ known_fields[name_sym] =
72
+ {
73
+ mode: @mode,
74
+ api_name: api_name,
75
+ required: required,
76
+ nilable: nilable,
77
+ const: const,
78
+ type_fn: type_fn,
79
+ meta: meta
80
+ }
81
+
82
+ define_method(setter) do |value|
83
+ target = type_fn.call
84
+ state = ModerationAPI::Internal::Type::Converter.new_coerce_state(translate_names: false)
85
+ coerced = ModerationAPI::Internal::Type::Converter.coerce(target, value, state: state)
86
+ status = @coerced.store(name_sym, state.fetch(:error) || true)
87
+ stored =
88
+ case [target, status]
89
+ in [ModerationAPI::Internal::Type::Converter | Symbol, true]
90
+ coerced
91
+ else
92
+ value
93
+ end
94
+ @data.store(name_sym, stored)
95
+ end
96
+
97
+ # rubocop:disable Style/CaseEquality
98
+ # rubocop:disable Metrics/BlockLength
99
+ define_method(name_sym) do
100
+ target = type_fn.call
101
+
102
+ case @coerced[name_sym]
103
+ in true | false if ModerationAPI::Internal::Type::Converter === target
104
+ @data.fetch(name_sym)
105
+ in ::StandardError => e
106
+ raise ModerationAPI::Errors::ConversionError.new(
107
+ on: self.class,
108
+ method: __method__,
109
+ target: target,
110
+ value: @data.fetch(name_sym),
111
+ cause: e
112
+ )
113
+ else
114
+ Kernel.then do
115
+ value = @data.fetch(name_sym) { const == ModerationAPI::Internal::OMIT ? nil : const }
116
+ state = ModerationAPI::Internal::Type::Converter.new_coerce_state(translate_names: false)
117
+ if (nilable || !required) && value.nil?
118
+ nil
119
+ else
120
+ ModerationAPI::Internal::Type::Converter.coerce(
121
+ target, value, state: state
122
+ )
123
+ end
124
+ rescue StandardError => e
125
+ raise ModerationAPI::Errors::ConversionError.new(
126
+ on: self.class,
127
+ method: __method__,
128
+ target: target,
129
+ value: value,
130
+ cause: e
131
+ )
132
+ end
133
+ end
134
+ end
135
+ # rubocop:enable Metrics/BlockLength
136
+ # rubocop:enable Style/CaseEquality
137
+ end
138
+
139
+ # @api private
140
+ #
141
+ # @param name_sym [Symbol]
142
+ #
143
+ # @param type_info [Hash{Symbol=>Object}, Proc, ModerationAPI::Internal::Type::Converter, Class]
144
+ #
145
+ # @param spec [Hash{Symbol=>Object}] .
146
+ #
147
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
148
+ #
149
+ # @option spec [Proc] :enum
150
+ #
151
+ # @option spec [Proc] :union
152
+ #
153
+ # @option spec [Boolean] :"nil?"
154
+ def required(name_sym, type_info, spec = {})
155
+ add_field(name_sym, required: true, type_info: type_info, spec: spec)
156
+ end
157
+
158
+ # @api private
159
+ #
160
+ # @param name_sym [Symbol]
161
+ #
162
+ # @param type_info [Hash{Symbol=>Object}, Proc, ModerationAPI::Internal::Type::Converter, Class]
163
+ #
164
+ # @param spec [Hash{Symbol=>Object}] .
165
+ #
166
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
167
+ #
168
+ # @option spec [Proc] :enum
169
+ #
170
+ # @option spec [Proc] :union
171
+ #
172
+ # @option spec [Boolean] :"nil?"
173
+ def optional(name_sym, type_info, spec = {})
174
+ add_field(name_sym, required: false, type_info: type_info, spec: spec)
175
+ end
176
+
177
+ # @api private
178
+ #
179
+ # `request_only` attributes not excluded from `.#coerce` when receiving responses
180
+ # even if well behaved servers should not send them
181
+ #
182
+ # @param blk [Proc]
183
+ private def request_only(&blk)
184
+ @mode = :dump
185
+ blk.call
186
+ ensure
187
+ @mode = nil
188
+ end
189
+
190
+ # @api private
191
+ #
192
+ # `response_only` attributes are omitted from `.#dump` when making requests
193
+ #
194
+ # @param blk [Proc]
195
+ private def response_only(&blk)
196
+ @mode = :coerce
197
+ blk.call
198
+ ensure
199
+ @mode = nil
200
+ end
201
+
202
+ # @api public
203
+ #
204
+ # @param other [Object]
205
+ #
206
+ # @return [Boolean]
207
+ def ==(other)
208
+ other.is_a?(Class) && other <= ModerationAPI::Internal::Type::BaseModel && other.fields == fields
209
+ end
210
+
211
+ # @api public
212
+ #
213
+ # @return [Integer]
214
+ def hash = fields.hash
215
+ end
216
+
217
+ # @api public
218
+ #
219
+ # @param other [Object]
220
+ #
221
+ # @return [Boolean]
222
+ def ==(other) = self.class == other.class && @data == other.to_h
223
+
224
+ # @api public
225
+ #
226
+ # @return [Integer]
227
+ def hash = [self.class, @data].hash
228
+
229
+ class << self
230
+ # @api private
231
+ #
232
+ # @param value [ModerationAPI::Internal::Type::BaseModel, Hash{Object=>Object}, Object]
233
+ #
234
+ # @param state [Hash{Symbol=>Object}] .
235
+ #
236
+ # @option state [Boolean] :translate_names
237
+ #
238
+ # @option state [Boolean] :strictness
239
+ #
240
+ # @option state [Hash{Symbol=>Object}] :exactness
241
+ #
242
+ # @option state [Class<StandardError>] :error
243
+ #
244
+ # @option state [Integer] :branched
245
+ #
246
+ # @return [self, Object]
247
+ def coerce(value, state:)
248
+ exactness = state.fetch(:exactness)
249
+
250
+ if value.is_a?(self)
251
+ exactness[:yes] += 1
252
+ return value
253
+ end
254
+
255
+ unless (val = ModerationAPI::Internal::Util.coerce_hash(value)).is_a?(Hash)
256
+ exactness[:no] += 1
257
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{Hash}")
258
+ return value
259
+ end
260
+ exactness[:yes] += 1
261
+
262
+ keys = val.keys.to_set
263
+ instance = new
264
+ data = instance.to_h
265
+ status = instance.instance_variable_get(:@coerced)
266
+
267
+ # rubocop:disable Metrics/BlockLength
268
+ fields.each do |name, field|
269
+ mode, required, target = field.fetch_values(:mode, :required, :type)
270
+ api_name, nilable, const = field.fetch_values(:api_name, :nilable, :const)
271
+ src_name = state.fetch(:translate_names) ? api_name : name
272
+
273
+ unless val.key?(src_name)
274
+ if required && mode != :dump && const == ModerationAPI::Internal::OMIT
275
+ exactness[nilable ? :maybe : :no] += 1
276
+ else
277
+ exactness[:yes] += 1
278
+ end
279
+ next
280
+ end
281
+
282
+ item = val.fetch(src_name)
283
+ keys.delete(src_name)
284
+
285
+ state[:error] = nil
286
+ converted =
287
+ if item.nil? && (nilable || !required)
288
+ exactness[nilable ? :yes : :maybe] += 1
289
+ nil
290
+ else
291
+ coerced = ModerationAPI::Internal::Type::Converter.coerce(target, item, state: state)
292
+ case target
293
+ in ModerationAPI::Internal::Type::Converter | Symbol
294
+ coerced
295
+ else
296
+ item
297
+ end
298
+ end
299
+
300
+ status.store(name, state.fetch(:error) || true)
301
+ data.store(name, converted)
302
+ end
303
+ # rubocop:enable Metrics/BlockLength
304
+
305
+ keys.each { data.store(_1, val.fetch(_1)) }
306
+ instance
307
+ end
308
+
309
+ # @api private
310
+ #
311
+ # @param value [self, Object]
312
+ #
313
+ # @param state [Hash{Symbol=>Object}] .
314
+ #
315
+ # @option state [Boolean] :can_retry
316
+ #
317
+ # @return [Hash{Object=>Object}, Object]
318
+ def dump(value, state:)
319
+ unless (coerced = ModerationAPI::Internal::Util.coerce_hash(value)).is_a?(Hash)
320
+ return super
321
+ end
322
+
323
+ acc = {}
324
+
325
+ coerced.each do |key, val|
326
+ name = key.is_a?(String) ? key.to_sym : key
327
+ case (field = known_fields[name])
328
+ in nil
329
+ acc.store(name, super(val, state: state))
330
+ else
331
+ api_name, mode, type_fn = field.fetch_values(:api_name, :mode, :type_fn)
332
+ case mode
333
+ in :coerce
334
+ next
335
+ else
336
+ target = type_fn.call
337
+ acc.store(
338
+ api_name,
339
+ ModerationAPI::Internal::Type::Converter.dump(target, val, state: state)
340
+ )
341
+ end
342
+ end
343
+ end
344
+
345
+ known_fields.each_value do |field|
346
+ api_name, mode, const = field.fetch_values(:api_name, :mode, :const)
347
+ next if mode == :coerce || acc.key?(api_name) || const == ModerationAPI::Internal::OMIT
348
+ acc.store(api_name, const)
349
+ end
350
+
351
+ acc
352
+ end
353
+
354
+ # @api private
355
+ #
356
+ # @return [Object]
357
+ def to_sorbet_type
358
+ self
359
+ end
360
+ end
361
+
362
+ class << self
363
+ # @api private
364
+ #
365
+ # @param model [ModerationAPI::Internal::Type::BaseModel]
366
+ # @param convert [Boolean]
367
+ #
368
+ # @return [Hash{Symbol=>Object}]
369
+ def recursively_to_h(model, convert:)
370
+ rec = ->(x) do
371
+ case x
372
+ in ModerationAPI::Internal::Type::BaseModel
373
+ if convert
374
+ fields = x.class.known_fields
375
+ x.to_h.to_h do |key, val|
376
+ [key, rec.call(fields.key?(key) ? x.public_send(key) : val)]
377
+ rescue ModerationAPI::Errors::ConversionError
378
+ [key, rec.call(val)]
379
+ end
380
+ else
381
+ rec.call(x.to_h)
382
+ end
383
+ in Hash
384
+ x.transform_values(&rec)
385
+ in Array
386
+ x.map(&rec)
387
+ else
388
+ x
389
+ end
390
+ end
391
+ rec.call(model)
392
+ end
393
+ end
394
+
395
+ # @api public
396
+ #
397
+ # Returns the raw value associated with the given key, if found. Otherwise, nil is
398
+ # returned.
399
+ #
400
+ # It is valid to lookup keys that are not in the API spec, for example to access
401
+ # undocumented features. This method does not parse response data into
402
+ # higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
403
+ #
404
+ # @param key [Symbol]
405
+ #
406
+ # @return [Object, nil]
407
+ def [](key)
408
+ unless key.instance_of?(Symbol)
409
+ raise ArgumentError.new("Expected symbol key for lookup, got #{key.inspect}")
410
+ end
411
+
412
+ @data[key]
413
+ end
414
+
415
+ # @api public
416
+ #
417
+ # Returns a Hash of the data underlying this object. O(1)
418
+ #
419
+ # Keys are Symbols and values are the raw values from the response. The return
420
+ # value indicates which values were ever set on the object. i.e. there will be a
421
+ # key in this hash if they ever were, even if the set value was nil.
422
+ #
423
+ # This method is not recursive. The returned value is shared by the object, so it
424
+ # should not be mutated.
425
+ #
426
+ # @return [Hash{Symbol=>Object}]
427
+ def to_h = @data
428
+
429
+ alias_method :to_hash, :to_h
430
+
431
+ # @api public
432
+ #
433
+ # In addition to the behaviour of `#to_h`, this method will recursively call
434
+ # `#to_h` on nested models.
435
+ #
436
+ # @return [Hash{Symbol=>Object}]
437
+ def deep_to_h = self.class.recursively_to_h(@data, convert: false)
438
+
439
+ # @param keys [Array<Symbol>, nil]
440
+ #
441
+ # @return [Hash{Symbol=>Object}]
442
+ #
443
+ # @example
444
+ # # `author_create_response` is a `ModerationAPI::Models::AuthorCreateResponse`
445
+ # author_create_response => {
446
+ # id: id,
447
+ # block: block,
448
+ # first_seen: first_seen
449
+ # }
450
+ def deconstruct_keys(keys)
451
+ (keys || self.class.known_fields.keys)
452
+ .filter_map do |k|
453
+ unless self.class.known_fields.key?(k)
454
+ next
455
+ end
456
+
457
+ [k, public_send(k)]
458
+ end
459
+ .to_h
460
+ end
461
+
462
+ # @api public
463
+ #
464
+ # @param a [Object]
465
+ #
466
+ # @return [String]
467
+ def to_json(*a) = ModerationAPI::Internal::Type::Converter.dump(self.class, self).to_json(*a)
468
+
469
+ # @api public
470
+ #
471
+ # @param a [Object]
472
+ #
473
+ # @return [String]
474
+ def to_yaml(*a) = ModerationAPI::Internal::Type::Converter.dump(self.class, self).to_yaml(*a)
475
+
476
+ # Create a new instance of a model.
477
+ #
478
+ # @param data [Hash{Symbol=>Object}, self]
479
+ def initialize(data = {})
480
+ @data = {}
481
+ @coerced = {}
482
+ ModerationAPI::Internal::Util.coerce_hash!(data).each do
483
+ if self.class.known_fields.key?(_1)
484
+ public_send(:"#{_1}=", _2)
485
+ else
486
+ @data.store(_1, _2)
487
+ @coerced.store(_1, false)
488
+ end
489
+ end
490
+ end
491
+
492
+ class << self
493
+ # @api private
494
+ #
495
+ # @param depth [Integer]
496
+ #
497
+ # @return [String]
498
+ def inspect(depth: 0)
499
+ return super() if depth.positive?
500
+
501
+ depth = depth.succ
502
+ deferred = fields.transform_values do |field|
503
+ type, required, nilable = field.fetch_values(:type, :required, :nilable)
504
+ inspected = [
505
+ ModerationAPI::Internal::Type::Converter.inspect(type, depth: depth),
506
+ !required || nilable ? "nil" : nil
507
+ ].compact.join(" | ")
508
+ -> { inspected }.tap { _1.define_singleton_method(:inspect) { call } }
509
+ end
510
+
511
+ "#{name}[#{deferred.inspect}]"
512
+ end
513
+ end
514
+
515
+ # @api public
516
+ #
517
+ # @return [String]
518
+ def to_s = deep_to_h.to_s
519
+
520
+ # @api private
521
+ #
522
+ # @return [String]
523
+ def inspect
524
+ converted = self.class.recursively_to_h(self, convert: true)
525
+ "#<#{self.class}:0x#{object_id.to_s(16)} #{converted}>"
526
+ end
527
+
528
+ define_sorbet_constant!(:KnownField) do
529
+ T.type_alias { {mode: T.nilable(Symbol), required: T::Boolean, nilable: T::Boolean} }
530
+ end
531
+ end
532
+ end
533
+ end
534
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ModerationAPI
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # @generic Elem
9
+ #
10
+ # This module provides a base implementation for paginated responses in the SDK.
11
+ module BasePage
12
+ # rubocop:disable Lint/UnusedMethodArgument
13
+
14
+ # @api public
15
+ #
16
+ # @return [Boolean]
17
+ def next_page? = (raise NotImplementedError)
18
+
19
+ # @api public
20
+ #
21
+ # @raise [ModerationAPI::Errors::APIError]
22
+ # @return [self]
23
+ def next_page = (raise NotImplementedError)
24
+
25
+ # @api public
26
+ #
27
+ # @param blk [Proc]
28
+ #
29
+ # @yieldparam [generic<Elem>]
30
+ # @return [void]
31
+ def auto_paging_each(&blk) = (raise NotImplementedError)
32
+
33
+ # @return [Enumerable<generic<Elem>>]
34
+ def to_enum = super(:auto_paging_each)
35
+
36
+ alias_method :enum_for, :to_enum
37
+
38
+ # @api private
39
+ #
40
+ # @param client [ModerationAPI::Internal::Transport::BaseClient]
41
+ # @param req [Hash{Symbol=>Object}]
42
+ # @param headers [Hash{String=>String}]
43
+ # @param page_data [Object]
44
+ def initialize(client:, req:, headers:, page_data:)
45
+ @client = client
46
+ @req = req
47
+ @model = req.fetch(:model)
48
+ super()
49
+ end
50
+
51
+ # rubocop:enable Lint/UnusedMethodArgument
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ModerationAPI
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # @abstract
9
+ #
10
+ # Ruby has no Boolean class; this is something for models to refer to.
11
+ class Boolean
12
+ extend ModerationAPI::Internal::Type::Converter
13
+ extend ModerationAPI::Internal::Util::SorbetRuntimeSupport
14
+
15
+ private_class_method :new
16
+
17
+ # @api public
18
+ #
19
+ # @param other [Object]
20
+ #
21
+ # @return [Boolean]
22
+ def self.===(other) = other == true || other == false
23
+
24
+ # @api public
25
+ #
26
+ # @param other [Object]
27
+ #
28
+ # @return [Boolean]
29
+ def self.==(other) = other.is_a?(Class) && other <= ModerationAPI::Internal::Type::Boolean
30
+
31
+ class << self
32
+ # @api private
33
+ #
34
+ # Coerce value to Boolean if possible, otherwise return the original value.
35
+ #
36
+ # @param value [Boolean, Object]
37
+ #
38
+ # @param state [Hash{Symbol=>Object}] .
39
+ #
40
+ # @option state [Boolean] :translate_names
41
+ #
42
+ # @option state [Boolean] :strictness
43
+ #
44
+ # @option state [Hash{Symbol=>Object}] :exactness
45
+ #
46
+ # @option state [Class<StandardError>] :error
47
+ #
48
+ # @option state [Integer] :branched
49
+ #
50
+ # @return [Boolean, Object]
51
+ def coerce(value, state:)
52
+ state.fetch(:exactness)[value == true || value == false ? :yes : :no] += 1
53
+ value
54
+ end
55
+
56
+ # @!method dump(value, state:)
57
+ # @api private
58
+ #
59
+ # @param value [Boolean, Object]
60
+ #
61
+ # @param state [Hash{Symbol=>Object}] .
62
+ #
63
+ # @option state [Boolean] :can_retry
64
+ #
65
+ # @return [Boolean, Object]
66
+
67
+ # @api private
68
+ #
69
+ # @return [Object]
70
+ def to_sorbet_type
71
+ T::Boolean
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end