x-twitter-scraper 0.10.4 → 0.10.6

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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +69 -29
  4. data/lib/x_twitter_scraper/client.rb +0 -13
  5. data/lib/x_twitter_scraper/file_part.rb +0 -3
  6. data/lib/x_twitter_scraper/internal/transport/base_client.rb +3 -211
  7. data/lib/x_twitter_scraper/internal/transport/pooled_net_requester.rb +2 -56
  8. data/lib/x_twitter_scraper/internal/type/array_of.rb +1 -77
  9. data/lib/x_twitter_scraper/internal/type/base_model.rb +3 -133
  10. data/lib/x_twitter_scraper/internal/type/base_page.rb +0 -13
  11. data/lib/x_twitter_scraper/internal/type/boolean.rb +0 -38
  12. data/lib/x_twitter_scraper/internal/type/converter.rb +0 -136
  13. data/lib/x_twitter_scraper/internal/type/enum.rb +1 -80
  14. data/lib/x_twitter_scraper/internal/type/file_input.rb +0 -39
  15. data/lib/x_twitter_scraper/internal/type/hash_of.rb +1 -77
  16. data/lib/x_twitter_scraper/internal/type/request_parameters.rb +0 -13
  17. data/lib/x_twitter_scraper/internal/type/union.rb +0 -101
  18. data/lib/x_twitter_scraper/internal/type/unknown.rb +0 -40
  19. data/lib/x_twitter_scraper/internal/util.rb +2 -307
  20. data/lib/x_twitter_scraper/models/account_retrieve_response.rb +0 -3
  21. data/lib/x_twitter_scraper/models/compose_create_params.rb +0 -4
  22. data/lib/x_twitter_scraper/models/compose_create_response.rb +0 -4
  23. data/lib/x_twitter_scraper/models/credit_retrieve_balance_response.rb +0 -3
  24. data/lib/x_twitter_scraper/models/credit_topup_balance_response.rb +0 -3
  25. data/lib/x_twitter_scraper/models/draft_list_params.rb +0 -3
  26. data/lib/x_twitter_scraper/models/draw_export_params.rb +0 -3
  27. data/lib/x_twitter_scraper/models/draw_list_params.rb +0 -3
  28. data/lib/x_twitter_scraper/models/draw_run_response.rb +0 -3
  29. data/lib/x_twitter_scraper/models/embedded_tweet.rb +0 -3
  30. data/lib/x_twitter_scraper/models/event.rb +0 -3
  31. data/lib/x_twitter_scraper/models/event_list_params.rb +0 -3
  32. data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +0 -3
  33. data/lib/x_twitter_scraper/models/extraction_list_params.rb +0 -3
  34. data/lib/x_twitter_scraper/models/extraction_run_params.rb +0 -3
  35. data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +0 -3
  36. data/lib/x_twitter_scraper/models/guest_wallet_retrieve_status_response.rb +0 -3
  37. data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +0 -3
  38. data/lib/x_twitter_scraper/models/radar_item.rb +0 -3
  39. data/lib/x_twitter_scraper/models/radar_retrieve_trending_topics_params.rb +0 -3
  40. data/lib/x_twitter_scraper/models/search_tweet.rb +0 -3
  41. data/lib/x_twitter_scraper/models/trend_list_params.rb +0 -3
  42. data/lib/x_twitter_scraper/models/webhook.rb +0 -3
  43. data/lib/x_twitter_scraper/models/x/communities/join_create_response.rb +0 -3
  44. data/lib/x_twitter_scraper/models/x/communities/join_delete_all_response.rb +0 -4
  45. data/lib/x_twitter_scraper/models/x/communities/tweet_list_by_community_params.rb +0 -4
  46. data/lib/x_twitter_scraper/models/x/communities/tweet_list_params.rb +0 -3
  47. data/lib/x_twitter_scraper/models/x/community_create_response.rb +0 -3
  48. data/lib/x_twitter_scraper/models/x/community_delete_response.rb +0 -3
  49. data/lib/x_twitter_scraper/models/x/community_retrieve_members_params.rb +0 -3
  50. data/lib/x_twitter_scraper/models/x/community_retrieve_moderators_params.rb +0 -4
  51. data/lib/x_twitter_scraper/models/x/community_retrieve_search_params.rb +0 -3
  52. data/lib/x_twitter_scraper/models/x/dm_retrieve_history_params.rb +0 -3
  53. data/lib/x_twitter_scraper/models/x/dm_retrieve_history_response.rb +0 -4
  54. data/lib/x_twitter_scraper/models/x/dm_send_response.rb +0 -3
  55. data/lib/x_twitter_scraper/models/x/list_retrieve_followers_params.rb +0 -3
  56. data/lib/x_twitter_scraper/models/x/list_retrieve_members_params.rb +0 -3
  57. data/lib/x_twitter_scraper/models/x/list_retrieve_tweets_params.rb +0 -3
  58. data/lib/x_twitter_scraper/models/x/media_upload_response.rb +0 -3
  59. data/lib/x_twitter_scraper/models/x/profile_update_avatar_response.rb +0 -3
  60. data/lib/x_twitter_scraper/models/x/profile_update_banner_response.rb +0 -3
  61. data/lib/x_twitter_scraper/models/x/profile_update_response.rb +0 -3
  62. data/lib/x_twitter_scraper/models/x/tweet_create_params.rb +0 -3
  63. data/lib/x_twitter_scraper/models/x/tweet_create_response.rb +0 -3
  64. data/lib/x_twitter_scraper/models/x/tweet_delete_response.rb +0 -3
  65. data/lib/x_twitter_scraper/models/x/tweet_detail.rb +0 -3
  66. data/lib/x_twitter_scraper/models/x/tweet_get_favoriters_params.rb +0 -3
  67. data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +0 -3
  68. data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +0 -3
  69. data/lib/x_twitter_scraper/models/x/tweet_get_retweeters_params.rb +0 -3
  70. data/lib/x_twitter_scraper/models/x/tweet_get_thread_params.rb +0 -3
  71. data/lib/x_twitter_scraper/models/x/tweet_retrieve_response.rb +0 -3
  72. data/lib/x_twitter_scraper/models/x/tweet_search_params.rb +0 -3
  73. data/lib/x_twitter_scraper/models/x/tweets/like_create_response.rb +0 -3
  74. data/lib/x_twitter_scraper/models/x/tweets/like_delete_response.rb +0 -3
  75. data/lib/x_twitter_scraper/models/x/tweets/retweet_create_response.rb +0 -3
  76. data/lib/x_twitter_scraper/models/x/tweets/retweet_delete_response.rb +0 -3
  77. data/lib/x_twitter_scraper/models/x/user_remove_follower_response.rb +0 -3
  78. data/lib/x_twitter_scraper/models/x/user_retrieve_batch_params.rb +0 -3
  79. data/lib/x_twitter_scraper/models/x/user_retrieve_batch_response.rb +0 -3
  80. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_params.rb +0 -3
  81. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rb +0 -4
  82. data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +0 -3
  83. data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +0 -3
  84. data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +0 -3
  85. data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +0 -3
  86. data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +0 -3
  87. data/lib/x_twitter_scraper/models/x/user_retrieve_search_params.rb +0 -3
  88. data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +0 -3
  89. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rb +0 -4
  90. data/lib/x_twitter_scraper/models/x/users/follow_create_response.rb +0 -3
  91. data/lib/x_twitter_scraper/models/x/users/follow_delete_all_response.rb +0 -3
  92. data/lib/x_twitter_scraper/models/x/write_action_retrieve_response.rb +0 -3
  93. data/lib/x_twitter_scraper/models/x/x_account.rb +0 -3
  94. data/lib/x_twitter_scraper/models/x_get_article_response.rb +0 -4
  95. data/lib/x_twitter_scraper/request_options.rb +0 -2
  96. data/lib/x_twitter_scraper/resources/drafts.rb +0 -3
  97. data/lib/x_twitter_scraper/resources/draws.rb +0 -6
  98. data/lib/x_twitter_scraper/resources/events.rb +0 -3
  99. data/lib/x_twitter_scraper/resources/extractions.rb +0 -9
  100. data/lib/x_twitter_scraper/resources/guest_wallets.rb +0 -6
  101. data/lib/x_twitter_scraper/resources/monitors/keywords.rb +1 -1
  102. data/lib/x_twitter_scraper/resources/monitors.rb +1 -1
  103. data/lib/x_twitter_scraper/resources/radar.rb +0 -3
  104. data/lib/x_twitter_scraper/resources/support/tickets.rb +0 -6
  105. data/lib/x_twitter_scraper/resources/trends.rb +0 -3
  106. data/lib/x_twitter_scraper/resources/x/communities/join.rb +0 -6
  107. data/lib/x_twitter_scraper/resources/x/communities/tweets.rb +0 -7
  108. data/lib/x_twitter_scraper/resources/x/communities.rb +0 -16
  109. data/lib/x_twitter_scraper/resources/x/dm.rb +0 -6
  110. data/lib/x_twitter_scraper/resources/x/lists.rb +0 -9
  111. data/lib/x_twitter_scraper/resources/x/media.rb +0 -3
  112. data/lib/x_twitter_scraper/resources/x/profile.rb +0 -9
  113. data/lib/x_twitter_scraper/resources/x/tweets/like.rb +0 -6
  114. data/lib/x_twitter_scraper/resources/x/tweets/retweet.rb +0 -6
  115. data/lib/x_twitter_scraper/resources/x/tweets.rb +0 -24
  116. data/lib/x_twitter_scraper/resources/x/users/follow.rb +0 -6
  117. data/lib/x_twitter_scraper/resources/x/users.rb +0 -38
  118. data/lib/x_twitter_scraper/resources/x.rb +0 -3
  119. data/lib/x_twitter_scraper/version.rb +1 -1
  120. data/lib/x_twitter_scraper.rb +0 -5
  121. data/rbi/x_twitter_scraper/client.rbi +0 -4
  122. data/rbi/x_twitter_scraper/file_part.rbi +0 -1
  123. data/rbi/x_twitter_scraper/internal/transport/base_client.rbi +0 -19
  124. data/rbi/x_twitter_scraper/internal/transport/pooled_net_requester.rbi +0 -9
  125. data/rbi/x_twitter_scraper/internal/type/array_of.rbi +0 -10
  126. data/rbi/x_twitter_scraper/internal/type/base_model.rbi +0 -47
  127. data/rbi/x_twitter_scraper/internal/type/base_page.rbi +0 -4
  128. data/rbi/x_twitter_scraper/internal/type/boolean.rbi +0 -8
  129. data/rbi/x_twitter_scraper/internal/type/converter.rbi +0 -36
  130. data/rbi/x_twitter_scraper/internal/type/enum.rbi +0 -20
  131. data/rbi/x_twitter_scraper/internal/type/file_input.rbi +0 -10
  132. data/rbi/x_twitter_scraper/internal/type/hash_of.rbi +0 -10
  133. data/rbi/x_twitter_scraper/internal/type/request_parameters.rbi +0 -4
  134. data/rbi/x_twitter_scraper/internal/type/union.rbi +0 -18
  135. data/rbi/x_twitter_scraper/internal/type/unknown.rbi +0 -8
  136. data/rbi/x_twitter_scraper/internal/util.rbi +0 -75
  137. data/rbi/x_twitter_scraper/internal.rbi +0 -2
  138. data/rbi/x_twitter_scraper/request_options.rbi +0 -1
  139. data/rbi/x_twitter_scraper/resources/monitors/keywords.rbi +1 -1
  140. data/rbi/x_twitter_scraper/resources/monitors.rbi +1 -1
  141. data/sig/x_twitter_scraper/internal/transport/base_client.rbs +0 -1
  142. metadata +13 -5
