context.dev 1.32.0 → 1.34.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.
@@ -208,6 +208,15 @@ module ContextDev
208
208
  sig { returns(Integer) }
209
209
  attr_accessor :crawl_depth
210
210
 
211
+ # Final URL scraped after redirects or scraper fallback, when known. Falls back to
212
+ # sourceUrl when unavailable.
213
+ sig { returns(String) }
214
+ attr_accessor :final_url
215
+
216
+ # Original URL requested by the caller.
217
+ sig { returns(String) }
218
+ attr_accessor :source_url
219
+
211
220
  # HTTP status code of the response
212
221
  sig { returns(Integer) }
213
222
  attr_accessor :status_code
@@ -216,34 +225,282 @@ module ContextDev
216
225
  sig { returns(T::Boolean) }
217
226
  attr_accessor :success
218
227
 
219
- # The page's <title> content (empty string if unavailable)
228
+ # Best page title extracted from the page (empty string if unavailable).
220
229
  sig { returns(String) }
221
230
  attr_accessor :title
222
231
 
223
- # The URL that was fetched
232
+ # The crawl URL fetched for this page.
224
233
  sig { returns(String) }
225
234
  attr_accessor :url
226
235
 
236
+ # Additional non-social meta tags not promoted to top-level metadata fields.
237
+ sig do
238
+ returns(
239
+ T.nilable(
240
+ T::Hash[
241
+ Symbol,
242
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::AdditionalMeta::Variants
243
+ ]
244
+ )
245
+ )
246
+ end
247
+ attr_reader :additional_meta
248
+
249
+ sig do
250
+ params(
251
+ additional_meta:
252
+ T::Hash[
253
+ Symbol,
254
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::AdditionalMeta::Variants
255
+ ]
256
+ ).void
257
+ end
258
+ attr_writer :additional_meta
259
+
260
+ # Resolved alternate links from link rel=alternate tags.
261
+ sig do
262
+ returns(
263
+ T.nilable(
264
+ T::Array[
265
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Alternate
266
+ ]
267
+ )
268
+ )
269
+ end
270
+ attr_reader :alternates
271
+
272
+ sig do
273
+ params(
274
+ alternates:
275
+ T::Array[
276
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Alternate::OrHash
277
+ ]
278
+ ).void
279
+ end
280
+ attr_writer :alternates
281
+
282
+ # Author metadata, when present.
283
+ sig { returns(T.nilable(String)) }
284
+ attr_reader :author
285
+
286
+ sig { params(author: String).void }
287
+ attr_writer :author
288
+
289
+ # Resolved canonical URL, when present.
290
+ sig { returns(T.nilable(String)) }
291
+ attr_reader :canonical_url
292
+
293
+ sig { params(canonical_url: String).void }
294
+ attr_writer :canonical_url
295
+
296
+ # Best description extracted from standard, Open Graph, or Twitter metadata.
297
+ sig { returns(T.nilable(String)) }
298
+ attr_reader :description
299
+
300
+ sig { params(description: String).void }
301
+ attr_writer :description
302
+
303
+ # Resolved favicon URL, when present.
304
+ sig { returns(T.nilable(String)) }
305
+ attr_reader :favicon
306
+
307
+ sig { params(favicon: String).void }
308
+ attr_writer :favicon
309
+
310
+ # Primary resolved preview image from Open Graph, Twitter, or image metadata.
311
+ sig { returns(T.nilable(String)) }
312
+ attr_reader :image
313
+
314
+ sig { params(image: String).void }
315
+ attr_writer :image
316
+
317
+ # JSON-LD structured data blocks parsed from the page.
318
+ sig { returns(T.nilable(T::Array[T::Hash[Symbol, T.anything]])) }
319
+ attr_reader :json_ld
320
+
321
+ sig { params(json_ld: T::Array[T::Hash[Symbol, T.anything]]).void }
322
+ attr_writer :json_ld
323
+
324
+ # Keywords extracted from the page's keywords meta tag.
325
+ sig { returns(T.nilable(T::Array[String])) }
326
+ attr_reader :keywords
327
+
328
+ sig { params(keywords: T::Array[String]).void }
329
+ attr_writer :keywords
330
+
331
+ # Language extracted from html lang or language meta tags.
332
+ sig { returns(T.nilable(String)) }
333
+ attr_reader :language
334
+
335
+ sig { params(language: String).void }
336
+ attr_writer :language
337
+
338
+ # Modified timestamp/date from page metadata, when present.
339
+ sig { returns(T.nilable(String)) }
340
+ attr_reader :modified_time
341
+
342
+ sig { params(modified_time: String).void }
343
+ attr_writer :modified_time
344
+
345
+ # Open Graph metadata with the og: prefix removed and keys camel-cased.
346
+ sig do
347
+ returns(
348
+ T.nilable(
349
+ T::Hash[
350
+ Symbol,
351
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::OpenGraph::Variants
352
+ ]
353
+ )
354
+ )
355
+ end
356
+ attr_reader :open_graph
357
+
358
+ sig do
359
+ params(
360
+ open_graph:
361
+ T::Hash[
362
+ Symbol,
363
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::OpenGraph::Variants
364
+ ]
365
+ ).void
366
+ end
367
+ attr_writer :open_graph
368
+
369
+ # Published timestamp/date from page metadata, when present.
370
+ sig { returns(T.nilable(String)) }
371
+ attr_reader :published_time
372
+
373
+ sig { params(published_time: String).void }
374
+ attr_writer :published_time
375
+
376
+ # Robots meta directive, when present.
377
+ sig { returns(T.nilable(String)) }
378
+ attr_reader :robots
379
+
380
+ sig { params(robots: String).void }
381
+ attr_writer :robots
382
+
383
+ # Site or application name from page metadata.
384
+ sig { returns(T.nilable(String)) }
385
+ attr_reader :site_name
386
+
387
+ sig { params(site_name: String).void }
388
+ attr_writer :site_name
389
+
390
+ # Twitter card metadata with the twitter: prefix removed and keys camel-cased.
391
+ sig do
392
+ returns(
393
+ T.nilable(
394
+ T::Hash[
395
+ Symbol,
396
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Twitter::Variants
397
+ ]
398
+ )
399
+ )
400
+ end
401
+ attr_reader :twitter
402
+
403
+ sig do
404
+ params(
405
+ twitter:
406
+ T::Hash[
407
+ Symbol,
408
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Twitter::Variants
409
+ ]
410
+ ).void
411
+ end
412
+ attr_writer :twitter
413
+
227
414
  sig do
228
415
  params(
229
416
  crawl_depth: Integer,
417
+ final_url: String,
418
+ source_url: String,
230
419
  status_code: Integer,
231
420
  success: T::Boolean,
232
421
  title: String,
233
- url: String
422
+ url: String,
423
+ additional_meta:
424
+ T::Hash[
425
+ Symbol,
426
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::AdditionalMeta::Variants
427
+ ],
428
+ alternates:
429
+ T::Array[
430
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Alternate::OrHash
431
+ ],
432
+ author: String,
433
+ canonical_url: String,
434
+ description: String,
435
+ favicon: String,
436
+ image: String,
437
+ json_ld: T::Array[T::Hash[Symbol, T.anything]],
438
+ keywords: T::Array[String],
439
+ language: String,
440
+ modified_time: String,
441
+ open_graph:
442
+ T::Hash[
443
+ Symbol,
444
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::OpenGraph::Variants
445
+ ],
446
+ published_time: String,
447
+ robots: String,
448
+ site_name: String,
449
+ twitter:
450
+ T::Hash[
451
+ Symbol,
452
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Twitter::Variants
453
+ ]
234
454
  ).returns(T.attached_class)
235
455
  end
236
456
  def self.new(
237
457
  # Depth relative to the start URL. 0 = start URL, 1 = one link away.
238
458
  crawl_depth:,
459
+ # Final URL scraped after redirects or scraper fallback, when known. Falls back to
460
+ # sourceUrl when unavailable.
461
+ final_url:,
462
+ # Original URL requested by the caller.
463
+ source_url:,
239
464
  # HTTP status code of the response
240
465
  status_code:,
241
466
  # true if the page was fetched and parsed successfully
242
467
  success:,
243
- # The page's <title> content (empty string if unavailable)
468
+ # Best page title extracted from the page (empty string if unavailable).
244
469
  title:,
245
- # The URL that was fetched
246
- url:
470
+ # The crawl URL fetched for this page.
471
+ url:,
472
+ # Additional non-social meta tags not promoted to top-level metadata fields.
473
+ additional_meta: nil,
474
+ # Resolved alternate links from link rel=alternate tags.
475
+ alternates: nil,
476
+ # Author metadata, when present.
477
+ author: nil,
478
+ # Resolved canonical URL, when present.
479
+ canonical_url: nil,
480
+ # Best description extracted from standard, Open Graph, or Twitter metadata.
481
+ description: nil,
482
+ # Resolved favicon URL, when present.
483
+ favicon: nil,
484
+ # Primary resolved preview image from Open Graph, Twitter, or image metadata.
485
+ image: nil,
486
+ # JSON-LD structured data blocks parsed from the page.
487
+ json_ld: nil,
488
+ # Keywords extracted from the page's keywords meta tag.
489
+ keywords: nil,
490
+ # Language extracted from html lang or language meta tags.
491
+ language: nil,
492
+ # Modified timestamp/date from page metadata, when present.
493
+ modified_time: nil,
494
+ # Open Graph metadata with the og: prefix removed and keys camel-cased.
495
+ open_graph: nil,
496
+ # Published timestamp/date from page metadata, when present.
497
+ published_time: nil,
498
+ # Robots meta directive, when present.
499
+ robots: nil,
500
+ # Site or application name from page metadata.
501
+ site_name: nil,
502
+ # Twitter card metadata with the twitter: prefix removed and keys camel-cased.
503
+ twitter: nil
247
504
  )
