Files
oc-peer/routers/router.go

56 lines
1.4 KiB
Go
Raw Normal View History

2024-07-11 11:40:11 +02:00
// @APIVersion 1.0.0
2024-10-15 10:51:12 +02:00
// @Title oc-peer
2024-09-04 17:23:30 +02:00
// @Description Manage OpenCloud peers
// @Contact admin@o-cloud.io
// @TermsOfServiceUrl http://cloud.o-forge.io/
2024-10-03 09:50:29 +02:00
// @License AGPL
// @LicenseUrl https://www.gnu.org/licenses/agpl-3.0.html
2024-07-11 11:40:11 +02:00
package routers
import (
"encoding/json"
"net/http"
2024-10-15 10:51:12 +02:00
"oc-peer/controllers"
"oc-peer/infrastructure"
"strings"
2024-07-11 11:40:11 +02:00
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/tools"
2024-07-11 11:40:11 +02:00
beego "github.com/beego/beego/v2/server/web"
)
func init() {
2024-07-24 10:25:08 +02:00
ns := beego.NewNamespace("/oc/",
2024-08-26 12:07:54 +02:00
beego.NSNamespace("/status",
2024-08-06 11:09:38 +02:00
beego.NSInclude(
2024-08-21 16:25:24 +02:00
&controllers.StatusController{},
),
),
2024-10-15 10:51:12 +02:00
beego.NSInclude(
&controllers.PeerController{},
2024-08-06 11:09:38 +02:00
),
2024-07-11 11:40:11 +02:00
beego.NSNamespace("/version",
beego.NSInclude(
&controllers.VersionController{},
),
),
)
beego.AddNamespace(ns)
// WebSocket route enregistrée en dehors du pipeline Beego
// beego.Handler bypasse le controller pipeline (pas de WriteHeader parasite)
beego.Handler("/oc/decentralized/search/:search", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
parts := strings.Split(strings.TrimSuffix(r.URL.Path, "/"), "/")
search := parts[len(parts)-1]
user, _, _ := oclib.ExtractTokenInfo(*r)
b, _ := json.Marshal(map[string]string{"search": search})
infrastructure.EmitNATS(user, tools.PropalgationMessage{
Action: tools.PB_SEARCH,
DataType: tools.PEER.EnumIndex(),
Payload: b,
})
controllers.Websocket(r.Context(), user, w, r)
}))
2024-07-11 11:40:11 +02:00
}