orama/invest-api/router/router.go
anonpenguin23 655bd92178 Squashed 'website/' content from commit d19b985
git-subtree-dir: website
git-subtree-split: d19b98589ec5d235560a210b26195b653a65a808
2026-03-26 18:14:59 +02:00

45 lines
1.8 KiB
Go

package router
import (
"database/sql"
"net/http"
"github.com/debros/orama-website/invest-api/auth"
"github.com/debros/orama-website/invest-api/handler"
"github.com/debros/orama-website/invest-api/helius"
mw "github.com/debros/orama-website/invest-api/middleware"
)
func New(database *sql.DB, jwtSecret string, heliusClient *helius.Client) http.Handler {
mux := http.NewServeMux()
requireAuth := mw.RequireAuth(jwtSecret)
// Public endpoints
mux.HandleFunc("GET /api/stats", handler.StatsHandler(database))
mux.HandleFunc("GET /api/activity", handler.ActivityHandler(database))
mux.HandleFunc("GET /api/price", handler.PriceHandler())
// Auth
mux.HandleFunc("POST /api/auth/login", auth.LoginHandler(database, jwtSecret))
// Authenticated endpoints
authed := http.NewServeMux()
authed.HandleFunc("GET /api/me", handler.MeHandler(database))
authed.HandleFunc("POST /api/purchase/token", handler.TokenPurchaseHandler(database))
authed.HandleFunc("POST /api/purchase/license", handler.LicensePurchaseHandler(database, heliusClient))
authed.HandleFunc("POST /api/whitelist/join", handler.WhitelistJoinHandler(database))
authed.HandleFunc("GET /api/nft/status", handler.NftStatusHandler(heliusClient))
authed.HandleFunc("GET /api/anchat/balance", handler.AnchatBalanceHandler(database, heliusClient))
authed.HandleFunc("POST /api/anchat/claim", handler.AnchatClaimHandler(database, heliusClient))
// Wire authenticated routes through auth middleware
mux.Handle("GET /api/me", requireAuth(authed))
mux.Handle("POST /api/purchase/", requireAuth(authed))
mux.Handle("POST /api/whitelist/", requireAuth(authed))
mux.Handle("GET /api/nft/", requireAuth(authed))
mux.Handle("GET /api/anchat/", requireAuth(authed))
mux.Handle("POST /api/anchat/", requireAuth(authed))
return mw.CORS(mux)
}