248
505
  end
249
506
 
@@ -251,15 +508,177 @@ module ContextDev
251
508
  override.returns(
252
509
  {
253
510
  crawl_depth: Integer,
511
+ final_url: String,
512
+ source_url: String,
254
513
  status_code: Integer,
255
514
  success: T::Boolean,
256
515
  title: String,
257
- url: String
516
+ url: String,
517
+ additional_meta:
518
+ T::Hash[
519
+ Symbol,
520
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::AdditionalMeta::Variants
521
+ ],
522
+ alternates:
523
+ T::Array[
524
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Alternate
525
+ ],
526
+ author: String,
527
+ canonical_url: String,
528
+ description: String,
529
+ favicon: String,
530
+ image: String,
531
+ json_ld: T::Array[T::Hash[Symbol, T.anything]],
532
+ keywords: T::Array[String],
533
+ language: String,
534
+ modified_time: String,
535
+ open_graph:
536
+ T::Hash[
537
+ Symbol,
538
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::OpenGraph::Variants
539
+ ],
540
+ published_time: String,
541
+ robots: String,
542
+ site_name: String,
543
+ twitter:
544
+ T::Hash[
545
+ Symbol,
546
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Twitter::Variants
547
+ ]
258
548
  }
259
549
  )
260
550
  end
261
551
  def to_hash
262
552
  end
553
+
554
+ module AdditionalMeta
555
+ extend ContextDev::Internal::Type::Union
556
+
557
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
558
+
559
+ sig do
560
+ override.returns(
561
+ T::Array[
562
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::AdditionalMeta::Variants
563
+ ]
564
+ )
565
+ end
566
+ def self.variants
567
+ end
568
+
569
+ StringArray =
570
+ T.let(
571
+ ContextDev::Internal::Type::ArrayOf[String],
572
+ ContextDev::Internal::Type::Converter
573
+ )
574
+ end
575
+
576
+ class Alternate < ContextDev::Internal::Type::BaseModel
577
+ OrHash =
578
+ T.type_alias do
579
+ T.any(
580
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Alternate,
581
+ ContextDev::Internal::AnyHash
582
+ )
583
+ end
584
+
585
+ # Resolved alternate URL.
586
+ sig { returns(String) }
587
+ attr_accessor :href
588
+
589
+ # Language or locale for the alternate URL, when present.
590
+ sig { returns(T.nilable(String)) }
591
+ attr_reader :hreflang
592
+
593
+ sig { params(hreflang: String).void }
594
+ attr_writer :hreflang
595
+
596
+ # Alternate resource title, when present.
597
+ sig { returns(T.nilable(String)) }
598
+ attr_reader :title
599
+
600
+ sig { params(title: String).void }
601
+ attr_writer :title
602
+
603
+ # Alternate resource MIME type, when present.
604
+ sig { returns(T.nilable(String)) }
605
+ attr_reader :type
606
+
607
+ sig { params(type: String).void }
608
+ attr_writer :type
609
+
610
+ sig do
611
+ params(
612
+ href: String,
613
+ hreflang: String,
614
+ title: String,
615
+ type: String
616
+ ).returns(T.attached_class)
617
+ end
618
+ def self.new(
619
+ # Resolved alternate URL.
620
+ href:,
621
+ # Language or locale for the alternate URL, when present.
622
+ hreflang: nil,
623
+ # Alternate resource title, when present.
624
+ title: nil,
625
+ # Alternate resource MIME type, when present.
626
+ type: nil
627
+ )
628
+ end
629
+
630
+ sig do
631
+ override.returns(
632
+ { href: String, hreflang: String, title: String, type: String }
633
+ )
634
+ end
635
+ def to_hash
636
+ end
637
+ end
638
+
639
+ module OpenGraph
640
+ extend ContextDev::Internal::Type::Union
641
+
642
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
643
+
644
+ sig do
645
+ override.returns(
646
+ T::Array[
647
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::OpenGraph::Variants
648
+ ]
649
+ )
650
+ end
651
+ def self.variants
652
+ end
653
+
654
+ StringArray =
655
+ T.let(
656
+ ContextDev::Internal::Type::ArrayOf[String],
657
+ ContextDev::Internal::Type::Converter
658
+ )
659
+ end
660
+
661
+ module Twitter
662
+ extend ContextDev::Internal::Type::Union
663
+
664
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
665
+
666
+ sig do
667
+ override.returns(
668
+ T::Array[
669
+ ContextDev::Models::WebWebCrawlMdResponse::Result::Metadata::Twitter::Variants
670
+ ]
671
+ )
672
+ end
673
+ def self.variants
674
+ end
675
+
676
+ StringArray =
677
+ T.let(
678
+ ContextDev::Internal::Type::ArrayOf[String],
679
+ ContextDev::Internal::Type::Converter
680
+ )
681
+ end
263
682
  end
264
683
  end
265
684