- controllers/trigger_controller.go: полная реализация, HTTP->Ingress+Service, Cron->CronJob
- internal/config: добавлены IngressHost, APIToken
- internal/api/router.go: gorilla/mux роутер /v1/namespaces/{ns}/...
- internal/api/handler/: functions, triggers, invocations, base handler с slog
- internal/api/middleware/: auth (Bearer token) + logging (slog)
- main.go: запуск operator + HTTP сервера параллельно
- go.sum: добавлен gorilla/mux v1.8.1
54 lines
1.6 KiB
Go
54 lines
1.6 KiB
Go
// Изменено: 2026-03-07
|
|
// Handler — общий контейнер зависимостей для всех REST handlers.
|
|
// Все handlers получают доступ к k8s, S3 и Postgres через эту структуру.
|
|
// Логирование через slog, маршрутизация через gorilla/mux.
|
|
|
|
package handler
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log/slog"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
|
|
"gitea-naeel.giteak8s.services.ngcloud.ru/naeel/sless/internal/storage/postgres"
|
|
"gitea-naeel.giteak8s.services.ngcloud.ru/naeel/sless/internal/storage/s3"
|
|
)
|
|
|
|
// Handler содержит зависимости для всех REST-обработчиков.
|
|
type Handler struct {
|
|
K8s client.Client
|
|
Scheme *runtime.Scheme
|
|
S3 *s3.Client
|
|
PG *postgres.Store
|
|
Log *slog.Logger
|
|
}
|
|
|
|
// writeJSON отправляет JSON-ответ с указанным статусом.
|
|
func writeJSON(w http.ResponseWriter, status int, v any) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(status)
|
|
_ = json.NewEncoder(w).Encode(v)
|
|
}
|
|
|
|
// errResp возвращает структуру ошибки для JSON.
|
|
func errResp(msg string) map[string]string {
|
|
return map[string]string{"error": msg}
|
|
}
|
|
|
|
// pathVar читает переменную пути из gorilla/mux.
|
|
func pathVar(r *http.Request, key string) string {
|
|
return mux.Vars(r)[key]
|
|
}
|
|
|
|
// namespace читает {namespace} из пути, fallback — "default".
|
|
func namespace(r *http.Request) string {
|
|
if ns := mux.Vars(r)["namespace"]; ns != "" {
|
|
return ns
|
|
}
|
|
return "default"
|
|
}
|