feat: add HTTP server layer (clipper-server)#1
Draft
sandikodev wants to merge 3 commits intoHans02-Neo:mainfrom
Draft
feat: add HTTP server layer (clipper-server)#1sandikodev wants to merge 3 commits intoHans02-Neo:mainfrom
sandikodev wants to merge 3 commits intoHans02-Neo:mainfrom
Conversation
Expose CLI functionality as a REST API via axum so web services
(pocat-api, ytmod-api) can call the clipper without spawning subprocesses.
Changes:
- Extract shared logic to src/lib.rs (pub functions + types)
- Add src/server.rs — axum HTTP server binary (clipper-server)
- Update src/main.rs to use lib.rs
- Add axum, tower-http, uuid to Cargo.toml
Endpoints:
GET /health
POST /analyze { url, gemini_api_key } → { config }
POST /clip { config } → { results }
BYOK design: caller supplies their own Gemini API key per-request.
No breaking changes to existing CLI behavior.
Usage:
PORT=8080 ./clipper-server
sandikodev
added a commit
to sandikodev/ytmod
that referenced
this pull request
Apr 9, 2026
…server) Engine untuk YT Clipper feature — draft PR ke Hans02-Neo/clipper-rust#1
Collaborator
Author
Catatan CIJob Test ✅ dan Security Audit ✅ pass. Job Build ❌ gagal bukan karena perubahan di PR ini, melainkan karena Fix-nya cukup update - uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4Kalau berkenan, bisa saya sertakan fix ini di PR yang sama atau buat PR terpisah. |
Multi-stage Dockerfile (builder + runtime) — final image hanya
berisi binary + ffmpeg + yt-dlp, tanpa Rust toolchain.
docker-compose.yml — development lokal (port 8080)
docker-compose.prod.yml — production overrides dengan contoh
konfigurasi nginx-proxy, Traefik,
Cloudflare Tunnel, dan manual nginx/Apache
Output clips di-persist via volume ./workspace.
Collaborator
Author
Update terbaru — Docker setupBaru saja push commit
Ini melengkapi HTTP server layer agar langsung bisa di-deploy tanpa setup manual. Saya update PR description di atas dengan kronologi lengkap semua perubahan agar lebih mudah di-review. Silakan kasih feedback di bagian mana saja — saya siap revisi sebelum PR ini di-mark ready. |
sandikodev
added a commit
to sandikodev/ytmod
that referenced
this pull request
Apr 9, 2026
Menambahkan Dockerfile multi-stage + docker-compose untuk development dan production deployment clipper-server. Diusulkan ke upstream via draft PR Hans02-Neo/clipper-rust#1.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Latar Belakang
Saat ini
auto-clipperhanya bisa dipakai sebagai CLI tool. Web services seperti pocat-api dan ytmod-api tidak bisa memanggil clipper tanpa spawn subprocess — tidak praktis untuk production dan tidak bisa di-scale.PR ini mengusulkan penambahan binary kedua
clipper-serveryang mengekspos fungsi yang sama sebagai HTTP REST API, tanpa mengubah behavior CLI yang sudah ada.Kronologi Perubahan
1. Ekstrak logic ke
src/lib.rsSemua fungsi utama (
get_video_info,download_video,get_video_duration,analyze_with_gemini,process_clips) dipindahkan ke library crate agar bisa dipakai oleh dua binary sekaligus.Sebelum:
Sesudah:
Tidak ada perubahan behavior CLI —
main.rstetap berjalan persis seperti sebelumnya.2. Tambah
src/server.rs— HTTP server via axumBinary baru
clipper-serveryang expose tiga endpoint:/health/analyze/clipBYOK design: caller menyertakan Gemini API key per-request di body — tidak ada key yang disimpan di server. Cocok untuk use case di mana end-user menyediakan key mereka sendiri.
3. Tambah Docker setup
Dockerfilemulti-stage:docker-compose.ymluntuk development lokal dandocker-compose.prod.ymluntuk production dengan contoh konfigurasi berbagai reverse proxy (nginx-proxy, Traefik, Cloudflare Tunnel, manual nginx/Apache).4. Update
Cargo.tomlTambah dependencies:
axum = "0.7"— HTTP frameworktower-httpdengan featurecors— CORS middlewareuuid— generate unique temp filename untuk Gemini request (menghindari race condition)Daftarkan
[lib]dan[[bin]] clipper-server.Cara Test
Catatan untuk Reviewer
upload-artifact@v3deprecated (pre-existing issue, sudah diajukan fix di PR ci: update deprecated actions (cache@v3→v4, upload-artifact@v3→v4) #2)Pertanyaan yang ingin saya diskusikan:
lib.rssudah sesuai dengan arah project?