first round of files

This commit is contained in:
2026-05-06 23:13:06 +02:00
parent a30962474d
commit 2aa5d01307
24 changed files with 991 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
package handlers
import (
"encoding/json"
"net/http"
)
type PipelineHandler struct{}
func NewPipelineHandler() *PipelineHandler {
return &PipelineHandler{}
}
func (h *PipelineHandler) List(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode([]any{})
}
func (h *PipelineHandler) Get(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
}
+33
View File
@@ -0,0 +1,33 @@
package handlers
import (
"encoding/json"
"net/http"
)
type PRHandler struct{}
func NewPRHandler() *PRHandler {
return &PRHandler{}
}
func (h *PRHandler) List(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode([]any{})
}
func (h *PRHandler) Create(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
json.NewEncoder(w).Encode(map[string]string{"status": "created"})
}
func (h *PRHandler) Get(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
}
func (h *PRHandler) Merge(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "merged"})
}
+38
View File
@@ -0,0 +1,38 @@
package handlers
import (
"encoding/json"
"net/http"
)
type RepoHandler struct{}
func NewRepoHandler() *RepoHandler {
return &RepoHandler{}
}
func (h *RepoHandler) List(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode([]any{})
}
func (h *RepoHandler) Create(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
json.NewEncoder(w).Encode(map[string]string{"status": "created"})
}
func (h *RepoHandler) Get(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
}
func (h *RepoHandler) Tree(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode([]any{})
}
func (h *RepoHandler) Blob(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"content": ""})
}
+33
View File
@@ -0,0 +1,33 @@
package handlers
import (
"encoding/json"
"net/http"
"github.com/gorilla/sessions"
)
type UserHandler struct {
store sessions.Store
}
func NewUserHandler(store sessions.Store) *UserHandler {
return &UserHandler{store: store}
}
func (h *UserHandler) Me(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
}
func (h *UserHandler) Login(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
}
func (h *UserHandler) Logout(w http.ResponseWriter, r *http.Request) {
session, _ := h.store.Get(r, "fb_session")
session.Options.MaxAge = -1
session.Save(r, w)
w.WriteHeader(http.StatusNoContent)
}
+35
View File
@@ -0,0 +1,35 @@
package handlers
import (
"net/http"
"nhooyr.io/websocket"
"nhooyr.io/websocket/wsjson"
)
type WSHandler struct{}
func NewWSHandler() *WSHandler {
return &WSHandler{}
}
func (h *WSHandler) Hub(w http.ResponseWriter, r *http.Request) {
conn, err := websocket.Accept(w, r, &websocket.AcceptOptions{
OriginPatterns: []string{"localhost:*"},
})
if err != nil {
return
}
defer conn.CloseNow()
ctx := r.Context()
for {
var msg map[string]any
if err := wsjson.Read(ctx, conn, &msg); err != nil {
break
}
if err := wsjson.Write(ctx, conn, msg); err != nil {
break
}
}
}