x-twitter-scraper 0.7.2 → 0.9.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 (157) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +3 -3
  4. data/lib/x_twitter_scraper/models/credit_topup_balance_response.rb +5 -5
  5. data/lib/x_twitter_scraper/models/draw_export_params.rb +8 -3
  6. data/lib/x_twitter_scraper/models/draw_list_params.rb +2 -2
  7. data/lib/x_twitter_scraper/models/error.rb +8 -0
  8. data/lib/x_twitter_scraper/models/event_list_params.rb +13 -5
  9. data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +731 -82
  10. data/lib/x_twitter_scraper/models/extraction_estimate_cost_response.rb +1 -0
  11. data/lib/x_twitter_scraper/models/extraction_export_results_params.rb +145 -1
  12. data/lib/x_twitter_scraper/models/extraction_list_params.rb +2 -2
  13. data/lib/x_twitter_scraper/models/extraction_retrieve_params.rb +70 -3
  14. data/lib/x_twitter_scraper/models/extraction_run_params.rb +662 -1
  15. data/lib/x_twitter_scraper/models/extraction_run_response.rb +27 -48
  16. data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +8 -8
  17. data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +9 -9
  18. data/lib/x_twitter_scraper/models/monitor.rb +29 -1
  19. data/lib/x_twitter_scraper/models/paginated_tweets.rb +4 -4
  20. data/lib/x_twitter_scraper/models/paginated_users.rb +5 -5
  21. data/lib/x_twitter_scraper/models/support/attachment_download_params.rb +28 -0
  22. data/lib/x_twitter_scraper/models/x/community_retrieve_members_params.rb +113 -1
  23. data/lib/x_twitter_scraper/models/x/community_retrieve_moderators_params.rb +117 -1
  24. data/lib/x_twitter_scraper/models/x/list_retrieve_followers_params.rb +117 -6
  25. data/lib/x_twitter_scraper/models/x/list_retrieve_members_params.rb +116 -1
  26. data/lib/x_twitter_scraper/models/x/tweet_get_favoriters_params.rb +117 -6
  27. data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +153 -1
  28. data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +246 -16
  29. data/lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb +3 -2
  30. data/lib/x_twitter_scraper/models/x/tweet_get_retweeters_params.rb +117 -6
  31. data/lib/x_twitter_scraper/models/x/tweet_search_params.rb +187 -14
  32. data/lib/x_twitter_scraper/models/x/tweet_search_response.rb +299 -0
  33. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_params.rb +143 -10
  34. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_response.rb +241 -0
  35. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rb +117 -6
  36. data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +143 -10
  37. data/lib/x_twitter_scraper/models/x/user_retrieve_following_response.rb +241 -0
  38. data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +153 -1
  39. data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +153 -1
  40. data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +153 -1
  41. data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +159 -7
  42. data/lib/x_twitter_scraper/models/x/user_retrieve_search_params.rb +116 -1
  43. data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +159 -7
  44. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rb +157 -8
  45. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rb +245 -0
  46. data/lib/x_twitter_scraper/models/x/x_account.rb +7 -11
  47. data/lib/x_twitter_scraper/resources/credits.rb +2 -2
  48. data/lib/x_twitter_scraper/resources/draws.rb +5 -2
  49. data/lib/x_twitter_scraper/resources/events.rb +10 -4
  50. data/lib/x_twitter_scraper/resources/extractions.rb +383 -84
  51. data/lib/x_twitter_scraper/resources/guest_wallets.rb +9 -13
  52. data/lib/x_twitter_scraper/resources/support/attachments.rb +42 -0
  53. data/lib/x_twitter_scraper/resources/support.rb +5 -0
  54. data/lib/x_twitter_scraper/resources/x/communities.rb +95 -4
  55. data/lib/x_twitter_scraper/resources/x/lists.rb +96 -5
  56. data/lib/x_twitter_scraper/resources/x/tweets.rb +286 -28
  57. data/lib/x_twitter_scraper/resources/x/users.rb +531 -41
  58. data/lib/x_twitter_scraper/version.rb +1 -1
  59. data/lib/x_twitter_scraper.rb +7 -1
  60. data/rbi/x_twitter_scraper/models/credit_topup_balance_response.rbi +6 -6
  61. data/rbi/x_twitter_scraper/models/draw_export_params.rbi +6 -3
  62. data/rbi/x_twitter_scraper/models/draw_list_params.rbi +2 -2
  63. data/rbi/x_twitter_scraper/models/error.rbi +40 -0
  64. data/rbi/x_twitter_scraper/models/event_list_params.rbi +15 -4
  65. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_params.rbi +1338 -86
  66. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_response.rbi +5 -0
  67. data/rbi/x_twitter_scraper/models/extraction_export_results_params.rbi +198 -0
  68. data/rbi/x_twitter_scraper/models/extraction_list_params.rbi +2 -2
  69. data/rbi/x_twitter_scraper/models/extraction_retrieve_params.rbi +194 -2
  70. data/rbi/x_twitter_scraper/models/extraction_run_params.rbi +1221 -0
  71. data/rbi/x_twitter_scraper/models/extraction_run_response.rbi +35 -162
  72. data/rbi/x_twitter_scraper/models/guest_wallet_create_response.rbi +8 -6
  73. data/rbi/x_twitter_scraper/models/guest_wallet_topup_response.rbi +9 -7
  74. data/rbi/x_twitter_scraper/models/monitor.rbi +54 -3
  75. data/rbi/x_twitter_scraper/models/paginated_tweets.rbi +4 -4
  76. data/rbi/x_twitter_scraper/models/paginated_users.rbi +5 -5
  77. data/rbi/x_twitter_scraper/models/support/attachment_download_params.rbi +51 -0
  78. data/rbi/x_twitter_scraper/models/x/community_retrieve_members_params.rbi +154 -0
  79. data/rbi/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbi +154 -0
  80. data/rbi/x_twitter_scraper/models/x/list_retrieve_followers_params.rbi +160 -8
  81. data/rbi/x_twitter_scraper/models/x/list_retrieve_members_params.rbi +154 -0
  82. data/rbi/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbi +160 -8
  83. data/rbi/x_twitter_scraper/models/x/tweet_get_quotes_params.rbi +209 -0
  84. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_params.rbi +403 -20
  85. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_response.rbi +3 -2
  86. data/rbi/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbi +160 -8
  87. data/rbi/x_twitter_scraper/models/x/tweet_search_params.rbi +279 -16
  88. data/rbi/x_twitter_scraper/models/x/tweet_search_response.rbi +543 -0
  89. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_params.rbi +228 -12
  90. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_response.rbi +440 -0
  91. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbi +160 -8
  92. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_params.rbi +228 -12
  93. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_response.rbi +440 -0
  94. data/rbi/x_twitter_scraper/models/x/user_retrieve_likes_params.rbi +209 -0
  95. data/rbi/x_twitter_scraper/models/x/user_retrieve_media_params.rbi +209 -0
  96. data/rbi/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbi +209 -0
  97. data/rbi/x_twitter_scraper/models/x/user_retrieve_replies_params.rbi +217 -8
  98. data/rbi/x_twitter_scraper/models/x/user_retrieve_search_params.rbi +154 -0
  99. data/rbi/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbi +217 -8
  100. data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbi +248 -10
  101. data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbi +440 -0
  102. data/rbi/x_twitter_scraper/models/x/x_account.rbi +9 -15
  103. data/rbi/x_twitter_scraper/resources/credits.rbi +2 -2
  104. data/rbi/x_twitter_scraper/resources/draws.rbi +3 -2
  105. data/rbi/x_twitter_scraper/resources/events.rbi +5 -2
  106. data/rbi/x_twitter_scraper/resources/extractions.rbi +525 -83
  107. data/rbi/x_twitter_scraper/resources/guest_wallets.rbi +9 -13
  108. data/rbi/x_twitter_scraper/resources/support/attachments.rbi +35 -0
  109. data/rbi/x_twitter_scraper/resources/support.rbi +4 -0
  110. data/rbi/x_twitter_scraper/resources/x/communities.rbi +84 -0
  111. data/rbi/x_twitter_scraper/resources/x/lists.rbi +87 -4
  112. data/rbi/x_twitter_scraper/resources/x/tweets.rbi +307 -31
  113. data/rbi/x_twitter_scraper/resources/x/users.rbi +558 -34
  114. data/sig/x_twitter_scraper/models/error.rbs +16 -0
  115. data/sig/x_twitter_scraper/models/event_list_params.rbs +7 -0
  116. data/sig/x_twitter_scraper/models/extraction_estimate_cost_params.rbs +605 -1
  117. data/sig/x_twitter_scraper/models/extraction_estimate_cost_response.rbs +2 -0
  118. data/sig/x_twitter_scraper/models/extraction_export_results_params.rbs +127 -1
  119. data/sig/x_twitter_scraper/models/extraction_retrieve_params.rbs +74 -1
  120. data/sig/x_twitter_scraper/models/extraction_run_params.rbs +611 -1
  121. data/sig/x_twitter_scraper/models/extraction_run_response.rbs +29 -67
  122. data/sig/x_twitter_scraper/models/guest_wallet_create_response.rbs +4 -4
  123. data/sig/x_twitter_scraper/models/guest_wallet_topup_response.rbs +4 -4
  124. data/sig/x_twitter_scraper/models/monitor.rbs +29 -3
  125. data/sig/x_twitter_scraper/models/support/attachment_download_params.rbs +32 -0
  126. data/sig/x_twitter_scraper/models/x/community_retrieve_members_params.rbs +103 -1
  127. data/sig/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbs +102 -1
  128. data/sig/x_twitter_scraper/models/x/list_retrieve_followers_params.rbs +103 -1
  129. data/sig/x_twitter_scraper/models/x/list_retrieve_members_params.rbs +103 -1
  130. data/sig/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbs +103 -1
  131. data/sig/x_twitter_scraper/models/x/tweet_get_quotes_params.rbs +134 -1
  132. data/sig/x_twitter_scraper/models/x/tweet_get_replies_params.rbs +207 -2
  133. data/sig/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbs +103 -1
  134. data/sig/x_twitter_scraper/models/x/tweet_search_params.rbs +154 -1
  135. data/sig/x_twitter_scraper/models/x/tweet_search_response.rbs +258 -0
  136. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_params.rbs +119 -1
  137. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_response.rbs +216 -0
  138. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbs +103 -1
  139. data/sig/x_twitter_scraper/models/x/user_retrieve_following_params.rbs +119 -1
  140. data/sig/x_twitter_scraper/models/x/user_retrieve_following_response.rbs +216 -0
  141. data/sig/x_twitter_scraper/models/x/user_retrieve_likes_params.rbs +134 -1
  142. data/sig/x_twitter_scraper/models/x/user_retrieve_media_params.rbs +134 -1
  143. data/sig/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbs +134 -1
  144. data/sig/x_twitter_scraper/models/x/user_retrieve_replies_params.rbs +134 -1
  145. data/sig/x_twitter_scraper/models/x/user_retrieve_search_params.rbs +102 -1
  146. data/sig/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbs +134 -1
  147. data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbs +137 -1
  148. data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbs +216 -0
  149. data/sig/x_twitter_scraper/resources/events.rbs +1 -0
  150. data/sig/x_twitter_scraper/resources/extractions.rbs +137 -0
  151. data/sig/x_twitter_scraper/resources/support/attachments.rbs +15 -0
  152. data/sig/x_twitter_scraper/resources/support.rbs +2 -0
  153. data/sig/x_twitter_scraper/resources/x/communities.rbs +28 -0
  154. data/sig/x_twitter_scraper/resources/x/lists.rbs +28 -0
  155. data/sig/x_twitter_scraper/resources/x/tweets.rbs +93 -1
  156. data/sig/x_twitter_scraper/resources/x/users.rbs +173 -3
  157. metadata +19 -1
@@ -0,0 +1,543 @@
1
+ # typed: strong
2
+
3
+ module XTwitterScraper
4
+ module Models
5
+ module X
6
+ # No-mode search, user Tweet, user reply, and direct reply reads use automatic
7
+ # coverage. Shape, filters, aliases, and billing stay compatible. Unprefixed
8
+ # cursors remain legacy. Follow next_cursor while has_next_page is true. An empty
9
+ # filtered page can still have has_next_page true.
10
+ module TweetSearchResponse
11
+ extend XTwitterScraper::Internal::Type::Union
12
+
13
+ Variants =
14
+ T.type_alias do
15
+ T.any(
16
+ XTwitterScraper::PaginatedTweets,
17
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse
18
+ )
19
+ end
20
+
21
+ class TweetSearchCoverageResponse < XTwitterScraper::Models::PaginatedTweets
22
+ OrHash =
23
+ T.type_alias do
24
+ T.any(
25
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse,
26
+ XTwitterScraper::Internal::AnyHash
27
+ )
28
+ end
29
+
30
+ # Coverage evidence across parallel search strategies.
31
+ sig do
32
+ returns(
33
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic
34
+ )
35
+ end
36
+ attr_reader :diagnostic
37
+
38
+ sig do
39
+ params(
40
+ diagnostic:
41
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::OrHash
42
+ ).void
43
+ end
44
+ attr_writer :diagnostic
45
+
46
+ sig do
47
+ returns(
48
+ T.nilable(
49
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::HasNextPage::TaggedBoolean
50
+ )
51
+ )
52
+ end
53
+ attr_reader :has_next_page
54
+
55
+ sig do
56
+ params(
57
+ has_next_page:
58
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::HasNextPage::OrBoolean
59
+ ).void
60
+ end
61
+ attr_writer :has_next_page
62
+
63
+ sig do
64
+ returns(
65
+ T.nilable(
66
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::NextCursor::TaggedSymbol
67
+ )
68
+ )
69
+ end
70
+ attr_reader :next_cursor
71
+
72
+ sig do
73
+ params(
74
+ next_cursor:
75
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::NextCursor::OrSymbol
76
+ ).void
77
+ end
78
+ attr_writer :next_cursor
79
+
80
+ # No-mode search, user Tweet, user reply, and direct reply reads use automatic
81
+ # coverage. Shape, filters, aliases, and billing stay compatible. Unprefixed
82
+ # cursors remain legacy. Follow next_cursor while has_next_page is true. An empty
83
+ # filtered page can still have has_next_page true.
84
+ sig do
85
+ params(
86
+ diagnostic:
87
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::OrHash,
88
+ has_next_page:
89
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::HasNextPage::OrBoolean,
90
+ next_cursor:
91
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::NextCursor::OrSymbol
92
+ ).returns(T.attached_class)
93
+ end
94
+ def self.new(
95
+ # Coverage evidence across parallel search strategies.
96
+ diagnostic:,
97
+ has_next_page: nil,
98
+ next_cursor: nil
99
+ )
100
+ end
101
+
102
+ sig do
103
+ override.returns(
104
+ {
105
+ diagnostic:
106
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic,
107
+ has_next_page:
108
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::HasNextPage::TaggedBoolean,
109
+ next_cursor:
110
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::NextCursor::TaggedSymbol
111
+ }
112
+ )
113
+ end
114
+ def to_hash
115
+ end
116
+
117
+ class Diagnostic < XTwitterScraper::Internal::Type::BaseModel
118
+ OrHash =
119
+ T.type_alias do
120
+ T.any(
121
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic,
122
+ XTwitterScraper::Internal::AnyHash
123
+ )
124
+ end
125
+
126
+ # True when every strategy exhausted its source.
127
+ sig { returns(T::Boolean) }
128
+ attr_accessor :complete
129
+
130
+ sig { returns(Integer) }
131
+ attr_accessor :cursor_failure_count
132
+
133
+ sig { returns(T::Boolean) }
134
+ attr_accessor :deadline_reached
135
+
136
+ sig { returns(Integer) }
137
+ attr_accessor :duplicate_count
138
+
139
+ sig { returns(Integer) }
140
+ attr_accessor :failed_strategy_count
141
+
142
+ sig { returns(Integer) }
143
+ attr_accessor :malformed_count
144
+
145
+ sig { returns(Integer) }
146
+ attr_accessor :pages_fetched
147
+
148
+ # Whether bounded time windows ran in parallel.
149
+ sig { returns(T::Boolean) }
150
+ attr_accessor :partitioned
151
+
152
+ # Whether credits or the requested limit reduced output.
153
+ sig { returns(T::Boolean) }
154
+ attr_accessor :response_truncated
155
+
156
+ sig { returns(T::Boolean) }
157
+ attr_accessor :result_limit_reached
158
+
159
+ sig { returns(Integer) }
160
+ attr_accessor :returned_tweets
161
+
162
+ sig { returns(Integer) }
163
+ attr_accessor :stalled_strategy_count
164
+
165
+ sig do
166
+ returns(
167
+ T::Array[
168
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy
169
+ ]
170
+ )
171
+ end
172
+ attr_accessor :strategies
173
+
174
+ sig { returns(Integer) }
175
+ attr_accessor :strategy_count
176
+
177
+ sig { returns(Integer) }
178
+ attr_accessor :unique_tweets
179
+
180
+ # Coverage evidence across parallel search strategies.
181
+ sig do
182
+ params(
183
+ complete: T::Boolean,
184
+ cursor_failure_count: Integer,
185
+ deadline_reached: T::Boolean,
186
+ duplicate_count: Integer,
187
+ failed_strategy_count: Integer,
188
+ malformed_count: Integer,
189
+ pages_fetched: Integer,
190
+ partitioned: T::Boolean,
191
+ response_truncated: T::Boolean,
192
+ result_limit_reached: T::Boolean,
193
+ returned_tweets: Integer,
194
+ stalled_strategy_count: Integer,
195
+ strategies:
196
+ T::Array[
197
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::OrHash
198
+ ],
199
+ strategy_count: Integer,
200
+ unique_tweets: Integer
201
+ ).returns(T.attached_class)
202
+ end
203
+ def self.new(
204
+ # True when every strategy exhausted its source.
205
+ complete:,
206
+ cursor_failure_count:,
207
+ deadline_reached:,
208
+ duplicate_count:,
209
+ failed_strategy_count:,
210
+ malformed_count:,
211
+ pages_fetched:,
212
+ # Whether bounded time windows ran in parallel.
213
+ partitioned:,
214
+ # Whether credits or the requested limit reduced output.
215
+ response_truncated:,
216
+ result_limit_reached:,
217
+ returned_tweets:,
218
+ stalled_strategy_count:,
219
+ strategies:,
220
+ strategy_count:,
221
+ unique_tweets:
222
+ )
223
+ end
224
+
225
+ sig do
226
+ override.returns(
227
+ {
228
+ complete: T::Boolean,
229
+ cursor_failure_count: Integer,
230
+ deadline_reached: T::Boolean,
231
+ duplicate_count: Integer,
232
+ failed_strategy_count: Integer,
233
+ malformed_count: Integer,
234
+ pages_fetched: Integer,
235
+ partitioned: T::Boolean,
236
+ response_truncated: T::Boolean,
237
+ result_limit_reached: T::Boolean,
238
+ returned_tweets: Integer,
239
+ stalled_strategy_count: Integer,
240
+ strategies:
241
+ T::Array[
242
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy
243
+ ],
244
+ strategy_count: Integer,
245
+ unique_tweets: Integer
246
+ }
247
+ )
248
+ end
249
+ def to_hash
250
+ end
251
+
252
+ class Strategy < XTwitterScraper::Internal::Type::BaseModel
253
+ OrHash =
254
+ T.type_alias do
255
+ T.any(
256
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy,
257
+ XTwitterScraper::Internal::AnyHash
258
+ )
259
+ end
260
+
261
+ sig { returns(Integer) }
262
+ attr_accessor :duplicate_count
263
+
264
+ sig { returns(Integer) }
265
+ attr_accessor :pages_fetched
266
+
267
+ sig do
268
+ returns(
269
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::QueryType::TaggedSymbol
270
+ )
271
+ end
272
+ attr_accessor :query_type
273
+
274
+ sig do
275
+ returns(
276
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
277
+ )
278
+ end
279
+ attr_accessor :stop_reason
280
+
281
+ sig { returns(Integer) }
282
+ attr_accessor :strategy
283
+
284
+ sig { returns(Integer) }
285
+ attr_accessor :unique_added
286
+
287
+ # Non-overlapping time partition used by one strategy.
288
+ sig do
289
+ returns(
290
+ T.nilable(
291
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::Window
292
+ )
293
+ )
294
+ end
295
+ attr_reader :window
296
+
297
+ sig do
298
+ params(
299
+ window:
300
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::Window::OrHash
301
+ ).void
302
+ end
303
+ attr_writer :window
304
+
305
+ sig do
306
+ params(
307
+ duplicate_count: Integer,
308
+ pages_fetched: Integer,
309
+ query_type:
310
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::QueryType::OrSymbol,
311
+ stop_reason:
312
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::OrSymbol,
313
+ strategy: Integer,
314
+ unique_added: Integer,
315
+ window:
316
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::Window::OrHash
317
+ ).returns(T.attached_class)
318
+ end
319
+ def self.new(
320
+ duplicate_count:,
321
+ pages_fetched:,
322
+ query_type:,
323
+ stop_reason:,
324
+ strategy:,
325
+ unique_added:,
326
+ # Non-overlapping time partition used by one strategy.
327
+ window: nil
328
+ )
329
+ end
330
+
331
+ sig do
332
+ override.returns(
333
+ {
334
+ duplicate_count: Integer,
335
+ pages_fetched: Integer,
336
+ query_type:
337
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::QueryType::TaggedSymbol,
338
+ stop_reason:
339
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol,
340
+ strategy: Integer,
341
+ unique_added: Integer,
342
+ window:
343
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::Window
344
+ }
345
+ )
346
+ end
347
+ def to_hash
348
+ end
349
+
350
+ module QueryType
351
+ extend XTwitterScraper::Internal::Type::Enum
352
+
353
+ TaggedSymbol =
354
+ T.type_alias do
355
+ T.all(
356
+ Symbol,
357
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::QueryType
358
+ )
359
+ end
360
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
361
+
362
+ LATEST =
363
+ T.let(
364
+ :Latest,
365
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::QueryType::TaggedSymbol
366
+ )
367
+ TOP =
368
+ T.let(
369
+ :Top,
370
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::QueryType::TaggedSymbol
371
+ )
372
+
373
+ sig do
374
+ override.returns(
375
+ T::Array[
376
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::QueryType::TaggedSymbol
377
+ ]
378
+ )
379
+ end
380
+ def self.values
381
+ end
382
+ end
383
+
384
+ module StopReason
385
+ extend XTwitterScraper::Internal::Type::Enum
386
+
387
+ TaggedSymbol =
388
+ T.type_alias do
389
+ T.all(
390
+ Symbol,
391
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason
392
+ )
393
+ end
394
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
395
+
396
+ CURSOR_FAILURE =
397
+ T.let(
398
+ :cursor_failure,
399
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
400
+ )
401
+ DEADLINE =
402
+ T.let(
403
+ :deadline,
404
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
405
+ )
406
+ EXHAUSTED =
407
+ T.let(
408
+ :exhausted,
409
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
410
+ )
411
+ FAILED =
412
+ T.let(
413
+ :failed,
414
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
415
+ )
416
+ PAGE_LIMIT =
417
+ T.let(
418
+ :page_limit,
419
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
420
+ )
421
+ RESULT_LIMIT =
422
+ T.let(
423
+ :result_limit,
424
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
425
+ )
426
+ STALLED =
427
+ T.let(
428
+ :stalled,
429
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
430
+ )
431
+
432
+ sig do
433
+ override.returns(
434
+ T::Array[
435
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
436
+ ]
437
+ )
438
+ end
439
+ def self.values
440
+ end
441
+ end
442
+
443
+ class Window < XTwitterScraper::Internal::Type::BaseModel
444
+ OrHash =
445
+ T.type_alias do
446
+ T.any(
447
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::Diagnostic::Strategy::Window,
448
+ XTwitterScraper::Internal::AnyHash
449
+ )
450
+ end
451
+
452
+ sig { returns(Time) }
453
+ attr_accessor :since_time
454
+
455
+ sig { returns(Time) }
456
+ attr_accessor :until_time
457
+
458
+ # Non-overlapping time partition used by one strategy.
459
+ sig do
460
+ params(since_time: Time, until_time: Time).returns(
461
+ T.attached_class
462
+ )
463
+ end
464
+ def self.new(since_time:, until_time:)
465
+ end
466
+
467
+ sig { override.returns({ since_time: Time, until_time: Time }) }
468
+ def to_hash
469
+ end
470
+ end
471
+ end
472
+ end
473
+
474
+ module HasNextPage
475
+ extend XTwitterScraper::Internal::Type::Enum
476
+
477
+ TaggedBoolean =
478
+ T.type_alias do
479
+ T.all(
480
+ T::Boolean,
481
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::HasNextPage
482
+ )
483
+ end
484
+ OrBoolean = T.type_alias { T::Boolean }
485
+
486
+ FALSE =
487
+ T.let(
488
+ false,
489
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::HasNextPage::TaggedBoolean
490
+ )
491
+
492
+ sig do
493
+ override.returns(
494
+ T::Array[
495
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::HasNextPage::TaggedBoolean
496
+ ]
497
+ )
498
+ end
499
+ def self.values
500
+ end
501
+ end
502
+
503
+ module NextCursor
504
+ extend XTwitterScraper::Internal::Type::Enum
505
+
506
+ TaggedSymbol =
507
+ T.type_alias do
508
+ T.all(
509
+ Symbol,
510
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::NextCursor
511
+ )
512
+ end
513
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
514
+
515
+ EMPTY =
516
+ T.let(
517
+ :"",
518
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::NextCursor::TaggedSymbol
519
+ )
520
+
521
+ sig do
522
+ override.returns(
523
+ T::Array[
524
+ XTwitterScraper::Models::X::TweetSearchResponse::TweetSearchCoverageResponse::NextCursor::TaggedSymbol
525
+ ]
526
+ )
527
+ end
528
+ def self.values
529
+ end
530
+ end
531
+ end
532
+
533
+ sig do
534
+ override.returns(
535
+ T::Array[XTwitterScraper::Models::X::TweetSearchResponse::Variants]
536
+ )
537
+ end
538
+ def self.variants
539
+ end
540
+ end
541
+ end
542
+ end
543
+ end