feat(plugin): register vortex-mod-gofile v1.0.0 (task 36)#149
Conversation
PRD-v2 §P1.17 / PRD §4.1 — new official Gofile WASM plugin in sibling repo vortex-mod-gofile/. Hoster category, http capability only. Two HTTP round-trips per resolution: GET /createAccount (guest token) then GET /getContent?contentId=<id>&token=<token>. Folder URLs return one FileLink per direct file child; the synthesised https://gofile.io/d/<folder>/<file> shape lets resolve_stream_url pick a specific file inside a multi-file folder. Status envelope mapping: error-notFound / error-passwordRequired → PluginError::Offline so the engine surfaces removed/locked links as offline rather than retrying; any other error-* → PluginError::ApiError. Token query param is percent-encoded defensively, MAX_BODY_BYTES=1 MB caps both responses against memory abuse. 55 native unit tests + 13 fixture-driven JSON cases (account success/ error, single/multi-file folders, sub-folder filtering, unicode, not- found, password-required, empty) + 7 WASM smoke tests with a stubbed http_request that dispatches token vs content responses on URL substring. Registry entry pinned to: - checksum_sha256 = 97661c3fe8f686771a0675421e51b477ff7c559091906e22b8c7ab99663349bd - checksum_sha256_toml = 389889b55b8d1abc3fbace42a77a48815813d86de066ca404533647fb3b5dd9d
📝 WalkthroughWalkthroughAdded documentation and registry entry for the new ChangesPlugin Registration and Documentation
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Review rate limit: 4/5 reviews remaining, refill in 12 minutes. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CHANGELOG.md`:
- Around line 21-22: The changelog entry for "Plugin `vortex-mod-gofile` v1.0.0"
references the wrong registry path `vortex/registry/registry.toml`; open
CHANGELOG.md, locate the paragraph that mentions `vortex/registry/registry.toml`
(the plugin release description) and replace it with the correct
`registry/registry.toml` path, preserving the surrounding text (including the
checksum_sha256 entries) and formatting exactly as before.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 207abd1a-d299-487b-b015-df51af8a3083
📒 Files selected for processing (2)
CHANGELOG.mdregistry/registry.toml
Summary
Adds the new official Gofile hoster plugin to the Vortex registry.
The plugin lives in a sibling repository
vortex-mod-gofileand isshipped as a v1.0.0 GitHub Release. This PR only touches the Vortex repo
to advertise the new entry through
registry/registry.tomlso the hostplugin store can discover and install it.
Sprint task:
prd-v2-roadmap/36— PRD-v2 §P1.17 / PRD §4.1.Why
Gofile is the second simplest free hoster on the v0.3 roadmap (clean public
JSON API, no captcha, no wait timer). The wrinkle compared to Pixeldrain /
MediaFire is that a Gofile share URL points at a folder that may carry
N files, not a single object — so this plugin doubles as a smoke-test for
the multi-file
extract_linksshape (kind: "folder",files: [...]) thatlater crawler plugins (Twitch VODs, podcast feeds) will lean on.
Changes
registry/registry.toml: new[[plugin]]entry pinning v1.0.0 with boththe WASM and
plugin.tomlSHA-256 checksums (so a mutated artefact wouldbe refused at install time).
CHANGELOG.md:[Unreleased] / Addedentry summarising the plugincontract, URL recognition, the two-call resolution flow, error envelope
mapping, defensive caps, test coverage, and registered checksums.
Plugin contract (recap)
can_handle"true"/"false"supports_playlist"true"for folder URLs,"false"for filesextract_linksExtractLinksResponse(kind: "folder"for ≥2 files,"file"for 1)resolve_stream_url{url}URL patterns:
https://(www\.)?gofile\.io/d/<folder>— canonical share page (<folder>alphanumeric, 6+ chars)
https://gofile.io/d/<folder>/<file>— synthesised per-file shape returnedby this plugin's
extract_linksfor multi-file folders, soresolve_stream_url(which contracts to "url string in, single CDN urlout") can disambiguate which child to resolve. Not a public Gofile URL —
emitted and consumed internally only.
Resolution flow (two HTTP round-trips):
GET https://api.gofile.io/createAccount→ guest tokenGET https://api.gofile.io/getContent?contentId=<id>&token=<token>→folder metadata + per-file CDN links
Folder root is enforced (
type == "folder"); only direct file children areemitted (sub-folders filtered out so the host always sees a flat list).
Files with empty
linkfields are skipped defensively. Output is sorted byfile id for deterministic ordering across runs.
Status envelope mapping:
"ok"→ success"error-notFound"/"error-passwordRequired"(and other not-foundvariants) →
PluginError::Offlineso the engine surfaces removed orpassword-locked links as offline rather than retrying indefinitely
"error-..."→PluginError::ApiErrorDefensive caps:
MAX_BODY_BYTES = 1 MBon both responses, percent-encodingon the token query parameter for forward compatibility.
Plugin tests (out of this PR's diff)
Already verified in the sibling repo before tagging v1.0.0:
tests/fixtures/*.json— createAccounthappy/error, single/multi-file folders, sub-folder filtering, unicode
filenames, not-found, password-required, empty)
http_requestthat dispatchescreateAccountvsgetContenton URL substring (end-to-endextract_linksandresolve_stream_urlround-trips)cargo clippy --all-targets -- -D warningscleancargo fmt --checkcleancargo build --target wasm32-wasip1 --release→ 1 121 152 B artefactRelease: https://github.com/mpiton/vortex-mod-gofile/releases/tag/v1.0.0
Asset digests (server-side, GitHub-confirmed)
vortex_mod_gofile.wasm97661c3fe8f686771a0675421e51b477ff7c559091906e22b8c7ab99663349bdplugin.toml389889b55b8d1abc3fbace42a77a48815813d86de066ca404533647fb3b5dd9dBoth match this PR's
registry/registry.tomlentry — the host store clientwill accept the published binary without checksum drift.
Test plan
cargo test --lib registry— 11 pass, no regression in the registryparser
python3 -c "import tomllib; tomllib.load(open('registry/registry.toml','rb'))"— TOML still well-formed, 7 plugin entries (6 existing + gofile)
gh release viewmatch thechecksums committed here
cargo test --workspace— 1439 passed, 0 failed, 5 ignored (noregression elsewhere in the backend)
Related
prd-v2-roadmap/36Summary by cubic
Registers the
vortex-mod-gofilev1.0.0 plugin in the Vortex registry so users can install the official Gofile hoster. Completes task 36 (PRD‑v2 P1.17) and enables folder/file resolution via Gofile’s public API.vortex-mod-gofiletoregistry/registry.tomlwith pinned SHA-256 checksums (WASM andplugin.toml),official = true, andmin_vortex_version = "0.1.0".CHANGELOG.mdwith a short summary of the plugin and its URL support.Written for commit d972298. Summary will update on new commits.
Summary by CodeRabbit
New Features
vortex-mod-gofilev1.0.0 plugin, providing official support for Gofile hosting services with advanced folder and file management, resumable download capabilities, and comprehensive error handling.