Skip to content

feat(plugin): register vortex-mod-gofile v1.0.0 (task 36)#149

Merged
mpiton merged 1 commit intomainfrom
feat/task-36-plugin-gofile
May 4, 2026
Merged

feat(plugin): register vortex-mod-gofile v1.0.0 (task 36)#149
mpiton merged 1 commit intomainfrom
feat/task-36-plugin-gofile

Conversation

@mpiton
Copy link
Copy Markdown
Owner

@mpiton mpiton commented May 4, 2026

Summary

Adds the new official Gofile hoster plugin to the Vortex registry.
The plugin lives in a sibling repository
vortex-mod-gofile and is
shipped as a v1.0.0 GitHub Release. This PR only touches the Vortex repo
to advertise the new entry through registry/registry.toml so the host
plugin 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_links shape (kind: "folder", files: [...]) that
later crawler plugins (Twitch VODs, podcast feeds) will lean on.

Changes

  • registry/registry.toml: new [[plugin]] entry pinning v1.0.0 with both
    the WASM and plugin.toml SHA-256 checksums (so a mutated artefact would
    be refused at install time).
  • CHANGELOG.md: [Unreleased] / Added entry summarising the plugin
    contract, URL recognition, the two-call resolution flow, error envelope
    mapping, defensive caps, test coverage, and registered checksums.

Plugin contract (recap)

Function Input Output
can_handle URL string "true" / "false"
supports_playlist URL string "true" for folder URLs, "false" for files
extract_links URL string JSON ExtractLinksResponse (kind: "folder" for ≥2 files, "file" for 1)
resolve_stream_url JSON {url} direct CDN URL string

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 returned
    by this plugin's extract_links for multi-file folders, so
    resolve_stream_url (which contracts to "url string in, single CDN url
    out") can disambiguate which child to resolve. Not a public Gofile URL —
    emitted and consumed internally only.

Resolution flow (two HTTP round-trips):

  1. GET https://api.gofile.io/createAccount → guest token
  2. GET 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 are
emitted (sub-folders filtered out so the host always sees a flat list).
Files with empty link fields are skipped defensively. Output is sorted by
file id for deterministic ordering across runs.

Status envelope mapping:

  • "ok" → success
  • "error-notFound" / "error-passwordRequired" (and other not-found
    variants) → PluginError::Offline so the engine surfaces removed or
    password-locked links as offline rather than retrying indefinitely
  • any other "error-..."PluginError::ApiError

Defensive caps: MAX_BODY_BYTES = 1 MB on both responses, percent-encoding
on 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:

  • 55 native unit tests (lib + url_matcher + api_client + error mapping)
  • 13 fixture-driven JSON cases (tests/fixtures/*.json — createAccount
    happy/error, single/multi-file folders, sub-folder filtering, unicode
    filenames, not-found, password-required, empty)
  • 7 WASM smoke tests via Extism with stub http_request that dispatches
    createAccount vs getContent on URL substring (end-to-end
    extract_links and resolve_stream_url round-trips)
  • cargo clippy --all-targets -- -D warnings clean
  • cargo fmt --check clean
  • cargo build --target wasm32-wasip1 --release → 1 121 152 B artefact

Release: https://github.com/mpiton/vortex-mod-gofile/releases/tag/v1.0.0

Asset digests (server-side, GitHub-confirmed)

File SHA-256
vortex_mod_gofile.wasm 97661c3fe8f686771a0675421e51b477ff7c559091906e22b8c7ab99663349bd
plugin.toml 389889b55b8d1abc3fbace42a77a48815813d86de066ca404533647fb3b5dd9d

Both match this PR's registry/registry.toml entry — the host store client
will accept the published binary without checksum drift.

Test plan

  • cargo test --lib registry — 11 pass, no regression in the registry
    parser
  • python3 -c "import tomllib; tomllib.load(open('registry/registry.toml','rb'))"
    — TOML still well-formed, 7 plugin entries (6 existing + gofile)
  • Server-side asset digests reported by gh release view match the
    checksums committed here
  • cargo test --workspace — 1439 passed, 0 failed, 5 ignored (no
    regression elsewhere in the backend)

Related


Summary by cubic

Registers the vortex-mod-gofile v1.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.

  • New Features
    • Added vortex-mod-gofile to registry/registry.toml with pinned SHA-256 checksums (WASM and plugin.toml), official = true, and min_vortex_version = "0.1.0".
    • Updated CHANGELOG.md with 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

  • Released the vortex-mod-gofile v1.0.0 plugin, providing official support for Gofile hosting services with advanced folder and file management, resumable download capabilities, and comprehensive error handling.

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
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 4, 2026

📝 Walkthrough

Walkthrough

Added documentation and registry entry for the new vortex-mod-gofile v1.0.0 plugin, including metadata (checksums, author, category, version), supported URL patterns, resolution flow, error handling, and test coverage details.

Changes

Plugin Registration and Documentation

Layer / File(s) Summary
Plugin Registry Entry
registry/registry.toml
New [[plugin]] block for vortex-mod-gofile with metadata: description, author, version 1.0.0, category hoster, repository URL, checksum_sha256, checksum_sha256_toml, official = true, and min_vortex_version = "0.1.0".
Changelog Documentation
CHANGELOG.md
New entry under [Unreleased] → Added documenting plugin URL patterns, guest-token + metadata resolution, folder/file handling, sub-folder filtering, error mapping, resumable download support, and associated test coverage with registry checksums.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Suggested labels

documentation


🐰 A plugin hops into view,
With checksums shiny, registry true,
Gofile's ready to extract and serve,
In the changelog, its place to preserve! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: registering a new plugin (vortex-mod-gofile v1.0.0) in the repository, which is the primary purpose of the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/task-36-plugin-gofile

Review rate limit: 4/5 reviews remaining, refill in 12 minutes.

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label May 4, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 2e36b51 and d972298.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • registry/registry.toml

Comment thread CHANGELOG.md
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 2 files

@codspeed-hq
Copy link
Copy Markdown
Contributor

codspeed-hq Bot commented May 4, 2026

Merging this PR will not alter performance

✅ 26 untouched benchmarks


Comparing feat/task-36-plugin-gofile (d972298) with main (2e36b51)

Open in CodSpeed

@mpiton mpiton merged commit 35646a0 into main May 4, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant