straw/rust/strawcore/src
Kayos 467a5f10fa Phase 7 — strawcore wrapper now bridges to Sulkta-Coop/strawcore-core
Replaces the rustypipe-backed extraction with calls into the new
NPE-port crate. The UniFFI surface Kotlin sees is unchanged:

  suspend fun search(query: String): List<SearchItem>
  suspend fun streamInfo(input: String): StreamInfo
  suspend fun channelInfo(input: String): ChannelInfo
  fun initLogging()  // also wires the strawcore-core Downloader
  fun helloFromRust(name: String): String

rust/strawcore/
  * Cargo.toml      — dropped rustypipe + rquickjs-sys direct dep;
                      added strawcore-core path dep (../../../strawcore)
  * src/error.rs    — From<strawcore_core::ExtractionError>, mapping
                      ContentUnavailable variants to typed
                      StrawcoreError cases (AgeRestricted, GeoRestricted,
                      Private, RequiresLogin) instead of bucketing all
                      to Extractor
  * src/runtime.rs  — Once-guarded ReqwestDownloader init via
                      NewPipe::init_full
  * src/search.rs   — search() spawn_blocks core search_extractor::search
                      against SearchFilter::Videos
  * src/stream.rs   — stream_info() resolves URL → video_id via
                      strawcore_core::linkhandler::stream, then
                      spawn_blocks core stream_extractor::stream_info,
                      then maps StreamInfo → wrapper DTOs (combined/
                      video_only/audio_only/dash/hls)
  * src/channel.rs  — channel_info() parses input via
                      strawcore_core::linkhandler::channel (handle /
                      custom-url / legacy-user resolution lives in
                      core), then spawn_blocks core channel::channel_info

Build verified: wrapper compiles linking strawcore-core, uniffi-bindgen
generates Kotlin bindings with the same suspend fun + data class
surface Kotlin already consumes. Android NDK cross-compile + APK + on-
device smoke pending (needs crafting-table container).

This commits onto rollback/vc18-back-to-NPE — the existing Kotlin code
still calls NewPipeExtractor directly. Switching the Kotlin side to
consume the rust wrapper is a separate cutover.
2026-05-24 17:29:23 -07:00
..
channel.rs Phase 7 — strawcore wrapper now bridges to Sulkta-Coop/strawcore-core 2026-05-24 17:29:23 -07:00
error.rs Phase 7 — strawcore wrapper now bridges to Sulkta-Coop/strawcore-core 2026-05-24 17:29:23 -07:00
lib.rs Phase 7 — strawcore wrapper now bridges to Sulkta-Coop/strawcore-core 2026-05-24 17:29:23 -07:00
runtime.rs Phase 7 — strawcore wrapper now bridges to Sulkta-Coop/strawcore-core 2026-05-24 17:29:23 -07:00
search.rs Phase 7 — strawcore wrapper now bridges to Sulkta-Coop/strawcore-core 2026-05-24 17:29:23 -07:00
stream.rs Phase 7 — strawcore wrapper now bridges to Sulkta-Coop/strawcore-core 2026-05-24 17:29:23 -07:00
uniffi-bindgen.rs v0.1.0-U (vc=8): Phase U-1 + U-2 — Rust core + rustypipe search 2026-05-24 08:36:50 -07:00