x_api_scraper 0.1.0

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 (459) hide show
  1. checksums.yaml +7 -0
  2. data/lib/crystalline/enum.rbi +17 -0
  3. data/lib/crystalline/metadata_fields.rb +265 -0
  4. data/lib/crystalline/module.rb +188 -0
  5. data/lib/crystalline/types.rb +170 -0
  6. data/lib/crystalline/utils.rb +69 -0
  7. data/lib/crystalline.rb +13 -0
  8. data/lib/x_api_scraper.rb +41 -0
  9. data/lib/xapi_scraper/account.rb +194 -0
  10. data/lib/xapi_scraper/actions.rb +2166 -0
  11. data/lib/xapi_scraper/analysis.rb +230 -0
  12. data/lib/xapi_scraper/articles.rb +410 -0
  13. data/lib/xapi_scraper/client.rb +133 -0
  14. data/lib/xapi_scraper/communities.rb +1352 -0
  15. data/lib/xapi_scraper/dm.rb +990 -0
  16. data/lib/xapi_scraper/engagement.rb +792 -0
  17. data/lib/xapi_scraper/followers.rb +420 -0
  18. data/lib/xapi_scraper/following.rb +230 -0
  19. data/lib/xapi_scraper/lists.rb +1156 -0
  20. data/lib/xapi_scraper/models/callbacks.rb +12 -0
  21. data/lib/xapi_scraper/models/components/accountverifymodel.rb +82 -0
  22. data/lib/xapi_scraper/models/components/accountverifymodel.rbi +38 -0
  23. data/lib/xapi_scraper/models/components/accountverifyresponse.rb +47 -0
  24. data/lib/xapi_scraper/models/components/accountverifyresponse.rbi +26 -0
  25. data/lib/xapi_scraper/models/components/advancedsearchcursorquery.rb +51 -0
  26. data/lib/xapi_scraper/models/components/advancedsearchcursorquery.rbi +26 -0
  27. data/lib/xapi_scraper/models/components/advancedsearchcursorresponse.rb +76 -0
  28. data/lib/xapi_scraper/models/components/advancedsearchcursorresponse.rbi +38 -0
  29. data/lib/xapi_scraper/models/components/articleblock.rb +50 -0
  30. data/lib/xapi_scraper/models/components/articleblock.rbi +26 -0
  31. data/lib/xapi_scraper/models/components/articleblockrange.rb +47 -0
  32. data/lib/xapi_scraper/models/components/articleblockrange.rbi +26 -0
  33. data/lib/xapi_scraper/models/components/blockuserresponse.rb +54 -0
  34. data/lib/xapi_scraper/models/components/blockuserresponse.rbi +26 -0
  35. data/lib/xapi_scraper/models/components/bookmarkbody.rb +43 -0
  36. data/lib/xapi_scraper/models/components/bookmarkbody.rbi +20 -0
  37. data/lib/xapi_scraper/models/components/cashtagsquery.rb +192 -0
  38. data/lib/xapi_scraper/models/components/cashtagsquery.rbi +98 -0
  39. data/lib/xapi_scraper/models/components/cashtagsquery_language.rb +76 -0
  40. data/lib/xapi_scraper/models/components/cashtagsquery_language.rbi +9 -0
  41. data/lib/xapi_scraper/models/components/cashtagsquery_sortby.rb +18 -0
  42. data/lib/xapi_scraper/models/components/cashtagsquery_sortby.rbi +9 -0
  43. data/lib/xapi_scraper/models/components/communitymodel.rb +164 -0
  44. data/lib/xapi_scraper/models/components/communitymodel.rbi +92 -0
  45. data/lib/xapi_scraper/models/components/communitytweetsresponse.rb +47 -0
  46. data/lib/xapi_scraper/models/components/communitytweetsresponse.rbi +26 -0
  47. data/lib/xapi_scraper/models/components/context.rb +25 -0
  48. data/lib/xapi_scraper/models/components/context.rbi +9 -0
  49. data/lib/xapi_scraper/models/components/conversationv3model.rb +57 -0
  50. data/lib/xapi_scraper/models/components/conversationv3model.rbi +32 -0
  51. data/lib/xapi_scraper/models/components/createthreaddata.rb +35 -0
  52. data/lib/xapi_scraper/models/components/createthreaddata.rbi +14 -0
  53. data/lib/xapi_scraper/models/components/createthreadquery.rb +51 -0
  54. data/lib/xapi_scraper/models/components/createthreadquery.rbi +26 -0
  55. data/lib/xapi_scraper/models/components/createthreadresponse.rb +47 -0
  56. data/lib/xapi_scraper/models/components/createthreadresponse.rbi +26 -0
  57. data/lib/xapi_scraper/models/components/createthreadtweetitem.rb +31 -0
  58. data/lib/xapi_scraper/models/components/createthreadtweetitem.rbi +14 -0
  59. data/lib/xapi_scraper/models/components/deletebookmarkquery.rb +35 -0
  60. data/lib/xapi_scraper/models/components/deletebookmarkquery.rbi +14 -0
  61. data/lib/xapi_scraper/models/components/deleteretweetquery.rb +35 -0
  62. data/lib/xapi_scraper/models/components/deleteretweetquery.rbi +14 -0
  63. data/lib/xapi_scraper/models/components/deletetweetquery.rb +51 -0
  64. data/lib/xapi_scraper/models/components/deletetweetquery.rbi +26 -0
  65. data/lib/xapi_scraper/models/components/deletetweetresponse.rb +51 -0
  66. data/lib/xapi_scraper/models/components/deletetweetresponse.rbi +26 -0
  67. data/lib/xapi_scraper/models/components/dmhistoryv3data.rb +54 -0
  68. data/lib/xapi_scraper/models/components/dmhistoryv3data.rbi +26 -0
  69. data/lib/xapi_scraper/models/components/dmstatusmodelv2.rb +122 -0
  70. data/lib/xapi_scraper/models/components/dmstatusmodelv2.rbi +62 -0
  71. data/lib/xapi_scraper/models/components/dmstatusresponsev2.rb +47 -0
  72. data/lib/xapi_scraper/models/components/dmstatusresponsev2.rbi +26 -0
  73. data/lib/xapi_scraper/models/components/followersfollowingv3query.rb +51 -0
  74. data/lib/xapi_scraper/models/components/followersfollowingv3query.rbi +26 -0
  75. data/lib/xapi_scraper/models/components/followuserquery.rb +43 -0
  76. data/lib/xapi_scraper/models/components/followuserquery.rbi +20 -0
  77. data/lib/xapi_scraper/models/components/getalltweetsrepliescursorquery.rb +43 -0
  78. data/lib/xapi_scraper/models/components/getalltweetsrepliescursorquery.rbi +20 -0
  79. data/lib/xapi_scraper/models/components/getalltweetsrepliescursorresponse.rb +76 -0
  80. data/lib/xapi_scraper/models/components/getalltweetsrepliescursorresponse.rbi +38 -0
  81. data/lib/xapi_scraper/models/components/getcommunitymemberscursorquery.rb +43 -0
  82. data/lib/xapi_scraper/models/components/getcommunitymemberscursorquery.rbi +20 -0
  83. data/lib/xapi_scraper/models/components/getcommunitymemberscursorresponse.rb +72 -0
  84. data/lib/xapi_scraper/models/components/getcommunitymemberscursorresponse.rbi +38 -0
  85. data/lib/xapi_scraper/models/components/getcommunityresponse.rb +47 -0
  86. data/lib/xapi_scraper/models/components/getcommunityresponse.rbi +26 -0
  87. data/lib/xapi_scraper/models/components/getcommunitytweetscursorquery.rb +60 -0
  88. data/lib/xapi_scraper/models/components/getcommunitytweetscursorquery.rbi +26 -0
  89. data/lib/xapi_scraper/models/components/getcommunitytweetscursorresponse.rb +72 -0
  90. data/lib/xapi_scraper/models/components/getcommunitytweetscursorresponse.rbi +38 -0
  91. data/lib/xapi_scraper/models/components/getconversationsv3query.rb +62 -0
  92. data/lib/xapi_scraper/models/components/getconversationsv3query.rbi +32 -0
  93. data/lib/xapi_scraper/models/components/getconversationsv3response.rb +47 -0
  94. data/lib/xapi_scraper/models/components/getconversationsv3response.rbi +26 -0
  95. data/lib/xapi_scraper/models/components/getdmhistoryv3query.rb +94 -0
  96. data/lib/xapi_scraper/models/components/getdmhistoryv3query.rbi +50 -0
  97. data/lib/xapi_scraper/models/components/getdmhistoryv3response.rb +47 -0
  98. data/lib/xapi_scraper/models/components/getdmhistoryv3response.rbi +26 -0
  99. data/lib/xapi_scraper/models/components/getdmmediav3data.rb +77 -0
  100. data/lib/xapi_scraper/models/components/getdmmediav3data.rbi +44 -0
  101. data/lib/xapi_scraper/models/components/getdmmediav3query.rb +112 -0
  102. data/lib/xapi_scraper/models/components/getdmmediav3query.rbi +56 -0
  103. data/lib/xapi_scraper/models/components/getdmmediav3response.rb +47 -0
  104. data/lib/xapi_scraper/models/components/getdmmediav3response.rbi +26 -0
  105. data/lib/xapi_scraper/models/components/getlistmemberscursorquery.rb +43 -0
  106. data/lib/xapi_scraper/models/components/getlistmemberscursorquery.rbi +20 -0
  107. data/lib/xapi_scraper/models/components/getlistmemberscursorresponse.rb +72 -0
  108. data/lib/xapi_scraper/models/components/getlistmemberscursorresponse.rbi +38 -0
  109. data/lib/xapi_scraper/models/components/getlisttweetscursorquery.rb +43 -0
  110. data/lib/xapi_scraper/models/components/getlisttweetscursorquery.rbi +20 -0
  111. data/lib/xapi_scraper/models/components/getlisttweetscursorresponse.rb +72 -0
  112. data/lib/xapi_scraper/models/components/getlisttweetscursorresponse.rbi +38 -0
  113. data/lib/xapi_scraper/models/components/getquotescursorquery.rb +63 -0
  114. data/lib/xapi_scraper/models/components/getquotescursorquery.rbi +26 -0
  115. data/lib/xapi_scraper/models/components/getquotescursorquery_sort_by.rb +18 -0
  116. data/lib/xapi_scraper/models/components/getquotescursorquery_sort_by.rbi +9 -0
  117. data/lib/xapi_scraper/models/components/getquotescursorresponse.rb +72 -0
  118. data/lib/xapi_scraper/models/components/getquotescursorresponse.rbi +38 -0
  119. data/lib/xapi_scraper/models/components/getquotesquery.rb +59 -0
  120. data/lib/xapi_scraper/models/components/getquotesquery.rbi +26 -0
  121. data/lib/xapi_scraper/models/components/getquotesquery_sort_by.rb +18 -0
  122. data/lib/xapi_scraper/models/components/getquotesquery_sort_by.rbi +9 -0
  123. data/lib/xapi_scraper/models/components/getquotesresponse.rb +47 -0
  124. data/lib/xapi_scraper/models/components/getquotesresponse.rbi +26 -0
  125. data/lib/xapi_scraper/models/components/getrepliespagequery.rb +51 -0
  126. data/lib/xapi_scraper/models/components/getrepliespagequery.rbi +20 -0
  127. data/lib/xapi_scraper/models/components/getrepliespagequery_sort_by.rb +19 -0
  128. data/lib/xapi_scraper/models/components/getrepliespagequery_sort_by.rbi +9 -0
  129. data/lib/xapi_scraper/models/components/getrepliespageresponse.rb +85 -0
  130. data/lib/xapi_scraper/models/components/getrepliespageresponse.rbi +44 -0
  131. data/lib/xapi_scraper/models/components/getretweeterscursorquery.rb +43 -0
  132. data/lib/xapi_scraper/models/components/getretweeterscursorquery.rbi +20 -0
  133. data/lib/xapi_scraper/models/components/getretweeterscursorresponse.rb +72 -0
  134. data/lib/xapi_scraper/models/components/getretweeterscursorresponse.rbi +38 -0
  135. data/lib/xapi_scraper/models/components/gettweetsbyidresponse.rb +58 -0
  136. data/lib/xapi_scraper/models/components/gettweetsbyidresponse.rbi +26 -0
  137. data/lib/xapi_scraper/models/components/hashtagsquery.rb +192 -0
  138. data/lib/xapi_scraper/models/components/hashtagsquery.rbi +98 -0
  139. data/lib/xapi_scraper/models/components/hashtagsquery_language.rb +76 -0
  140. data/lib/xapi_scraper/models/components/hashtagsquery_language.rbi +9 -0
  141. data/lib/xapi_scraper/models/components/hashtagsquery_sortby.rb +18 -0
  142. data/lib/xapi_scraper/models/components/hashtagsquery_sortby.rbi +9 -0
  143. data/lib/xapi_scraper/models/components/likeactionbody.rb +43 -0
  144. data/lib/xapi_scraper/models/components/likeactionbody.rbi +20 -0
  145. data/lib/xapi_scraper/models/components/listmembersresponse.rb +47 -0
  146. data/lib/xapi_scraper/models/components/listmembersresponse.rbi +26 -0
  147. data/lib/xapi_scraper/models/components/listmodel.rb +77 -0
  148. data/lib/xapi_scraper/models/components/listmodel.rbi +44 -0
  149. data/lib/xapi_scraper/models/components/listsubscribersresponse.rb +47 -0
  150. data/lib/xapi_scraper/models/components/listsubscribersresponse.rbi +26 -0
  151. data/lib/xapi_scraper/models/components/listtweetsresponse.rb +47 -0
  152. data/lib/xapi_scraper/models/components/listtweetsresponse.rbi +26 -0
  153. data/lib/xapi_scraper/models/components/loc.rb +25 -0
  154. data/lib/xapi_scraper/models/components/loc.rbi +9 -0
  155. data/lib/xapi_scraper/models/components/mediamodel.rb +194 -0
  156. data/lib/xapi_scraper/models/components/mediamodel.rbi +110 -0
  157. data/lib/xapi_scraper/models/components/messagemodel.rb +100 -0
  158. data/lib/xapi_scraper/models/components/messagemodel.rbi +56 -0
  159. data/lib/xapi_scraper/models/components/posttweetdata.rb +51 -0
  160. data/lib/xapi_scraper/models/components/posttweetdata.rbi +26 -0
  161. data/lib/xapi_scraper/models/components/posttweetquery.rb +122 -0
  162. data/lib/xapi_scraper/models/components/posttweetquery.rbi +62 -0
  163. data/lib/xapi_scraper/models/components/posttweetresponse.rb +58 -0
  164. data/lib/xapi_scraper/models/components/posttweetresponse.rbi +26 -0
  165. data/lib/xapi_scraper/models/components/posttweetwithoutcookiequery.rb +102 -0
  166. data/lib/xapi_scraper/models/components/posttweetwithoutcookiequery.rbi +50 -0
  167. data/lib/xapi_scraper/models/components/quotetweetquery.rb +112 -0
  168. data/lib/xapi_scraper/models/components/quotetweetquery.rbi +56 -0
  169. data/lib/xapi_scraper/models/components/retweetactionbody.rb +43 -0
  170. data/lib/xapi_scraper/models/components/retweetactionbody.rbi +20 -0
  171. data/lib/xapi_scraper/models/components/searchcommunityquery.rb +43 -0
  172. data/lib/xapi_scraper/models/components/searchcommunityquery.rbi +20 -0
  173. data/lib/xapi_scraper/models/components/searchcommunityresponse.rb +47 -0
  174. data/lib/xapi_scraper/models/components/searchcommunityresponse.rbi +26 -0
  175. data/lib/xapi_scraper/models/components/searchcommunitytweetsquery.rb +51 -0
  176. data/lib/xapi_scraper/models/components/searchcommunitytweetsquery.rbi +26 -0
  177. data/lib/xapi_scraper/models/components/searchlistquery.rb +43 -0
  178. data/lib/xapi_scraper/models/components/searchlistquery.rbi +20 -0
  179. data/lib/xapi_scraper/models/components/searchlistresponse.rb +47 -0
  180. data/lib/xapi_scraper/models/components/searchlistresponse.rbi +26 -0
  181. data/lib/xapi_scraper/models/components/searchresponse.rb +54 -0
  182. data/lib/xapi_scraper/models/components/searchresponse.rbi +26 -0
  183. data/lib/xapi_scraper/models/components/searchuserresponse.rb +47 -0
  184. data/lib/xapi_scraper/models/components/searchuserresponse.rbi +26 -0
  185. data/lib/xapi_scraper/models/components/security.rb +34 -0
  186. data/lib/xapi_scraper/models/components/security.rbi +14 -0
  187. data/lib/xapi_scraper/models/components/senddmresponse.rb +47 -0
  188. data/lib/xapi_scraper/models/components/senddmresponse.rbi +26 -0
  189. data/lib/xapi_scraper/models/components/senddmv3query.rb +90 -0
  190. data/lib/xapi_scraper/models/components/senddmv3query.rbi +50 -0
  191. data/lib/xapi_scraper/models/components/sentimentanalysismodel.rb +43 -0
  192. data/lib/xapi_scraper/models/components/sentimentanalysismodel.rbi +20 -0
  193. data/lib/xapi_scraper/models/components/sentimentanalysisquery.rb +31 -0
  194. data/lib/xapi_scraper/models/components/sentimentanalysisquery.rbi +14 -0
  195. data/lib/xapi_scraper/models/components/sentimentanalysisresponse.rb +47 -0
  196. data/lib/xapi_scraper/models/components/sentimentanalysisresponse.rbi +26 -0
  197. data/lib/xapi_scraper/models/components/standardresponse.rb +47 -0
  198. data/lib/xapi_scraper/models/components/standardresponse.rbi +26 -0
  199. data/lib/xapi_scraper/models/components/streammodel.rb +51 -0
  200. data/lib/xapi_scraper/models/components/streammodel.rbi +26 -0
  201. data/lib/xapi_scraper/models/components/tweet_type.rb +19 -0
  202. data/lib/xapi_scraper/models/components/tweet_type.rbi +9 -0
  203. data/lib/xapi_scraper/models/components/tweetactionresponse.rb +51 -0
  204. data/lib/xapi_scraper/models/components/tweetactionresponse.rbi +26 -0
  205. data/lib/xapi_scraper/models/components/tweetmodel.rb +518 -0
  206. data/lib/xapi_scraper/models/components/tweetmodel.rbi +302 -0
  207. data/lib/xapi_scraper/models/components/tweetthreadbyidbody.rb +53 -0
  208. data/lib/xapi_scraper/models/components/tweetthreadbyidbody.rbi +26 -0
  209. data/lib/xapi_scraper/models/components/twitteraccountbasedstandardresponse.rb +58 -0
  210. data/lib/xapi_scraper/models/components/twitteraccountbasedstandardresponse.rbi +26 -0
  211. data/lib/xapi_scraper/models/components/twitteruseraboutresponse.rb +208 -0
  212. data/lib/xapi_scraper/models/components/twitteruseraboutresponse.rbi +116 -0
  213. data/lib/xapi_scraper/models/components/twitteruseraboutstandardresponse.rb +58 -0
  214. data/lib/xapi_scraper/models/components/twitteruseraboutstandardresponse.rbi +26 -0
  215. data/lib/xapi_scraper/models/components/unfavoritetweetquery.rb +35 -0
  216. data/lib/xapi_scraper/models/components/unfavoritetweetquery.rbi +14 -0
  217. data/lib/xapi_scraper/models/components/unfollowuserquery.rb +43 -0
  218. data/lib/xapi_scraper/models/components/unfollowuserquery.rbi +20 -0
  219. data/lib/xapi_scraper/models/components/unfollowuserresponse.rb +47 -0
  220. data/lib/xapi_scraper/models/components/unfollowuserresponse.rbi +26 -0
  221. data/lib/xapi_scraper/models/components/urlmodel.rb +47 -0
  222. data/lib/xapi_scraper/models/components/urlmodel.rbi +26 -0
  223. data/lib/xapi_scraper/models/components/userinfo.rb +348 -0
  224. data/lib/xapi_scraper/models/components/userinfo.rbi +200 -0
  225. data/lib/xapi_scraper/models/components/usermodel.rb +344 -0
  226. data/lib/xapi_scraper/models/components/usermodel.rbi +200 -0
  227. data/lib/xapi_scraper/models/components/usersdetailsresponse.rb +47 -0
  228. data/lib/xapi_scraper/models/components/usersdetailsresponse.rbi +26 -0
  229. data/lib/xapi_scraper/models/components/usertimelinefillquery.rb +35 -0
  230. data/lib/xapi_scraper/models/components/usertimelinefillquery.rbi +14 -0
  231. data/lib/xapi_scraper/models/components/usertimelinepagequery.rb +43 -0
  232. data/lib/xapi_scraper/models/components/usertimelinepagequery.rbi +20 -0
  233. data/lib/xapi_scraper/models/components/usertimelinepageresponse.rb +112 -0
  234. data/lib/xapi_scraper/models/components/usertimelinepageresponse.rbi +56 -0
  235. data/lib/xapi_scraper/models/components/usertimelineresponse.rb +76 -0
  236. data/lib/xapi_scraper/models/components/usertimelineresponse.rbi +38 -0
  237. data/lib/xapi_scraper/models/components/usertweetitem.rb +225 -0
  238. data/lib/xapi_scraper/models/components/usertweetitem.rbi +122 -0
  239. data/lib/xapi_scraper/models/components/validationerror.rb +67 -0
  240. data/lib/xapi_scraper/models/components/validationerror.rbi +38 -0
  241. data/lib/xapi_scraper/models/components/verifiedfollowersdata.rb +58 -0
  242. data/lib/xapi_scraper/models/components/verifiedfollowersdata.rbi +26 -0
  243. data/lib/xapi_scraper/models/components/verifiedfollowersresponse.rb +47 -0
  244. data/lib/xapi_scraper/models/components/verifiedfollowersresponse.rbi +26 -0
  245. data/lib/xapi_scraper/models/components/xarticlemodel.rb +305 -0
  246. data/lib/xapi_scraper/models/components/xarticlemodel.rbi +170 -0
  247. data/lib/xapi_scraper/models/components/xarticleresponse.rb +47 -0
  248. data/lib/xapi_scraper/models/components/xarticleresponse.rbi +26 -0
  249. data/lib/xapi_scraper/models/components.rb +128 -0
  250. data/lib/xapi_scraper/models/errors/apierror.rb +39 -0
  251. data/lib/xapi_scraper/models/errors/apierror.rbi +27 -0
  252. data/lib/xapi_scraper/models/errors/httpvalidationerror.rb +48 -0
  253. data/lib/xapi_scraper/models/errors/httpvalidationerror.rbi +20 -0
  254. data/lib/xapi_scraper/models/errors.rb +13 -0
  255. data/lib/xapi_scraper/models/operations/accountgetbalance_response.rb +51 -0
  256. data/lib/xapi_scraper/models/operations/accountgetbalance_response.rbi +32 -0
  257. data/lib/xapi_scraper/models/operations/analysissentiment_response.rb +51 -0
  258. data/lib/xapi_scraper/models/operations/analysissentiment_response.rbi +32 -0
  259. data/lib/xapi_scraper/models/operations/articlesfetch_response.rb +51 -0
  260. data/lib/xapi_scraper/models/operations/articlesfetch_response.rbi +32 -0
  261. data/lib/xapi_scraper/models/operations/articlesmarkdown_request.rb +31 -0
  262. data/lib/xapi_scraper/models/operations/articlesmarkdown_request.rbi +14 -0
  263. data/lib/xapi_scraper/models/operations/articlesmarkdown_response.rb +51 -0
  264. data/lib/xapi_scraper/models/operations/articlesmarkdown_response.rbi +32 -0
  265. data/lib/xapi_scraper/models/operations/communitiesget_request.rb +34 -0
  266. data/lib/xapi_scraper/models/operations/communitiesget_request.rbi +14 -0
  267. data/lib/xapi_scraper/models/operations/communitiesget_response.rb +51 -0
  268. data/lib/xapi_scraper/models/operations/communitiesget_response.rbi +32 -0
  269. data/lib/xapi_scraper/models/operations/communitiesmembers_request.rb +42 -0
  270. data/lib/xapi_scraper/models/operations/communitiesmembers_request.rbi +20 -0
  271. data/lib/xapi_scraper/models/operations/communitiesmembers_response.rb +51 -0
  272. data/lib/xapi_scraper/models/operations/communitiesmembers_response.rbi +32 -0
  273. data/lib/xapi_scraper/models/operations/communitiesmemberspage_response.rb +54 -0
  274. data/lib/xapi_scraper/models/operations/communitiesmemberspage_response.rbi +32 -0
  275. data/lib/xapi_scraper/models/operations/communitiessearch_response.rb +51 -0
  276. data/lib/xapi_scraper/models/operations/communitiessearch_response.rbi +32 -0
  277. data/lib/xapi_scraper/models/operations/communitiessearchtweets_response.rb +51 -0
  278. data/lib/xapi_scraper/models/operations/communitiessearchtweets_response.rbi +32 -0
  279. data/lib/xapi_scraper/models/operations/communitiestweets_request.rb +50 -0
  280. data/lib/xapi_scraper/models/operations/communitiestweets_request.rbi +26 -0
  281. data/lib/xapi_scraper/models/operations/communitiestweets_response.rb +51 -0
  282. data/lib/xapi_scraper/models/operations/communitiestweets_response.rbi +32 -0
  283. data/lib/xapi_scraper/models/operations/communitiestweetspage_response.rb +54 -0
  284. data/lib/xapi_scraper/models/operations/communitiestweetspage_response.rbi +32 -0
  285. data/lib/xapi_scraper/models/operations/country.rb +79 -0
  286. data/lib/xapi_scraper/models/operations/country.rbi +9 -0
  287. data/lib/xapi_scraper/models/operations/dmconversations_response.rb +51 -0
  288. data/lib/xapi_scraper/models/operations/dmconversations_response.rbi +32 -0
  289. data/lib/xapi_scraper/models/operations/dmhistory_response.rb +51 -0
  290. data/lib/xapi_scraper/models/operations/dmhistory_response.rbi +32 -0
  291. data/lib/xapi_scraper/models/operations/dmmedia_response.rb +51 -0
  292. data/lib/xapi_scraper/models/operations/dmmedia_response.rbi +32 -0
  293. data/lib/xapi_scraper/models/operations/dmsend_response.rb +51 -0
  294. data/lib/xapi_scraper/models/operations/dmsend_response.rbi +32 -0
  295. data/lib/xapi_scraper/models/operations/dmstatus_response.rb +51 -0
  296. data/lib/xapi_scraper/models/operations/dmstatus_response.rbi +32 -0
  297. data/lib/xapi_scraper/models/operations/listsmembers_request.rb +38 -0
  298. data/lib/xapi_scraper/models/operations/listsmembers_request.rbi +20 -0
  299. data/lib/xapi_scraper/models/operations/listsmembers_response.rb +51 -0
  300. data/lib/xapi_scraper/models/operations/listsmembers_response.rbi +32 -0
  301. data/lib/xapi_scraper/models/operations/listsmemberspage_response.rb +54 -0
  302. data/lib/xapi_scraper/models/operations/listsmemberspage_response.rbi +32 -0
  303. data/lib/xapi_scraper/models/operations/listssearch_response.rb +51 -0
  304. data/lib/xapi_scraper/models/operations/listssearch_response.rbi +32 -0
  305. data/lib/xapi_scraper/models/operations/listssubscribers_request.rb +38 -0
  306. data/lib/xapi_scraper/models/operations/listssubscribers_request.rbi +20 -0
  307. data/lib/xapi_scraper/models/operations/listssubscribers_response.rb +51 -0
  308. data/lib/xapi_scraper/models/operations/listssubscribers_response.rbi +32 -0
  309. data/lib/xapi_scraper/models/operations/liststweets_request.rb +38 -0
  310. data/lib/xapi_scraper/models/operations/liststweets_request.rbi +20 -0
  311. data/lib/xapi_scraper/models/operations/liststweets_response.rb +51 -0
  312. data/lib/xapi_scraper/models/operations/liststweets_response.rbi +32 -0
  313. data/lib/xapi_scraper/models/operations/liststweetspage_response.rb +54 -0
  314. data/lib/xapi_scraper/models/operations/liststweetspage_response.rbi +32 -0
  315. data/lib/xapi_scraper/models/operations/searchadvanced_response.rb +54 -0
  316. data/lib/xapi_scraper/models/operations/searchadvanced_response.rbi +32 -0
  317. data/lib/xapi_scraper/models/operations/searchcashtags_response.rb +51 -0
  318. data/lib/xapi_scraper/models/operations/searchcashtags_response.rbi +32 -0
  319. data/lib/xapi_scraper/models/operations/searchhashtags_response.rb +51 -0
  320. data/lib/xapi_scraper/models/operations/searchhashtags_response.rbi +32 -0
  321. data/lib/xapi_scraper/models/operations/timelinestweetsandreplies_request.rb +35 -0
  322. data/lib/xapi_scraper/models/operations/timelinestweetsandreplies_request.rbi +20 -0
  323. data/lib/xapi_scraper/models/operations/timelinestweetsandreplies_response.rb +51 -0
  324. data/lib/xapi_scraper/models/operations/timelinestweetsandreplies_response.rbi +32 -0
  325. data/lib/xapi_scraper/models/operations/timelinestweetsandrepliespage_response.rb +54 -0
  326. data/lib/xapi_scraper/models/operations/timelinestweetsandrepliespage_response.rbi +32 -0
  327. data/lib/xapi_scraper/models/operations/timelinesuser_request.rb +35 -0
  328. data/lib/xapi_scraper/models/operations/timelinesuser_request.rbi +20 -0
  329. data/lib/xapi_scraper/models/operations/timelinesuser_response.rb +51 -0
  330. data/lib/xapi_scraper/models/operations/timelinesuser_response.rbi +32 -0
  331. data/lib/xapi_scraper/models/operations/timelinesuserpage_request.rb +35 -0
  332. data/lib/xapi_scraper/models/operations/timelinesuserpage_request.rbi +20 -0
  333. data/lib/xapi_scraper/models/operations/timelinesuserpage_response.rb +51 -0
  334. data/lib/xapi_scraper/models/operations/timelinesuserpage_response.rbi +32 -0
  335. data/lib/xapi_scraper/models/operations/trendingbycountry_request.rb +35 -0
  336. data/lib/xapi_scraper/models/operations/trendingbycountry_request.rbi +14 -0
  337. data/lib/xapi_scraper/models/operations/trendingbycountry_response.rb +51 -0
  338. data/lib/xapi_scraper/models/operations/trendingbycountry_response.rbi +32 -0
  339. data/lib/xapi_scraper/models/operations/trendingcontents_request.rb +35 -0
  340. data/lib/xapi_scraper/models/operations/trendingcontents_request.rbi +20 -0
  341. data/lib/xapi_scraper/models/operations/trendingcontents_response.rb +51 -0
  342. data/lib/xapi_scraper/models/operations/trendingcontents_response.rbi +32 -0
  343. data/lib/xapi_scraper/models/operations/trendingcountries_response.rb +51 -0
  344. data/lib/xapi_scraper/models/operations/trendingcountries_response.rbi +32 -0
  345. data/lib/xapi_scraper/models/operations/trendingtopics_response.rb +51 -0
  346. data/lib/xapi_scraper/models/operations/trendingtopics_response.rbi +32 -0
  347. data/lib/xapi_scraper/models/operations/trendingtweets_request.rb +63 -0
  348. data/lib/xapi_scraper/models/operations/trendingtweets_request.rbi +32 -0
  349. data/lib/xapi_scraper/models/operations/trendingtweets_response.rb +51 -0
  350. data/lib/xapi_scraper/models/operations/trendingtweets_response.rbi +32 -0
  351. data/lib/xapi_scraper/models/operations/tweet_type.rb +19 -0
  352. data/lib/xapi_scraper/models/operations/tweet_type.rbi +9 -0
  353. data/lib/xapi_scraper/models/operations/tweetsactionsbookmark_request.rb +35 -0
  354. data/lib/xapi_scraper/models/operations/tweetsactionsbookmark_request.rbi +20 -0
  355. data/lib/xapi_scraper/models/operations/tweetsactionsbookmark_response.rb +51 -0
  356. data/lib/xapi_scraper/models/operations/tweetsactionsbookmark_response.rbi +32 -0
  357. data/lib/xapi_scraper/models/operations/tweetsactionscreate_response.rb +51 -0
  358. data/lib/xapi_scraper/models/operations/tweetsactionscreate_response.rbi +32 -0
  359. data/lib/xapi_scraper/models/operations/tweetsactionscreatethread_response.rb +51 -0
  360. data/lib/xapi_scraper/models/operations/tweetsactionscreatethread_response.rbi +32 -0
  361. data/lib/xapi_scraper/models/operations/tweetsactionscreatewithoutcookie_response.rb +51 -0
  362. data/lib/xapi_scraper/models/operations/tweetsactionscreatewithoutcookie_response.rbi +32 -0
  363. data/lib/xapi_scraper/models/operations/tweetsactionsdeletebatch_response.rb +51 -0
  364. data/lib/xapi_scraper/models/operations/tweetsactionsdeletebatch_response.rbi +32 -0
  365. data/lib/xapi_scraper/models/operations/tweetsactionslike_request.rb +35 -0
  366. data/lib/xapi_scraper/models/operations/tweetsactionslike_request.rbi +20 -0
  367. data/lib/xapi_scraper/models/operations/tweetsactionslike_response.rb +51 -0
  368. data/lib/xapi_scraper/models/operations/tweetsactionslike_response.rbi +32 -0
  369. data/lib/xapi_scraper/models/operations/tweetsactionsquote_response.rb +51 -0
  370. data/lib/xapi_scraper/models/operations/tweetsactionsquote_response.rbi +32 -0
  371. data/lib/xapi_scraper/models/operations/tweetsactionsretweet_request.rb +35 -0
  372. data/lib/xapi_scraper/models/operations/tweetsactionsretweet_request.rbi +20 -0
  373. data/lib/xapi_scraper/models/operations/tweetsactionsretweet_response.rb +51 -0
  374. data/lib/xapi_scraper/models/operations/tweetsactionsretweet_response.rbi +32 -0
  375. data/lib/xapi_scraper/models/operations/tweetsactionsunbookmark_request.rb +35 -0
  376. data/lib/xapi_scraper/models/operations/tweetsactionsunbookmark_request.rbi +20 -0
  377. data/lib/xapi_scraper/models/operations/tweetsactionsunbookmark_response.rb +51 -0
  378. data/lib/xapi_scraper/models/operations/tweetsactionsunbookmark_response.rbi +32 -0
  379. data/lib/xapi_scraper/models/operations/tweetsactionsunlike_request.rb +35 -0
  380. data/lib/xapi_scraper/models/operations/tweetsactionsunlike_request.rbi +20 -0
  381. data/lib/xapi_scraper/models/operations/tweetsactionsunlike_response.rb +51 -0
  382. data/lib/xapi_scraper/models/operations/tweetsactionsunlike_response.rbi +32 -0
  383. data/lib/xapi_scraper/models/operations/tweetsactionsunretweet_request.rb +35 -0
  384. data/lib/xapi_scraper/models/operations/tweetsactionsunretweet_request.rbi +20 -0
  385. data/lib/xapi_scraper/models/operations/tweetsactionsunretweet_response.rb +51 -0
  386. data/lib/xapi_scraper/models/operations/tweetsactionsunretweet_response.rbi +32 -0
  387. data/lib/xapi_scraper/models/operations/tweetsdetail_response.rb +51 -0
  388. data/lib/xapi_scraper/models/operations/tweetsdetail_response.rbi +32 -0
  389. data/lib/xapi_scraper/models/operations/tweetsengagementquotes_response.rb +51 -0
  390. data/lib/xapi_scraper/models/operations/tweetsengagementquotes_response.rbi +32 -0
  391. data/lib/xapi_scraper/models/operations/tweetsengagementquotespage_response.rb +51 -0
  392. data/lib/xapi_scraper/models/operations/tweetsengagementquotespage_response.rbi +32 -0
  393. data/lib/xapi_scraper/models/operations/tweetsengagementretweeters_request.rb +39 -0
  394. data/lib/xapi_scraper/models/operations/tweetsengagementretweeters_request.rbi +20 -0
  395. data/lib/xapi_scraper/models/operations/tweetsengagementretweeters_response.rb +51 -0
  396. data/lib/xapi_scraper/models/operations/tweetsengagementretweeters_response.rbi +32 -0
  397. data/lib/xapi_scraper/models/operations/tweetsengagementretweeterspage_response.rb +51 -0
  398. data/lib/xapi_scraper/models/operations/tweetsengagementretweeterspage_response.rbi +32 -0
  399. data/lib/xapi_scraper/models/operations/tweetslookup_response.rb +51 -0
  400. data/lib/xapi_scraper/models/operations/tweetslookup_response.rbi +32 -0
  401. data/lib/xapi_scraper/models/operations/tweetsrepliespage_request.rb +35 -0
  402. data/lib/xapi_scraper/models/operations/tweetsrepliespage_request.rbi +20 -0
  403. data/lib/xapi_scraper/models/operations/tweetsrepliespage_response.rb +51 -0
  404. data/lib/xapi_scraper/models/operations/tweetsrepliespage_response.rbi +32 -0
  405. data/lib/xapi_scraper/models/operations/tweetssimilar_request.rb +30 -0
  406. data/lib/xapi_scraper/models/operations/tweetssimilar_request.rbi +14 -0
  407. data/lib/xapi_scraper/models/operations/tweetssimilar_response.rb +51 -0
  408. data/lib/xapi_scraper/models/operations/tweetssimilar_response.rbi +32 -0
  409. data/lib/xapi_scraper/models/operations/tweetsthread_response.rb +51 -0
  410. data/lib/xapi_scraper/models/operations/tweetsthread_response.rbi +32 -0
  411. data/lib/xapi_scraper/models/operations/usersfollow_response.rb +51 -0
  412. data/lib/xapi_scraper/models/operations/usersfollow_response.rbi +32 -0
  413. data/lib/xapi_scraper/models/operations/usersfollowerslist_response.rb +51 -0
  414. data/lib/xapi_scraper/models/operations/usersfollowerslist_response.rbi +32 -0
  415. data/lib/xapi_scraper/models/operations/usersfollowersverified_response.rb +51 -0
  416. data/lib/xapi_scraper/models/operations/usersfollowersverified_response.rbi +32 -0
  417. data/lib/xapi_scraper/models/operations/usersfollowinglist_response.rb +51 -0
  418. data/lib/xapi_scraper/models/operations/usersfollowinglist_response.rbi +32 -0
  419. data/lib/xapi_scraper/models/operations/usersgetabout_request.rb +31 -0
  420. data/lib/xapi_scraper/models/operations/usersgetabout_request.rbi +14 -0
  421. data/lib/xapi_scraper/models/operations/usersgetabout_response.rb +54 -0
  422. data/lib/xapi_scraper/models/operations/usersgetabout_response.rbi +32 -0
  423. data/lib/xapi_scraper/models/operations/usersgetaccountbased_response.rb +54 -0
  424. data/lib/xapi_scraper/models/operations/usersgetaccountbased_response.rbi +32 -0
  425. data/lib/xapi_scraper/models/operations/usersgetbyids_response.rb +51 -0
  426. data/lib/xapi_scraper/models/operations/usersgetbyids_response.rbi +32 -0
  427. data/lib/xapi_scraper/models/operations/usersgetbyusernames_response.rb +51 -0
  428. data/lib/xapi_scraper/models/operations/usersgetbyusernames_response.rbi +32 -0
  429. data/lib/xapi_scraper/models/operations/usersgetstatuses_response.rb +51 -0
  430. data/lib/xapi_scraper/models/operations/usersgetstatuses_response.rbi +32 -0
  431. data/lib/xapi_scraper/models/operations/userssearch_request.rb +39 -0
  432. data/lib/xapi_scraper/models/operations/userssearch_request.rbi +20 -0
  433. data/lib/xapi_scraper/models/operations/userssearch_response.rb +51 -0
  434. data/lib/xapi_scraper/models/operations/userssearch_response.rbi +32 -0
  435. data/lib/xapi_scraper/models/operations/usersunfollow_response.rb +51 -0
  436. data/lib/xapi_scraper/models/operations/usersunfollow_response.rbi +32 -0
  437. data/lib/xapi_scraper/models/operations/usersverifyaccount_response.rb +51 -0
  438. data/lib/xapi_scraper/models/operations/usersverifyaccount_response.rbi +32 -0
  439. data/lib/xapi_scraper/models/operations.rb +127 -0
  440. data/lib/xapi_scraper/replies.rb +235 -0
  441. data/lib/xapi_scraper/sdk_hooks/hooks.rb +99 -0
  442. data/lib/xapi_scraper/sdk_hooks/registration.rb +34 -0
  443. data/lib/xapi_scraper/sdk_hooks/types.rb +180 -0
  444. data/lib/xapi_scraper/sdkconfiguration.rb +107 -0
  445. data/lib/xapi_scraper/sdkconfiguration.rbi +83 -0
  446. data/lib/xapi_scraper/search.rb +610 -0
  447. data/lib/xapi_scraper/timelines.rb +805 -0
  448. data/lib/xapi_scraper/trending.rb +888 -0
  449. data/lib/xapi_scraper/tweets.rb +801 -0
  450. data/lib/xapi_scraper/users.rb +1748 -0
  451. data/lib/xapi_scraper/utils/forms.rb +232 -0
  452. data/lib/xapi_scraper/utils/headers.rb +82 -0
  453. data/lib/xapi_scraper/utils/query_params.rb +167 -0
  454. data/lib/xapi_scraper/utils/request_bodies.rb +79 -0
  455. data/lib/xapi_scraper/utils/retries.rb +139 -0
  456. data/lib/xapi_scraper/utils/security.rb +158 -0
  457. data/lib/xapi_scraper/utils/url.rb +124 -0
  458. data/lib/xapi_scraper/utils/utils.rb +241 -0
  459. metadata +720 -0
@@ -0,0 +1,801 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require "faraday"
7
+ require "faraday/multipart"
8
+ require "faraday/retry"
9
+ require "sorbet-runtime"
10
+
11
+ require_relative "sdk_hooks/hooks"
12
+ require_relative "utils/retries"
13
+
14
+ module XapiScraper
15
+ extend T::Sig
16
+
17
+ class Tweets
18
+ extend T::Sig
19
+ attr_accessor :actions, :replies, :engagement
20
+
21
+ sig { params(sdk_config: SDKConfiguration).void }
22
+ def initialize(sdk_config)
23
+ @sdk_configuration = sdk_config
24
+ init_sdks
25
+ end
26
+
27
+ sig { void }
28
+ def init_sdks
29
+ @actions = ::XapiScraper::Actions.new(@sdk_configuration)
30
+ @replies = ::XapiScraper::Replies.new(@sdk_configuration)
31
+ @engagement = ::XapiScraper::Engagement.new(@sdk_configuration)
32
+ end
33
+
34
+ sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, T.any(String, T::Enum)])).returns(String) }
35
+ def get_url(base_url:, url_variables: nil)
36
+ sd_base_url, sd_options = @sdk_configuration.get_server_details
37
+
38
+ if base_url.nil?
39
+ base_url = sd_base_url
40
+ end
41
+
42
+ if url_variables.nil?
43
+ url_variables = sd_options
44
+ end
45
+
46
+ return Utils.template_url(base_url, url_variables)
47
+ end
48
+
49
+ sig {
50
+ params(
51
+ request: T::Array[::String],
52
+ retries: T.nilable(Utils::RetryConfig),
53
+ timeout_ms: T.nilable(Integer),
54
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
55
+ )
56
+ .returns(Models::Operations::TweetsDetailResponse)
57
+ }
58
+ def detail(request:, retries: nil, timeout_ms: nil, http_headers: nil)
59
+ # detail - Get Tweet Detail
60
+ # Retrieve detailed information for one or more tweets by ID (no cookie required). The maximum input quantity is limited by your plan's QPS. To pass larger input quantity limits, upgrade your plan to get higher QPS.
61
+ url, params = @sdk_configuration.get_server_details
62
+ base_url = Utils.template_url(url, params)
63
+ url = "#{base_url}/v2/tweet/detail"
64
+ headers = {}
65
+ headers = T.cast(headers, T::Hash[String, String])
66
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :request, :json)
67
+ headers["content-type"] = req_content_type
68
+ raise StandardError, "request body is required" if data.nil? && form.nil?
69
+
70
+ if form && !form.empty?
71
+ body = Utils.encode_form(form)
72
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
73
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
74
+ else
75
+ body = data
76
+ end
77
+
78
+ headers["Accept"] = "application/json"
79
+ headers["user-agent"] = @sdk_configuration.user_agent
80
+ retries ||= @sdk_configuration.retry_config
81
+ retries ||= Utils::RetryConfig.new(
82
+ backoff: Utils::BackoffStrategy.new(
83
+ exponent: 1.5,
84
+ initial_interval: 500,
85
+ max_elapsed_time: 3_600_000,
86
+ max_interval: 60_000
87
+ ),
88
+ retry_connection_errors: true,
89
+ strategy: "backoff"
90
+ )
91
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
92
+ retry_options[:retry_statuses] = [408, 409, 429, 500, 501, 502, 503, 504, 505]
93
+
94
+ security = @sdk_configuration.security_source&.call
95
+
96
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
97
+ timeout ||= @sdk_configuration.timeout
98
+
99
+ connection = @sdk_configuration.client.dup
100
+ connection.use(Utils::RetryMiddleware, retry_options)
101
+
102
+ hook_ctx = SDKHooks::HookContext.new(
103
+ config: @sdk_configuration,
104
+ base_url: base_url,
105
+ oauth2_scopes: nil,
106
+ operation_id: "tweetsDetail",
107
+ security_source: @sdk_configuration.security_source
108
+ )
109
+
110
+ error = T.let(nil, T.nilable(StandardError))
111
+ http_response = T.let(nil, T.nilable(Faraday::Response))
112
+
113
+ begin
114
+ http_response = T.must(connection).post(url) do |req|
115
+ req.body = body
116
+ req.headers.merge!(headers)
117
+ req.options.timeout = timeout unless timeout.nil?
118
+ Utils.configure_request_security(req, security)
119
+ http_headers&.each do |key, value|
120
+ req.headers[key.to_s] = value
121
+ end
122
+
123
+ @sdk_configuration.hooks.before_request(
124
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
125
+ hook_ctx: hook_ctx
126
+ ),
127
+ request: req
128
+ )
129
+ end
130
+
131
+ rescue StandardError => e
132
+ error = e
133
+ ensure
134
+ if http_response.nil? || Utils.error_status?(http_response.status)
135
+ http_response = @sdk_configuration.hooks.after_error(
136
+ error: error,
137
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
138
+ hook_ctx: hook_ctx
139
+ ),
140
+ response: http_response
141
+ )
142
+ else
143
+ http_response = @sdk_configuration.hooks.after_success(
144
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
145
+ hook_ctx: hook_ctx
146
+ ),
147
+ response: http_response
148
+ )
149
+ end
150
+
151
+ if http_response.nil?
152
+ raise error if !error.nil?
153
+ raise "no response"
154
+ end
155
+ end
156
+
157
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
158
+ if Utils.match_status_code(http_response.status, ["200"])
159
+ if Utils.match_content_type(content_type, "application/json")
160
+ http_response = @sdk_configuration.hooks.after_success(
161
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
162
+ hook_ctx: hook_ctx
163
+ ),
164
+ response: http_response
165
+ )
166
+ response_data = http_response.env.response_body
167
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), ::Object)
168
+ response = Models::Operations::TweetsDetailResponse.new(
169
+ status_code: http_response.status,
170
+ content_type: content_type,
171
+ raw_response: http_response,
172
+ any: T.unsafe(obj)
173
+ )
174
+
175
+ return response
176
+ else
177
+ raise(
178
+ ::XapiScraper::Models::Errors::APIError.new(
179
+ status_code: http_response.status,
180
+ body: http_response.env.response_body,
181
+ raw_response: http_response
182
+ ),
183
+ "Unknown content type received"
184
+ )
185
+ end
186
+ elsif Utils.match_status_code(http_response.status, ["422"])
187
+ if Utils.match_content_type(content_type, "application/json")
188
+ http_response = @sdk_configuration.hooks.after_success(
189
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
190
+ hook_ctx: hook_ctx
191
+ ),
192
+ response: http_response
193
+ )
194
+ response_data = http_response.env.response_body
195
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
196
+ obj.raw_response = http_response
197
+ raise obj
198
+ else
199
+ raise(
200
+ ::XapiScraper::Models::Errors::APIError.new(
201
+ status_code: http_response.status,
202
+ body: http_response.env.response_body,
203
+ raw_response: http_response
204
+ ),
205
+ "Unknown content type received"
206
+ )
207
+ end
208
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
209
+ raise(
210
+ ::XapiScraper::Models::Errors::APIError.new(
211
+ status_code: http_response.status,
212
+ body: http_response.env.response_body,
213
+ raw_response: http_response
214
+ ),
215
+ "API error occurred"
216
+ )
217
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
218
+ raise(
219
+ ::XapiScraper::Models::Errors::APIError.new(
220
+ status_code: http_response.status,
221
+ body: http_response.env.response_body,
222
+ raw_response: http_response
223
+ ),
224
+ "API error occurred"
225
+ )
226
+ else
227
+ raise(
228
+ ::XapiScraper::Models::Errors::APIError.new(
229
+ status_code: http_response.status,
230
+ body: http_response.env.response_body,
231
+ raw_response: http_response
232
+ ),
233
+ "Unknown status code received"
234
+ )
235
+
236
+ end
237
+ end
238
+
239
+ sig {
240
+ params(
241
+ request: Models::Components::TweetThreadByIdBody,
242
+ retries: T.nilable(Utils::RetryConfig),
243
+ timeout_ms: T.nilable(Integer),
244
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
245
+ )
246
+ .returns(Models::Operations::TweetsThreadResponse)
247
+ }
248
+ def thread(request:, retries: nil, timeout_ms: nil, http_headers: nil)
249
+ # thread - Get Tweet Thread by ID
250
+ # Retrieve all tweets in a thread by tweet ID, sorted by latest.
251
+ url, params = @sdk_configuration.get_server_details
252
+ base_url = Utils.template_url(url, params)
253
+ url = "#{base_url}/twitter/tweets/thread_by_id"
254
+ headers = {}
255
+ headers = T.cast(headers, T::Hash[String, String])
256
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :request, :json)
257
+ headers["content-type"] = req_content_type
258
+ raise StandardError, "request body is required" if data.nil? && form.nil?
259
+
260
+ if form && !form.empty?
261
+ body = Utils.encode_form(form)
262
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
263
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
264
+ else
265
+ body = data
266
+ end
267
+
268
+ headers["Accept"] = "application/json"
269
+ headers["user-agent"] = @sdk_configuration.user_agent
270
+ retries ||= @sdk_configuration.retry_config
271
+ retries ||= Utils::RetryConfig.new(
272
+ backoff: Utils::BackoffStrategy.new(
273
+ exponent: 1.5,
274
+ initial_interval: 500,
275
+ max_elapsed_time: 3_600_000,
276
+ max_interval: 60_000
277
+ ),
278
+ retry_connection_errors: true,
279
+ strategy: "backoff"
280
+ )
281
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
282
+ retry_options[:retry_statuses] = [408, 409, 429, 500, 501, 502, 503, 504, 505]
283
+
284
+ security = @sdk_configuration.security_source&.call
285
+
286
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
287
+ timeout ||= @sdk_configuration.timeout
288
+
289
+ connection = @sdk_configuration.client.dup
290
+ connection.use(Utils::RetryMiddleware, retry_options)
291
+
292
+ hook_ctx = SDKHooks::HookContext.new(
293
+ config: @sdk_configuration,
294
+ base_url: base_url,
295
+ oauth2_scopes: nil,
296
+ operation_id: "tweetsThread",
297
+ security_source: @sdk_configuration.security_source
298
+ )
299
+
300
+ error = T.let(nil, T.nilable(StandardError))
301
+ http_response = T.let(nil, T.nilable(Faraday::Response))
302
+
303
+ begin
304
+ http_response = T.must(connection).post(url) do |req|
305
+ req.body = body
306
+ req.headers.merge!(headers)
307
+ req.options.timeout = timeout unless timeout.nil?
308
+ Utils.configure_request_security(req, security)
309
+ http_headers&.each do |key, value|
310
+ req.headers[key.to_s] = value
311
+ end
312
+
313
+ @sdk_configuration.hooks.before_request(
314
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
315
+ hook_ctx: hook_ctx
316
+ ),
317
+ request: req
318
+ )
319
+ end
320
+
321
+ rescue StandardError => e
322
+ error = e
323
+ ensure
324
+ if http_response.nil? || Utils.error_status?(http_response.status)
325
+ http_response = @sdk_configuration.hooks.after_error(
326
+ error: error,
327
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
328
+ hook_ctx: hook_ctx
329
+ ),
330
+ response: http_response
331
+ )
332
+ else
333
+ http_response = @sdk_configuration.hooks.after_success(
334
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
335
+ hook_ctx: hook_ctx
336
+ ),
337
+ response: http_response
338
+ )
339
+ end
340
+
341
+ if http_response.nil?
342
+ raise error if !error.nil?
343
+ raise "no response"
344
+ end
345
+ end
346
+
347
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
348
+ if Utils.match_status_code(http_response.status, ["200"])
349
+ if Utils.match_content_type(content_type, "application/json")
350
+ http_response = @sdk_configuration.hooks.after_success(
351
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
352
+ hook_ctx: hook_ctx
353
+ ),
354
+ response: http_response
355
+ )
356
+ response_data = http_response.env.response_body
357
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), ::Object)
358
+ response = Models::Operations::TweetsThreadResponse.new(
359
+ status_code: http_response.status,
360
+ content_type: content_type,
361
+ raw_response: http_response,
362
+ any: T.unsafe(obj)
363
+ )
364
+
365
+ return response
366
+ else
367
+ raise(
368
+ ::XapiScraper::Models::Errors::APIError.new(
369
+ status_code: http_response.status,
370
+ body: http_response.env.response_body,
371
+ raw_response: http_response
372
+ ),
373
+ "Unknown content type received"
374
+ )
375
+ end
376
+ elsif Utils.match_status_code(http_response.status, ["422"])
377
+ if Utils.match_content_type(content_type, "application/json")
378
+ http_response = @sdk_configuration.hooks.after_success(
379
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
380
+ hook_ctx: hook_ctx
381
+ ),
382
+ response: http_response
383
+ )
384
+ response_data = http_response.env.response_body
385
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
386
+ obj.raw_response = http_response
387
+ raise obj
388
+ else
389
+ raise(
390
+ ::XapiScraper::Models::Errors::APIError.new(
391
+ status_code: http_response.status,
392
+ body: http_response.env.response_body,
393
+ raw_response: http_response
394
+ ),
395
+ "Unknown content type received"
396
+ )
397
+ end
398
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
399
+ raise(
400
+ ::XapiScraper::Models::Errors::APIError.new(
401
+ status_code: http_response.status,
402
+ body: http_response.env.response_body,
403
+ raw_response: http_response
404
+ ),
405
+ "API error occurred"
406
+ )
407
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
408
+ raise(
409
+ ::XapiScraper::Models::Errors::APIError.new(
410
+ status_code: http_response.status,
411
+ body: http_response.env.response_body,
412
+ raw_response: http_response
413
+ ),
414
+ "API error occurred"
415
+ )
416
+ else
417
+ raise(
418
+ ::XapiScraper::Models::Errors::APIError.new(
419
+ status_code: http_response.status,
420
+ body: http_response.env.response_body,
421
+ raw_response: http_response
422
+ ),
423
+ "Unknown status code received"
424
+ )
425
+
426
+ end
427
+ end
428
+
429
+ sig {
430
+ params(
431
+ request: T::Array[::String],
432
+ retries: T.nilable(Utils::RetryConfig),
433
+ timeout_ms: T.nilable(Integer),
434
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
435
+ )
436
+ .returns(Models::Operations::TweetsLookupResponse)
437
+ }
438
+ def lookup(request:, retries: nil, timeout_ms: nil, http_headers: nil)
439
+ # lookup - Batch Get Tweets by ID
440
+ # Retrieve detailed information for multiple Tweets by their IDs. The maximum input quantity is limited by your plan's QPS. To pass larger input quantity limits, upgrade your plan to get higher QPS.
441
+ url, params = @sdk_configuration.get_server_details
442
+ base_url = Utils.template_url(url, params)
443
+ url = "#{base_url}/twitter/tweets/lookup"
444
+ headers = {}
445
+ headers = T.cast(headers, T::Hash[String, String])
446
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :request, :json)
447
+ headers["content-type"] = req_content_type
448
+ raise StandardError, "request body is required" if data.nil? && form.nil?
449
+
450
+ if form && !form.empty?
451
+ body = Utils.encode_form(form)
452
+ elsif Utils.match_content_type(req_content_type, "application/x-www-form-urlencoded")
453
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
454
+ else
455
+ body = data
456
+ end
457
+
458
+ headers["Accept"] = "application/json"
459
+ headers["user-agent"] = @sdk_configuration.user_agent
460
+ retries ||= @sdk_configuration.retry_config
461
+ retries ||= Utils::RetryConfig.new(
462
+ backoff: Utils::BackoffStrategy.new(
463
+ exponent: 1.5,
464
+ initial_interval: 500,
465
+ max_elapsed_time: 3_600_000,
466
+ max_interval: 60_000
467
+ ),
468
+ retry_connection_errors: true,
469
+ strategy: "backoff"
470
+ )
471
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
472
+ retry_options[:retry_statuses] = [408, 409, 429, 500, 501, 502, 503, 504, 505]
473
+
474
+ security = @sdk_configuration.security_source&.call
475
+
476
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
477
+ timeout ||= @sdk_configuration.timeout
478
+
479
+ connection = @sdk_configuration.client.dup
480
+ connection.use(Utils::RetryMiddleware, retry_options)
481
+
482
+ hook_ctx = SDKHooks::HookContext.new(
483
+ config: @sdk_configuration,
484
+ base_url: base_url,
485
+ oauth2_scopes: nil,
486
+ operation_id: "tweetsLookup",
487
+ security_source: @sdk_configuration.security_source
488
+ )
489
+
490
+ error = T.let(nil, T.nilable(StandardError))
491
+ http_response = T.let(nil, T.nilable(Faraday::Response))
492
+
493
+ begin
494
+ http_response = T.must(connection).post(url) do |req|
495
+ req.body = body
496
+ req.headers.merge!(headers)
497
+ req.options.timeout = timeout unless timeout.nil?
498
+ Utils.configure_request_security(req, security)
499
+ http_headers&.each do |key, value|
500
+ req.headers[key.to_s] = value
501
+ end
502
+
503
+ @sdk_configuration.hooks.before_request(
504
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
505
+ hook_ctx: hook_ctx
506
+ ),
507
+ request: req
508
+ )
509
+ end
510
+
511
+ rescue StandardError => e
512
+ error = e
513
+ ensure
514
+ if http_response.nil? || Utils.error_status?(http_response.status)
515
+ http_response = @sdk_configuration.hooks.after_error(
516
+ error: error,
517
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
518
+ hook_ctx: hook_ctx
519
+ ),
520
+ response: http_response
521
+ )
522
+ else
523
+ http_response = @sdk_configuration.hooks.after_success(
524
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
525
+ hook_ctx: hook_ctx
526
+ ),
527
+ response: http_response
528
+ )
529
+ end
530
+
531
+ if http_response.nil?
532
+ raise error if !error.nil?
533
+ raise "no response"
534
+ end
535
+ end
536
+
537
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
538
+ if Utils.match_status_code(http_response.status, ["200"])
539
+ if Utils.match_content_type(content_type, "application/json")
540
+ http_response = @sdk_configuration.hooks.after_success(
541
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
542
+ hook_ctx: hook_ctx
543
+ ),
544
+ response: http_response
545
+ )
546
+ response_data = http_response.env.response_body
547
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::GetTweetsByIdResponse)
548
+ response = Models::Operations::TweetsLookupResponse.new(
549
+ status_code: http_response.status,
550
+ content_type: content_type,
551
+ raw_response: http_response,
552
+ get_tweets_by_id_response: T.unsafe(obj)
553
+ )
554
+
555
+ return response
556
+ else
557
+ raise(
558
+ ::XapiScraper::Models::Errors::APIError.new(
559
+ status_code: http_response.status,
560
+ body: http_response.env.response_body,
561
+ raw_response: http_response
562
+ ),
563
+ "Unknown content type received"
564
+ )
565
+ end
566
+ elsif Utils.match_status_code(http_response.status, ["422"])
567
+ if Utils.match_content_type(content_type, "application/json")
568
+ http_response = @sdk_configuration.hooks.after_success(
569
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
570
+ hook_ctx: hook_ctx
571
+ ),
572
+ response: http_response
573
+ )
574
+ response_data = http_response.env.response_body
575
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
576
+ obj.raw_response = http_response
577
+ raise obj
578
+ else
579
+ raise(
580
+ ::XapiScraper::Models::Errors::APIError.new(
581
+ status_code: http_response.status,
582
+ body: http_response.env.response_body,
583
+ raw_response: http_response
584
+ ),
585
+ "Unknown content type received"
586
+ )
587
+ end
588
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
589
+ raise(
590
+ ::XapiScraper::Models::Errors::APIError.new(
591
+ status_code: http_response.status,
592
+ body: http_response.env.response_body,
593
+ raw_response: http_response
594
+ ),
595
+ "API error occurred"
596
+ )
597
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
598
+ raise(
599
+ ::XapiScraper::Models::Errors::APIError.new(
600
+ status_code: http_response.status,
601
+ body: http_response.env.response_body,
602
+ raw_response: http_response
603
+ ),
604
+ "API error occurred"
605
+ )
606
+ else
607
+ raise(
608
+ ::XapiScraper::Models::Errors::APIError.new(
609
+ status_code: http_response.status,
610
+ body: http_response.env.response_body,
611
+ raw_response: http_response
612
+ ),
613
+ "Unknown status code received"
614
+ )
615
+
616
+ end
617
+ end
618
+
619
+ sig {
620
+ params(
621
+ request: Models::Operations::TweetsSimilarRequest,
622
+ retries: T.nilable(Utils::RetryConfig),
623
+ timeout_ms: T.nilable(Integer),
624
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
625
+ )
626
+ .returns(Models::Operations::TweetsSimilarResponse)
627
+ }
628
+ def similar(request:, retries: nil, timeout_ms: nil, http_headers: nil)
629
+ # similar - Get Similar Tweets
630
+ # Get similar tweets
631
+ url, params = @sdk_configuration.get_server_details
632
+ base_url = Utils.template_url(url, params)
633
+ url = Utils.generate_url(
634
+ Models::Operations::TweetsSimilarRequest,
635
+ base_url,
636
+ "/twitter/tweets/{tweet_id}/similar",
637
+ request
638
+ )
639
+ headers = {}
640
+ headers = T.cast(headers, T::Hash[String, String])
641
+ headers["Accept"] = "application/json"
642
+ headers["user-agent"] = @sdk_configuration.user_agent
643
+ retries ||= @sdk_configuration.retry_config
644
+ retries ||= Utils::RetryConfig.new(
645
+ backoff: Utils::BackoffStrategy.new(
646
+ exponent: 1.5,
647
+ initial_interval: 500,
648
+ max_elapsed_time: 3_600_000,
649
+ max_interval: 60_000
650
+ ),
651
+ retry_connection_errors: true,
652
+ strategy: "backoff"
653
+ )
654
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
655
+ retry_options[:retry_statuses] = [408, 409, 429, 500, 501, 502, 503, 504, 505]
656
+
657
+ security = @sdk_configuration.security_source&.call
658
+
659
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
660
+ timeout ||= @sdk_configuration.timeout
661
+
662
+ connection = @sdk_configuration.client.dup
663
+ connection.use(Utils::RetryMiddleware, retry_options)
664
+
665
+ hook_ctx = SDKHooks::HookContext.new(
666
+ config: @sdk_configuration,
667
+ base_url: base_url,
668
+ oauth2_scopes: nil,
669
+ operation_id: "tweetsSimilar",
670
+ security_source: @sdk_configuration.security_source
671
+ )
672
+
673
+ error = T.let(nil, T.nilable(StandardError))
674
+ http_response = T.let(nil, T.nilable(Faraday::Response))
675
+
676
+ begin
677
+ http_response = T.must(connection).get(url) do |req|
678
+ req.headers.merge!(headers)
679
+ req.options.timeout = timeout unless timeout.nil?
680
+ Utils.configure_request_security(req, security)
681
+ http_headers&.each do |key, value|
682
+ req.headers[key.to_s] = value
683
+ end
684
+
685
+ @sdk_configuration.hooks.before_request(
686
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
687
+ hook_ctx: hook_ctx
688
+ ),
689
+ request: req
690
+ )
691
+ end
692
+
693
+ rescue StandardError => e
694
+ error = e
695
+ ensure
696
+ if http_response.nil? || Utils.error_status?(http_response.status)
697
+ http_response = @sdk_configuration.hooks.after_error(
698
+ error: error,
699
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
700
+ hook_ctx: hook_ctx
701
+ ),
702
+ response: http_response
703
+ )
704
+ else
705
+ http_response = @sdk_configuration.hooks.after_success(
706
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
707
+ hook_ctx: hook_ctx
708
+ ),
709
+ response: http_response
710
+ )
711
+ end
712
+
713
+ if http_response.nil?
714
+ raise error if !error.nil?
715
+ raise "no response"
716
+ end
717
+ end
718
+
719
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
720
+ if Utils.match_status_code(http_response.status, ["200"])
721
+ if Utils.match_content_type(content_type, "application/json")
722
+ http_response = @sdk_configuration.hooks.after_success(
723
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
724
+ hook_ctx: hook_ctx
725
+ ),
726
+ response: http_response
727
+ )
728
+ response_data = http_response.env.response_body
729
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::GetTweetsByIdResponse)
730
+ response = Models::Operations::TweetsSimilarResponse.new(
731
+ status_code: http_response.status,
732
+ content_type: content_type,
733
+ raw_response: http_response,
734
+ get_tweets_by_id_response: T.unsafe(obj)
735
+ )
736
+
737
+ return response
738
+ else
739
+ raise(
740
+ ::XapiScraper::Models::Errors::APIError.new(
741
+ status_code: http_response.status,
742
+ body: http_response.env.response_body,
743
+ raw_response: http_response
744
+ ),
745
+ "Unknown content type received"
746
+ )
747
+ end
748
+ elsif Utils.match_status_code(http_response.status, ["422"])
749
+ if Utils.match_content_type(content_type, "application/json")
750
+ http_response = @sdk_configuration.hooks.after_success(
751
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
752
+ hook_ctx: hook_ctx
753
+ ),
754
+ response: http_response
755
+ )
756
+ response_data = http_response.env.response_body
757
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
758
+ obj.raw_response = http_response
759
+ raise obj
760
+ else
761
+ raise(
762
+ ::XapiScraper::Models::Errors::APIError.new(
763
+ status_code: http_response.status,
764
+ body: http_response.env.response_body,
765
+ raw_response: http_response
766
+ ),
767
+ "Unknown content type received"
768
+ )
769
+ end
770
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
771
+ raise(
772
+ ::XapiScraper::Models::Errors::APIError.new(
773
+ status_code: http_response.status,
774
+ body: http_response.env.response_body,
775
+ raw_response: http_response
776
+ ),
777
+ "API error occurred"
778
+ )
779
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
780
+ raise(
781
+ ::XapiScraper::Models::Errors::APIError.new(
782
+ status_code: http_response.status,
783
+ body: http_response.env.response_body,
784
+ raw_response: http_response
785
+ ),
786
+ "API error occurred"
787
+ )
788
+ else
789
+ raise(
790
+ ::XapiScraper::Models::Errors::APIError.new(
791
+ status_code: http_response.status,
792
+ body: http_response.env.response_body,
793
+ raw_response: http_response
794
+ ),
795
+ "Unknown status code received"
796
+ )
797
+
798
+ end
799
+ end
800
+ end
801
+ end