@@ -6,16 +6,13 @@
6
6
 
7
7
  module XTwitterScraper
8
8
  module Internal
9
- # @api private
10
9
  module Util
11
10
  extend XTwitterScraper::Internal::Util::SorbetRuntimeSupport
12
11
 
13
- # @api private
14
12
  sig { returns(Float) }
15
13
  def self.monotonic_secs
16
14
  end
17
15
 
18
- # @api private
19
16
  sig do
20
17
  params(ns: T.any(T::Module[T.anything], T::Class[T.anything])).returns(
21
18
  T::Enumerable[T.any(T::Module[T.anything], T::Class[T.anything])]
@@ -25,24 +22,20 @@ module XTwitterScraper
25
22
  end
26
23
 
27
24
  class << self
28
- # @api private
29
25
  sig { returns(String) }
30
26
  def arch
31
27
  end
32
28
 
33
- # @api private
34
29
  sig { returns(String) }
35
30
  def os
36
31
  end
37
32
  end
38
33
 
39
34
  class << self
40
- # @api private
41
35
  sig { params(input: T.anything).returns(T::Boolean) }
42
36
  def primitive?(input)
43
37
  end
44
38
 
45
- # @api private
46
39
  sig do
47
40
  params(input: T.any(String, T::Boolean)).returns(
48
41
  T.any(T::Boolean, T.anything)
@@ -51,7 +44,6 @@ module XTwitterScraper
51
44
  def coerce_boolean(input)
52
45
  end
53
46
 
54
- # @api private
55
47
  sig do
56
48
  params(input: T.any(String, T::Boolean)).returns(
57
49
  T.nilable(T::Boolean)
@@ -60,7 +52,6 @@ module XTwitterScraper
60
52
  def coerce_boolean!(input)
61
53
  end
62
54
 
63
- # @api private
64
55
  sig do
65
56
  params(input: T.any(String, Integer)).returns(
66
57
  T.any(Integer, T.anything)
@@ -69,7 +60,6 @@ module XTwitterScraper
69
60
  def coerce_integer(input)
70
61
  end
71
62
 
72
- # @api private
73
63
  sig do
74
64
  params(input: T.any(String, Integer, Float)).returns(
75
65
  T.any(Float, T.anything)
@@ -78,7 +68,6 @@ module XTwitterScraper
78
68
  def coerce_float(input)
79
69
  end
80
70
 
81
- # @api private
82
71
  sig do
83
72
  params(input: T.anything).returns(
84
73
  T.any(T::Hash[T.anything, T.anything], T.anything)
@@ -87,7 +76,6 @@ module XTwitterScraper
87
76
  def coerce_hash(input)
88
77
  end
89
78
 
90
- # @api private
91
79
  sig do
92
80
  params(input: T.anything).returns(
93
81
  T.nilable(T::Hash[T.anything, T.anything])
@@ -98,7 +86,6 @@ module XTwitterScraper
98
86
  end
99
87
 
100
88
  class << self
101
- # @api private
102
89
  sig do
103
90
  params(lhs: T.anything, rhs: T.anything, concat: T::Boolean).returns(
104
91
  T.anything
@@ -107,10 +94,6 @@ module XTwitterScraper
107
94
  private def deep_merge_lr(lhs, rhs, concat: false)
108
95
  end
109
96
 
110
- # @api private
111
- #
112
- # Recursively merge one hash with another. If the values at a given key are not
113
- # both hashes, just take the new value.
114
97
  sig do
115
98
  params(
116
99
  values: T::Array[T.anything],
@@ -120,14 +103,11 @@ module XTwitterScraper
120
103
  end
121
104
  def deep_merge(
122
105
  *values,
123
- # the value to return if no values are provided.
124
106
  sentinel: nil,
125
- # whether to merge sequences by concatenation.
126
107
  concat: false
127
108
  )
128
109
  end
129
110
 
130
- # @api private
131
111
  sig do
132
112
  params(
133
113
  data:
@@ -152,28 +132,23 @@ module XTwitterScraper
152
132
  end
153
133
  end
154
134
 
155
- # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
156
135
  RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
157
136
 
158
137
  class << self
159
- # @api private
160
138
  sig { params(uri: URI::Generic).returns(String) }
161
139
  def uri_origin(uri)
162
140
  end
163
141
 
164
- # @api private
165
142
  sig { params(path: T.any(String, Integer)).returns(String) }
166
143
  def encode_path(path)
167
144
  end
168
145
 
169
- # @api private
170
146
  sig { params(path: T.any(String, T::Array[String])).returns(String) }
171
147
  def interpolate_path(path)
172
148
  end
173
149
  end
174
150
 
175
151
  class << self
176
- # @api private
177
152
  sig do
178
153
  params(query: T.nilable(String)).returns(
179
154
  T::Hash[String, T::Array[String]]
@@ -182,7 +157,6 @@ module XTwitterScraper
182
157
  def decode_query(query)
183
158
  end
184
159
 
185
- # @api private
186
160
  sig do
187
161
  params(
188
162
  query:
@@ -207,7 +181,6 @@ module XTwitterScraper
207
181
  end
208
182
 
209
183
  class << self
210
- # @api private
211
184
  sig do
212
185
  params(url: T.any(URI::Generic, String)).returns(
213
186
  XTwitterScraper::Internal::Util::ParsedUri
@@ -216,7 +189,6 @@ module XTwitterScraper
216
189
  def parse_uri(url)
217
190
  end
218
191
 
219
- # @api private
220
192
  sig do
221
193
  params(parsed: XTwitterScraper::Internal::Util::ParsedUri).returns(
222
194
  URI::Generic
@@ -225,7 +197,6 @@ module XTwitterScraper
225
197
  def unparse_uri(parsed)
226
198
  end
227
199
 
228
- # @api private
229
200
  sig do
230
201
  params(
231
202
  lhs: XTwitterScraper::Internal::Util::ParsedUri,
@@ -237,7 +208,6 @@ module XTwitterScraper
237
208
  end
238
209
 
239
210
  class << self
240
- # @api private
241
211
  sig do
242
212
  params(
243
213
  headers:
@@ -257,26 +227,19 @@ module XTwitterScraper
257
227
  end
258
228
  end
259
229
 
260
- # @api private
261
- #
262
- # An adapter that satisfies the IO interface required by `::IO.copy_stream`
263
230
  class ReadIOAdapter
264
- # @api private
265
231
  sig { returns(T.nilable(T::Boolean)) }
266
232
  def close?
267
233
  end
268
234
 
269
- # @api private
270
235
  sig { void }
271
236
  def close
272
237
  end
273
238
 
274
- # @api private
275
239
  sig { params(max_len: T.nilable(Integer)).returns(String) }
276
240
  private def read_enum(max_len)
277
241
  end
278
242
 
279
- # @api private
280
243
  sig do
281
244
  params(
282
245
  max_len: T.nilable(Integer),
@@ -286,7 +249,6 @@ module XTwitterScraper
286
249
  def read(max_len = nil, out_string = nil)
287
250
  end
288
251
 
289
- # @api private
290
252
  sig do
291
253
  params(
292
254
  src: T.any(String, Pathname, StringIO, T::Enumerable[String]),
@@ -313,7 +275,6 @@ module XTwitterScraper
313
275
  T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
314
276
 
315
277
  class << self
316
- # @api private
317
278
  sig do
318
279
  params(query: XTwitterScraper::Internal::AnyHash).returns(
319
280
  XTwitterScraper::Internal::AnyHash
@@ -322,7 +283,6 @@ module XTwitterScraper
322
283
  def encode_query_params(query)
323
284
  end
324
285
 
325
- # @api private
326
286
  sig do
327
287
  params(
328
288
  collection: XTwitterScraper::Internal::AnyHash,
@@ -333,7 +293,6 @@ module XTwitterScraper
333
293
  private def write_query_param_element!(collection, key, element)
334
294
  end
335
295
 
336
- # @api private
337
296
  sig do
338
297
  params(
339
298
  y: Enumerator::Yielder,
@@ -350,7 +309,6 @@ module XTwitterScraper
350
309
  )
351
310
  end
352
311
 
353
- # @api private
354
312
  sig do
355
313
  params(
356
314
  y: Enumerator::Yielder,
@@ -363,16 +321,12 @@ module XTwitterScraper
363
321
  private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
364
322
  end
365
323
 
366
- # @api private
367
- #
368
- # https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#special-considerations-for-multipart-content
369
324
  sig do
370
325
  params(body: T.anything).returns([String, T::Enumerable[String]])
371
326
  end
372
327
  private def encode_multipart_streaming(body)
373
328
  end
374
329
 
375
- # @api private
376
330
  sig do
377
331
  params(headers: T::Hash[String, String], body: T.anything).returns(
378
332
  T.anything
@@ -381,16 +335,10 @@ module XTwitterScraper
381
335
  def encode_content(headers, body)
382
336
  end
383
337
 
384
- # @api private
385
- #
386
- # https://www.iana.org/assignments/character-sets/character-sets.xhtml
387
338
  sig { params(content_type: String, text: String).void }
388
339
  def force_charset!(content_type, text:)
389
340
  end
390
341
 
391
- # @api private
392
- #
393
- # Assumes each chunk in stream has `Encoding::BINARY`.
394
342
  sig do
395
343
  params(
396
344
  headers: T::Hash[String, String],
@@ -403,9 +351,6 @@ module XTwitterScraper
403
351
  end
404
352
 
405
353
  class << self
406
- # @api private
407
- #
408
- # https://doc.rust-lang.org/std/iter/trait.FusedIterator.html
409
354
  sig do
410
355
  params(
411
356
  enum: T::Enumerable[T.anything],
@@ -416,12 +361,10 @@ module XTwitterScraper
416
361
  def fused_enum(enum, external: false, &close)
417
362
  end
418
363
 
419
- # @api private
420
364
  sig { params(enum: T.nilable(T::Enumerable[T.anything])).void }
421
365
  def close_fused!(enum)
422
366
  end
423
367
 
424
- # @api private
425
368
  sig do
426
369
  params(
427
370
  enum: T.nilable(T::Enumerable[T.anything]),
@@ -443,23 +386,12 @@ module XTwitterScraper
443
386
  end
444
387
 
445
388
  class << self
446
- # @api private
447
- #
448
- # Assumes Strings have been forced into having `Encoding::BINARY`.
449
- #
450
- # This decoder is responsible for reassembling lines split across multiple
451
- # fragments.
452
389
  sig do
453
390
  params(enum: T::Enumerable[String]).returns(T::Enumerable[String])
454
391
  end
455
392
  def decode_lines(enum)
456
393
  end
457
394
 
458
- # @api private
459
- #
460
- # https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream
461
- #
462
- # Assumes that `lines` has been decoded with `#decode_lines`.
463
395
  sig do
464
396
  params(lines: T::Enumerable[String]).returns(
465
397
  T::Enumerable[XTwitterScraper::Internal::Util::ServerSentEvent]
@@ -469,38 +401,31 @@ module XTwitterScraper
469
401
  end
470
402
  end
471
403
 
472
- # @api private
473
404
  module SorbetRuntimeSupport
474
405
  class MissingSorbetRuntimeError < ::RuntimeError
475
406
  end
476
407
 
477
- # @api private
478
408
  sig { returns(T::Hash[Symbol, T.anything]) }
479
409
  private def sorbet_runtime_constants
480
410
  end
481
411
 
482
- # @api private
483
412
  sig { params(name: Symbol).void }
484
413
  def const_missing(name)
485
414
  end
486
415
 
487
- # @api private
488
416
  sig { params(name: Symbol).returns(T::Boolean) }
489
417
  def sorbet_constant_defined?(name)
490
418
  end
491
419
 
492
- # @api private
493
420
  sig { params(name: Symbol, blk: T.proc.returns(T.anything)).void }
494
421
  def define_sorbet_constant!(name, &blk)
495
422
  end
496
423
 
497
- # @api private
498
424
  sig { returns(T.anything) }
499
425
  def to_sorbet_type
500
426
  end
501
427
 
502
428
  class << self
503
- # @api private
504
429
  sig do
505
430
  params(
506
431
  type:
@@ -8,8 +8,6 @@ module XTwitterScraper
8
8
  module Internal
9
9
  extend XTwitterScraper::Internal::Util::SorbetRuntimeSupport
10
10
 
11
- # Due to the current WIP status of Shapes support in Sorbet, types referencing
12
- # this alias might be refined in the future.
13
11
  AnyHash = T.type_alias { T::Hash[Symbol, T.anything] }
14
12
 
15
13
  FileInput =
@@ -54,7 +54,6 @@ module XTwitterScraper
54
54
  sig { returns(T.nilable(Float)) }
55
55
  attr_accessor :timeout
56
56
 
57
- # Returns a new instance of RequestOptions.
58
57
  sig do
59
58
  params(values: XTwitterScraper::Internal::AnyHash).returns(
60
59
  T.attached_class
@@ -10,7 +10,7 @@ module XTwitterScraper
10
10
  # X account monitoring with 1-second checks
11
11
  class Keywords
12
12
  # Creates a keyword monitor. Keyword monitors are unlimited. Active monitors check
13
- # every 1 second and cost 21 credits per hour. Events and webhook deliveries are
13
+ # every 1 second and cost 30 credits per hour. Events and webhook deliveries are
14
14
  # included. Creation requires available credits for the first hourly charge.
15
15
  sig do
16
16
  params(
@@ -13,7 +13,7 @@ module XTwitterScraper
13
13
  attr_reader :keywords
14
14
 
15
15
  # Creates an account monitor. Monitors are unlimited. Active monitors check every
16
- # 1 second and cost 21 credits per hour. Events and webhook deliveries are
16
+ # 1 second and cost 30 credits per hour. Events and webhook deliveries are
17
17
  # included. Creation requires available credits for the first hourly charge and
18
18
  # username lookup.
19
19
  sig do
@@ -75,7 +75,6 @@ module XTwitterScraper
75
75
 
76
76
  attr_reader idempotency_header: String?
77
77
 
78
- # @api private
79
78
  attr_reader requester: XTwitterScraper::Internal::Transport::PooledNetRequester
80
79
 
81
80
  def initialize: (
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: x-twitter-scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.4
4
+ version: 0.10.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xquik
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 2026-10-21 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: base64
@@ -51,6 +51,11 @@ dependencies:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
+ description: X API & Twitter API SDK for Ruby by Xquik. Scrape Twitter search, timelines,
55
+ profiles & followers as a typed Twitter scraper & tweet scraper. Manage media, webhooks,
56
+ monitors & X automation through documented Xquik REST routes. Xquik is the world's
57
+ fastest and cheapest X Twitter scraper service with the most complete X data. Not
58
+ affiliated with X Corp.
54
59
  email: support@xquik.com
55
60
  executables: []
56
61
  extensions: []
@@ -955,6 +960,9 @@ licenses:
955
960
  metadata:
956
961
  homepage_uri: https://docs.xquik.com/sdks/ruby
957
962
  source_code_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby
963
+ documentation_uri: https://docs.xquik.com/api-reference/overview
964
+ changelog_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby/blob/main/CHANGELOG.md
965
+ bug_tracker_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby/issues
958
966
  rubygems_mfa_required: 'false'
959
967
  rdoc_options: []
960
968
  require_paths:
@@ -970,8 +978,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
970
978
  - !ruby/object:Gem::Version
971
979
  version: '0'
972
980
  requirements: []
973
- rubygems_version: 4.0.16
981
+ rubygems_version: 4.0.11
974
982
  specification_version: 4
975
- summary: Ruby SDK for Twitter search, followers, webhooks & X automation. Not affiliated
976
- with X Corp.
983
+ summary: X API & Twitter API SDK for Ruby. Scrape Twitter search, profiles & followers
984
+ as a Twitter scraper & tweet scraper. Not affiliated with X Corp.
977
985
  test_files: []