Peer Discovery

This commit is contained in:
mr
2026-01-28 16:05:47 +01:00
parent 265798bbc3
commit 65e6a1941c
9 changed files with 53 additions and 609 deletions

View File

@@ -1,81 +0,0 @@
package controllers
import (
"context"
"oc-peer/infrastructure"
beego "github.com/beego/beego/v2/server/web"
)
// Operations about workflow
type DistributedPeerController struct {
beego.Controller
}
// @Title Search
// @Description search workspace
// @Param search path string true "the word search you want to get"
// @Param is_draft query string false
// @Success 200 {workspace} models.workspace
// @router /search/:search [get]
func (o *DistributedPeerController) Search() {
//user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
// store and return Id or post with UUIDLibDataEnum
search := o.Ctx.Input.Param(":search")
service := infrastructure.GetDHTService()
code := 400
err := "no DHT Service available"
if service != nil {
if p, errr := service.DiscoverPeers(context.Background(), search); errr == nil {
o.Data["json"] = map[string]interface{}{
"data": p,
"code": 200,
"error": nil,
}
o.ServeJSON()
return
} else {
err = errr.Error()
}
}
o.Data["json"] = map[string]interface{}{
"data": []interface{}{},
"code": code,
"error": err,
}
o.ServeJSON()
}
// @Title Get
// @Description find peer by peerid
// @Param id path string true "the peer id you want to get"
// @Success 200 {peer} models.peer
// @router /:name [get]
func (o *DistributedPeerController) Get() {
name := o.Ctx.Input.Param(":name")
service := infrastructure.GetDHTService()
code := 400
err := "no DHT Service available"
if service != nil {
if p, errr := service.GetPeer(context.Background(), name); errr == nil {
o.Data["json"] = map[string]interface{}{
"data": p,
"code": 200,
"error": nil,
}
o.ServeJSON()
return
} else {
err = errr.Error()
}
}
o.Data["json"] = map[string]interface{}{
"data": nil,
"code": code,
"error": err,
}
o.ServeJSON()
}

View File

@@ -67,7 +67,7 @@ func (o *PeerController) Get() {
// @Success 200 {peer} models.peer
// @router /:from/link/:relation [get]
func (o *PeerController) Link() {
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
_, peerID, _ := oclib.ExtractTokenInfo(*o.Ctx.Request)
id := o.Ctx.Input.Param(":from")
if ok, _ := oclib.IsMySelf(peerID); ok {
o.Data["json"] = map[string]interface{}{
@@ -88,7 +88,7 @@ func (o *PeerController) Link() {
return
}
relation := o.Ctx.Input.Param(":relation") // as partner, blacklist, unknown
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil)
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
l := req.LoadOne(id)
if p := l.ToPeer(); p != nil {
if peer.GetRelationPath(relation) != -1 {
@@ -120,9 +120,9 @@ func (o *PeerController) Link() {
// @Success 200 {peer} models.peer
// @router /:id/unknown [post]
func (o *PeerController) Unknown() {
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
//user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
id := o.Ctx.Input.Param(":id")
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil)
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
data := req.LoadOne(id)
o.changeRelation(data.ToPeer(), peer.NONE, req)
}
@@ -133,9 +133,9 @@ func (o *PeerController) Unknown() {
// @Success 200 {peer} models.peer
// @router /:id/partner [post]
func (o *PeerController) Partner() {
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
// user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
id := o.Ctx.Input.Param(":id")
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil)
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
data := req.LoadOne(id)
o.changeRelation(data.ToPeer(), peer.PARTNER, req)
}
@@ -146,9 +146,9 @@ func (o *PeerController) Partner() {
// @Success 200 {peer} models.peer
// @router /:id/blacklist [post]
func (o *PeerController) Blacklist() {
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
// user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
id := o.Ctx.Input.Param(":id")
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil)
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
data := req.LoadOne(id)
o.changeRelation(data.ToPeer(), peer.BLACKLIST, req)
}