context.dev 1.32.0 → 1.35.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.
@@ -15,6 +15,17 @@ module ContextDev
15
15
  sig { returns(String) }
16
16
  attr_accessor :markdown
17
17
 
18
+ # Metadata extracted from the scraped page HTML.
19
+ sig { returns(ContextDev::Models::WebWebScrapeMdResponse::Metadata) }
20
+ attr_reader :metadata
21
+
22
+ sig do
23
+ params(
24
+ metadata: ContextDev::Models::WebWebScrapeMdResponse::Metadata::OrHash
25
+ ).void
26
+ end
27
+ attr_writer :metadata
28
+
18
29
  # Indicates success
19
30
  sig do
20
31
  returns(
@@ -47,6 +58,8 @@ module ContextDev
47
58
  sig do
48
59
  params(
49
60
  markdown: String,
61
+ metadata:
62
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::OrHash,
50
63
  success:
51
64
  ContextDev::Models::WebWebScrapeMdResponse::Success::OrBoolean,
52
65
  url: String,
@@ -57,6 +70,8 @@ module ContextDev
57
70
  def self.new(
58
71
  # Page content converted to GitHub Flavored Markdown
59
72
  markdown:,
73
+ # Metadata extracted from the scraped page HTML.
74
+ metadata:,
60
75
  # Indicates success
61
76
  success:,
62
77
  # The URL that was scraped
@@ -71,6 +86,7 @@ module ContextDev
71
86
  override.returns(
72
87
  {
73
88
  markdown: String,
89
+ metadata: ContextDev::Models::WebWebScrapeMdResponse::Metadata,
74
90
  success:
75
91
  ContextDev::Models::WebWebScrapeMdResponse::Success::TaggedBoolean,
76
92
  url: String,
@@ -82,6 +98,464 @@ module ContextDev
82
98
  def to_hash
83
99
  end
84
100
 
101
+ class Metadata < ContextDev::Internal::Type::BaseModel
102
+ OrHash =
103
+ T.type_alias do
104
+ T.any(
105
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata,
106
+ ContextDev::Internal::AnyHash
107
+ )
108
+ end
109
+
110
+ # Final URL scraped after redirects or scraper fallback, when known. Falls back to
111
+ # sourceUrl when unavailable.
112
+ sig { returns(String) }
113
+ attr_accessor :final_url
114
+
115
+ # Original URL requested by the caller.
116
+ sig { returns(String) }
117
+ attr_accessor :source_url
118
+
119
+ # Additional non-social meta tags not promoted to top-level metadata fields.
120
+ sig do
121
+ returns(
122
+ T.nilable(
123
+ T::Hash[
124
+ Symbol,
125
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::AdditionalMeta::Variants
126
+ ]
127
+ )
128
+ )
129
+ end
130
+ attr_reader :additional_meta
131
+
132
+ sig do
133
+ params(
134
+ additional_meta:
135
+ T::Hash[
136
+ Symbol,
137
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::AdditionalMeta::Variants
138
+ ]
139
+ ).void
140
+ end
141
+ attr_writer :additional_meta
142
+
143
+ # Resolved alternate links from link rel=alternate tags.
144
+ sig do
145
+ returns(
146
+ T.nilable(
147
+ T::Array[
148
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Alternate
149
+ ]
150
+ )
151
+ )
152
+ end
153
+ attr_reader :alternates
154
+
155
+ sig do
156
+ params(
157
+ alternates:
158
+ T::Array[
159
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Alternate::OrHash
160
+ ]
161
+ ).void
162
+ end
163
+ attr_writer :alternates
164
+
165
+ # Author metadata, when present.
166
+ sig { returns(T.nilable(String)) }
167
+ attr_reader :author
168
+
169
+ sig { params(author: String).void }
170
+ attr_writer :author
171
+
172
+ # Resolved canonical URL, when present.
173
+ sig { returns(T.nilable(String)) }
174
+ attr_reader :canonical_url
175
+
176
+ sig { params(canonical_url: String).void }
177
+ attr_writer :canonical_url
178
+
179
+ # Best description extracted from standard, Open Graph, or Twitter metadata.
180
+ sig { returns(T.nilable(String)) }
181
+ attr_reader :description
182
+
183
+ sig { params(description: String).void }
184
+ attr_writer :description
185
+
186
+ # Resolved favicon URL, when present.
187
+ sig { returns(T.nilable(String)) }
188
+ attr_reader :favicon
189
+
190
+ sig { params(favicon: String).void }
191
+ attr_writer :favicon
192
+
193
+ # Primary resolved preview image from Open Graph, Twitter, or image metadata.
194
+ sig { returns(T.nilable(String)) }
195
+ attr_reader :image
196
+
197
+ sig { params(image: String).void }
198
+ attr_writer :image
199
+
200
+ # JSON-LD structured data blocks parsed from the page.
201
+ sig { returns(T.nilable(T::Array[T::Hash[Symbol, T.anything]])) }
202
+ attr_reader :json_ld
203
+
204
+ sig { params(json_ld: T::Array[T::Hash[Symbol, T.anything]]).void }
205
+ attr_writer :json_ld
206
+
207
+ # Keywords extracted from the page's keywords meta tag.
208
+ sig { returns(T.nilable(T::Array[String])) }
209
+ attr_reader :keywords
210
+
211
+ sig { params(keywords: T::Array[String]).void }
212
+ attr_writer :keywords
213
+
214
+ # Language extracted from html lang or language meta tags.
215
+ sig { returns(T.nilable(String)) }
216
+ attr_reader :language
217
+
218
+ sig { params(language: String).void }
219
+ attr_writer :language
220
+
221
+ # Modified timestamp/date from page metadata, when present.
222
+ sig { returns(T.nilable(String)) }
223
+ attr_reader :modified_time
224
+
225
+ sig { params(modified_time: String).void }
226
+ attr_writer :modified_time
227
+
228
+ # Open Graph metadata with the og: prefix removed and keys camel-cased.
229
+ sig do
230
+ returns(
231
+ T.nilable(
232
+ T::Hash[
233
+ Symbol,
234
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::OpenGraph::Variants
235
+ ]
236
+ )
237
+ )
238
+ end
239
+ attr_reader :open_graph
240
+
241
+ sig do
242
+ params(
243
+ open_graph:
244
+ T::Hash[
245
+ Symbol,
246
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::OpenGraph::Variants
247
+ ]
248
+ ).void
249
+ end
250
+ attr_writer :open_graph
251
+
252
+ # Published timestamp/date from page metadata, when present.
253
+ sig { returns(T.nilable(String)) }
254
+ attr_reader :published_time
255
+
256
+ sig { params(published_time: String).void }
257
+ attr_writer :published_time
258
+
259
+ # Robots meta directive, when present.
260
+ sig { returns(T.nilable(String)) }
261
+ attr_reader :robots
262
+
263
+ sig { params(robots: String).void }
264
+ attr_writer :robots
265
+
266
+ # Site or application name from page metadata.
267
+ sig { returns(T.nilable(String)) }
268
+ attr_reader :site_name
269
+
270
+ sig { params(site_name: String).void }
271
+ attr_writer :site_name
272
+
273
+ # Best title extracted from the page.
274
+ sig { returns(T.nilable(String)) }
275
+ attr_reader :title
276
+
277
+ sig { params(title: String).void }
278
+ attr_writer :title
279
+
280
+ # Twitter card metadata with the twitter: prefix removed and keys camel-cased.
281
+ sig do
282
+ returns(
283
+ T.nilable(
284
+ T::Hash[
285
+ Symbol,
286
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Twitter::Variants
287
+ ]
288
+ )
289
+ )
290
+ end
291
+ attr_reader :twitter
292
+
293
+ sig do
294
+ params(
295
+ twitter:
296
+ T::Hash[
297
+ Symbol,
298
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Twitter::Variants
299
+ ]
300
+ ).void
301
+ end
302
+ attr_writer :twitter
303
+
304
+ # Metadata extracted from the scraped page HTML.
305
+ sig do
306
+ params(
307
+ final_url: String,
308
+ source_url: String,
309
+ additional_meta:
310
+ T::Hash[
311
+ Symbol,
312
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::AdditionalMeta::Variants
313
+ ],
314
+ alternates:
315
+ T::Array[
316
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Alternate::OrHash
317
+ ],
318
+ author: String,
319
+ canonical_url: String,
320
+ description: String,
321
+ favicon: String,
322
+ image: String,
323
+ json_ld: T::Array[T::Hash[Symbol, T.anything]],
324
+ keywords: T::Array[String],
325
+ language: String,
326
+ modified_time: String,
327
+ open_graph:
328
+ T::Hash[
329
+ Symbol,
330
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::OpenGraph::Variants
331
+ ],
332
+ published_time: String,
333
+ robots: String,
334
+ site_name: String,
335
+ title: String,
336
+ twitter:
337
+ T::Hash[
338
+ Symbol,
339
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Twitter::Variants
340
+ ]
341
+ ).returns(T.attached_class)
342
+ end
343
+ def self.new(
344
+ # Final URL scraped after redirects or scraper fallback, when known. Falls back to
345
+ # sourceUrl when unavailable.
346
+ final_url:,
347
+ # Original URL requested by the caller.
348
+ source_url:,
349
+ # Additional non-social meta tags not promoted to top-level metadata fields.
350
+ additional_meta: nil,
351
+ # Resolved alternate links from link rel=alternate tags.
352
+ alternates: nil,
353
+ # Author metadata, when present.
354
+ author: nil,
355
+ # Resolved canonical URL, when present.
356
+ canonical_url: nil,
357
+ # Best description extracted from standard, Open Graph, or Twitter metadata.
358
+ description: nil,
359
+ # Resolved favicon URL, when present.
360
+ favicon: nil,
361
+ # Primary resolved preview image from Open Graph, Twitter, or image metadata.
362
+ image: nil,
363
+ # JSON-LD structured data blocks parsed from the page.
364
+ json_ld: nil,
365
+ # Keywords extracted from the page's keywords meta tag.
366
+ keywords: nil,
367
+ # Language extracted from html lang or language meta tags.
368
+ language: nil,
369
+ # Modified timestamp/date from page metadata, when present.
370
+ modified_time: nil,
371
+ # Open Graph metadata with the og: prefix removed and keys camel-cased.
372
+ open_graph: nil,
373
+ # Published timestamp/date from page metadata, when present.
374
+ published_time: nil,
375
+ # Robots meta directive, when present.
376
+ robots: nil,
377
+ # Site or application name from page metadata.
378
+ site_name: nil,
379
+ # Best title extracted from the page.
380
+ title: nil,
381
+ # Twitter card metadata with the twitter: prefix removed and keys camel-cased.
382
+ twitter: nil
383
+ )
384
+ end
385
+
386
+ sig do
387
+ override.returns(
388
+ {
389
+ final_url: String,
390
+ source_url: String,
391
+ additional_meta:
392
+ T::Hash[
393
+ Symbol,
394
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::AdditionalMeta::Variants
395
+ ],
396
+ alternates:
397
+ T::Array[
398
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Alternate
399
+ ],
400
+ author: String,
401
+ canonical_url: String,
402
+ description: String,
403
+ favicon: String,
404
+ image: String,
405
+ json_ld: T::Array[T::Hash[Symbol, T.anything]],
406
+ keywords: T::Array[String],
407
+ language: String,
408
+ modified_time: String,
409
+ open_graph:
410
+ T::Hash[
411
+ Symbol,
412
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::OpenGraph::Variants
413
+ ],
414
+ published_time: String,
415
+ robots: String,
416
+ site_name: String,
417
+ title: String,
418
+ twitter:
419
+ T::Hash[
420
+ Symbol,
421
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Twitter::Variants
422
+ ]
423
+ }
424
+ )
425
+ end
426
+ def to_hash
427
+ end
428
+
429
+ module AdditionalMeta
430
+ extend ContextDev::Internal::Type::Union
431
+
432
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
433
+
434
+ sig do
435
+ override.returns(
436
+ T::Array[
437
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::AdditionalMeta::Variants
438
+ ]
439
+ )
440
+ end
441
+ def self.variants
442
+ end
443
+
444
+ StringArray =
445
+ T.let(
446
+ ContextDev::Internal::Type::ArrayOf[String],
447
+ ContextDev::Internal::Type::Converter
448
+ )
449
+ end
450
+
451
+ class Alternate < ContextDev::Internal::Type::BaseModel
452
+ OrHash =
453
+ T.type_alias do
454
+ T.any(
455
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Alternate,
456
+ ContextDev::Internal::AnyHash
457
+ )
458
+ end
459
+
460
+ # Resolved alternate URL.
461
+ sig { returns(String) }
462
+ attr_accessor :href
463
+
464
+ # Language or locale for the alternate URL, when present.
465
+ sig { returns(T.nilable(String)) }
466
+ attr_reader :hreflang
467
+
468
+ sig { params(hreflang: String).void }
469
+ attr_writer :hreflang
470
+
471
+ # Alternate resource title, when present.
472
+ sig { returns(T.nilable(String)) }
473
+ attr_reader :title
474
+
475
+ sig { params(title: String).void }
476
+ attr_writer :title
477
+
478
+ # Alternate resource MIME type, when present.
479
+ sig { returns(T.nilable(String)) }
480
+ attr_reader :type
481
+
482
+ sig { params(type: String).void }
483
+ attr_writer :type
484
+
485
+ sig do
486
+ params(
487
+ href: String,
488
+ hreflang: String,
489
+ title: String,
490
+ type: String
491
+ ).returns(T.attached_class)
492
+ end
493
+ def self.new(
494
+ # Resolved alternate URL.
495
+ href:,
496
+ # Language or locale for the alternate URL, when present.
497
+ hreflang: nil,
498
+ # Alternate resource title, when present.
499
+ title: nil,
500
+ # Alternate resource MIME type, when present.
501
+ type: nil
502
+ )
503
+ end
504
+
505
+ sig do
506
+ override.returns(
507
+ { href: String, hreflang: String, title: String, type: String }
508
+ )
509
+ end
510
+ def to_hash
511
+ end
512
+ end
513
+
514
+ module OpenGraph
515
+ extend ContextDev::Internal::Type::Union
516
+
517
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
518
+
519
+ sig do
520
+ override.returns(
521
+ T::Array[
522
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::OpenGraph::Variants
523
+ ]
524
+ )
525
+ end
526
+ def self.variants
527
+ end
528
+
529
+ StringArray =
530
+ T.let(
531
+ ContextDev::Internal::Type::ArrayOf[String],
532
+ ContextDev::Internal::Type::Converter
533
+ )
534
+ end
535
+
536
+ module Twitter
537
+ extend ContextDev::Internal::Type::Union
538
+
539
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
540
+
541
+ sig do
542
+ override.returns(
543
+ T::Array[
544
+ ContextDev::Models::WebWebScrapeMdResponse::Metadata::Twitter::Variants
545
+ ]
546
+ )
547
+ end
548
+ def self.variants
549
+ end
550
+
551
+ StringArray =
552
+ T.let(
553
+ ContextDev::Internal::Type::ArrayOf[String],
554
+ ContextDev::Internal::Type::Converter
555
+ )
556
+ end
557
+ end
558
+
85
559
  # Indicates success
86
560
  module Success
87
561
  extend ContextDev::Internal::Type::Enum
@@ -170,6 +170,7 @@ module ContextDev
170
170
  ContextDev::WebScreenshotParams::HandleCookiePopup::OrSymbol,
171
171
  max_age_ms: Integer,
172
172
  page: ContextDev::WebScreenshotParams::Page::OrSymbol,
173
+ scroll_offset: Integer,
173
174
  timeout_ms: Integer,
174
175
  viewport: ContextDev::WebScreenshotParams::Viewport::OrHash,
175
176
  wait_for_ms: Integer,
@@ -203,6 +204,13 @@ module ContextDev
203
204
  # provided, screenshots the main domain landing page. Only applicable when using
204
205
  # 'domain', not 'directUrl'.
205
206
  page: nil,
207
+ # Optional vertical scroll offset in pixels for capturing a long page in
208
+ # viewport-sized chunks. When provided, the full page is captured once and the
209
+ # returned image is the viewport-sized slice that begins at this Y offset (e.g.
210
+ # request scrollOffset=0, then 1080, then 2160 to walk a 1920x1080 landing page
211
+ # top to bottom). The final slice may be shorter than the viewport height. Takes
212
+ # precedence over fullScreenshot. Max: 100000.
213
+ scroll_offset: nil,
206
214
  # Optional timeout in milliseconds for the request. If the request takes longer
207
215
  # than this value, it will be aborted with a 408 status code. Maximum allowed
208
216
  # value is 300000ms (5 minutes).
@@ -8,6 +8,7 @@ module ContextDev
8
8
  handle_cookie_popup: ContextDev::Models::WebScreenshotParams::handle_cookie_popup,
9
9
  max_age_ms: Integer,
10
10
  page: ContextDev::Models::WebScreenshotParams::page,
11
+ scroll_offset: Integer,
11
12
  timeout_ms: Integer,
12
13
  viewport: ContextDev::WebScreenshotParams::Viewport,
13
14
  wait_for_ms: Integer
@@ -48,6 +49,10 @@ module ContextDev
48
49
  ContextDev::Models::WebScreenshotParams::page
49
50
  ) -> ContextDev::Models::WebScreenshotParams::page
50
51
 
52
+ attr_reader scroll_offset: Integer?
53
+
54
+ def scroll_offset=: (Integer) -> Integer
55
+
51
56
  attr_reader timeout_ms: Integer?
52
57
 
53
58
  def timeout_ms=: (Integer) -> Integer
@@ -69,6 +74,7 @@ module ContextDev
69
74
  ?handle_cookie_popup: ContextDev::Models::WebScreenshotParams::handle_cookie_popup,
70
75
  ?max_age_ms: Integer,
71
76
  ?page: ContextDev::Models::WebScreenshotParams::page,
77
+ ?scroll_offset: Integer,
72
78
  ?timeout_ms: Integer,
73
79
  ?viewport: ContextDev::WebScreenshotParams::Viewport,
74
80
  ?wait_for_ms: Integer,
@@ -82,6 +88,7 @@ module ContextDev
82
88
  handle_cookie_popup: ContextDev::Models::WebScreenshotParams::handle_cookie_popup,
83
89
  max_age_ms: Integer,
84
90
  page: ContextDev::Models::WebScreenshotParams::page,
91
+ scroll_offset: Integer,
85
92
  timeout_ms: Integer,
86
93
  viewport: ContextDev::WebScreenshotParams::Viewport,
87
94
  wait_for_ms: Integer,