feat(AveragePosition): method to emit average_base_coordinates message

This commit is contained in:
2025-06-11 12:00:30 +02:00
parent 81741d20c1
commit abebc7d8c6
6 changed files with 85 additions and 2 deletions

View File

@ -2,6 +2,7 @@ package v2
import (
"context"
"encoding/json"
"net/http"
"sync"
@ -264,4 +265,35 @@ func (o *Operations) On(ctx context.Context, event string) (chan any, error) {
return out, nil
}
func (o *Operations) AveragePosition(ctx context.Context) (*protocol.TaskMessage, error) {
var err error
go func() {
<-ctx.Done()
err = ctx.Err()
}()
if err = o.client.Emit("task", &model.Action{Name: "average_base_coordinates"}); err != nil {
return nil, err
}
ch, err := o.On(ctx, "task_status")
for message := range ch {
// Convertir vers notre struct
jsonData, err := json.Marshal(message)
if err != nil {
continue
}
var taskMsg protocol.TaskMessage
if err := json.Unmarshal(jsonData, &taskMsg); err != nil {
continue
}
if taskMsg.State == "completed" {
return &taskMsg, nil
}
}
return nil, err
}
var _ protocol.Operations = &Operations{}