Skip to content

Conversation

@bug-ops
Copy link
Owner

@bug-ops bug-ops commented Dec 28, 2025

Summary

Complete implementation of missing Python and Node.js bindings for all namespace extensions.

Phase 1: Python Bindings

New types:

  • GeoLocation (geo_type, coordinates, srs_name)
  • MediaThumbnail (url, width, height)
  • MediaContent (url, type, filesize, width, height, duration)
  • PodcastChapters (url, type)
  • PodcastSoundbite (start_time, duration, title)
  • PodcastEntryMeta (transcript, chapters, soundbite, person)

New Entry getters:

  • geo, dc_creator, dc_date, dc_date_parsed, dc_rights, dc_subject
  • media_thumbnails, media_content, podcast

New FeedMeta getters:

  • geo

Quality:

  • All types include __repr__ and __eq__ implementations
  • 23 new integration tests

Phase 2: Node.js Type Definitions

New types (14 total):

  • GeoLocation (geoType, coordinates, crs)
  • MediaThumbnail, MediaContent
  • ItunesFeedMeta, ItunesOwner, ItunesCategory
  • PodcastMeta, PodcastFunding, PodcastEntryMeta
  • PodcastChapters, PodcastSoundbite
  • PodcastValue, PodcastValueRecipient

Phase 3: Node.js Field Bindings

FeedMeta new fields:

  • geo, itunes, podcast

Entry new fields:

  • geo, dcCreator, dcDate, dcSubject, dcRights
  • mediaThumbnails, mediaContent
  • podcast, itunes

Improvements:

  • Added ItunesEntryMeta type (duration, episode, season, episodeType, etc.)
  • Fixed camelCase naming for FeedMeta DC fields and SyndicationMeta
  • Optimized entries Vec with capacity pre-allocation
  • SSRF security notes on all URL fields

Statistics

Metric Value
Lines added +2,512
Python tests 59 (23 new)
Node.js tests 72 (24 new)
New Python types 6
New Node.js types 14

Test plan

  • cargo test - All Rust tests pass
  • cargo clippy -- -D warnings - No warnings
  • pytest - 59 Python tests pass
  • npm test - 72 Node.js tests pass
  • Security audit - SSRF warnings on all URLs
  • Performance review - Vec capacity optimization applied

…e, and Podcast 2.0

Phase 1: Python Bindings Implementation

New types:
- PyGeoLocation (geo_type, coordinates, srs_name)
- PyMediaThumbnail (url, width, height)
- PyMediaContent (url, type, filesize, width, height, duration)
- PyPodcastChapters (url, type)
- PyPodcastSoundbite (start_time, duration, title)
- PyPodcastEntryMeta (transcript, chapters, soundbite, person)

New Entry getters:
- geo, dc_creator, dc_date, dc_date_parsed, dc_rights, dc_subject
- media_thumbnails, media_content, podcast

New FeedMeta getters:
- geo

All types include __repr__ and __eq__ implementations.
Comprehensive test coverage with 23 new tests.
@github-actions github-actions bot added type: build Build system, dependencies, or tooling type: tooling Development tools, CI/CD, or infrastructure component: core feedparser-rs-core Rust library component: python Python bindings (PyO3) component: node Node.js bindings (napi-rs) component: tests Test suite or test infrastructure component: dependencies Dependency updates or management lang: rust Rust code lang: python Python code size: XXL Huge PR (1000+ lines changed) labels Dec 28, 2025
@codecov-commenter
Copy link

codecov-commenter commented Dec 28, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.

Impacted file tree graph

@@           Coverage Diff           @@
##             main      #36   +/-   ##
=======================================
  Coverage   92.14%   92.14%           
=======================================
  Files          34       34           
  Lines        7446     7446           
=======================================
  Hits         6861     6861           
  Misses        585      585           
Flag Coverage Δ
rust-core 92.14% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
crates/feedparser-rs-core/src/lib.rs 20.95% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Phase 2: Node.js Type Definitions

New types (13 total):
- GeoLocation (geoType, coordinates, crs)
- MediaThumbnail (url, width, height)
- MediaContent (url, type, filesize, width, height, duration)
- ItunesFeedMeta (author, owner, categories, explicit, image, keywords, podcastType, complete, newFeedUrl)
- ItunesOwner (name, email)
- ItunesCategory (text, subcategory)
- PodcastMeta (transcripts, funding, persons, guid, value)
- PodcastFunding (url, message)
- PodcastEntryMeta (transcript, chapters, soundbite, person)
- PodcastChapters (url, type)
- PodcastSoundbite (startTime, duration, title)
- PodcastValue (type, method, suggested, recipients)
- PodcastValueRecipient (name, type, address, split, fee)

Security: SSRF warnings on all URL fields
Documentation: Enhanced with format examples and security notes
@github-actions github-actions bot added the lang: javascript JavaScript/TypeScript code label Dec 28, 2025
Phase 3: Node.js Field Bindings

FeedMeta new fields:
- geo: Option<GeoLocation>
- itunes: Option<ItunesFeedMeta>
- podcast: Option<PodcastMeta>

Entry new fields:
- geo, dcCreator, dcDate, dcSubject, dcRights
- mediaThumbnails, mediaContent
- podcast: Option<PodcastEntryMeta>
- itunes: Option<ItunesEntryMeta>

Improvements:
- Added ItunesEntryMeta type (duration, episode, season, episodeType, etc.)
- Fixed camelCase naming for FeedMeta DC fields and SyndicationMeta
- Optimized entries Vec with capacity pre-allocation
- Added SSRF security notes to all URL fields
- Enhanced SyndicationMeta documentation

Tests: 24 new integration tests, 72 total passing
@bug-ops bug-ops merged commit 93a5649 into main Dec 28, 2025
31 checks passed
@bug-ops bug-ops deleted the feat/complete-bindings branch December 28, 2025 16:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component: core feedparser-rs-core Rust library component: dependencies Dependency updates or management component: node Node.js bindings (napi-rs) component: python Python bindings (PyO3) component: tests Test suite or test infrastructure lang: javascript JavaScript/TypeScript code lang: python Python code lang: rust Rust code size: XXL Huge PR (1000+ lines changed) type: build Build system, dependencies, or tooling type: tooling Development tools, CI/CD, or infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants