56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
// @APIVersion 1.0.0
|
|
// @Title oc-peer
|
|
// @Description Manage OpenCloud peers
|
|
// @Contact admin@o-cloud.io
|
|
// @TermsOfServiceUrl http://cloud.o-forge.io/
|
|
// @License AGPL
|
|
// @LicenseUrl https://www.gnu.org/licenses/agpl-3.0.html
|
|
package routers
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"oc-peer/controllers"
|
|
"oc-peer/infrastructure"
|
|
"strings"
|
|
|
|
oclib "cloud.o-forge.io/core/oc-lib"
|
|
"cloud.o-forge.io/core/oc-lib/tools"
|
|
beego "github.com/beego/beego/v2/server/web"
|
|
)
|
|
|
|
func init() {
|
|
ns := beego.NewNamespace("/oc/",
|
|
beego.NSNamespace("/status",
|
|
beego.NSInclude(
|
|
&controllers.StatusController{},
|
|
),
|
|
),
|
|
beego.NSInclude(
|
|
&controllers.PeerController{},
|
|
),
|
|
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)
|
|
}))
|
|
}
|