diff --git a/bindings/restlike.go b/bindings/restlike.go index 9d713441c2fd35e77d8d7c3a09c1d5666b4c78d0..f5a7972c326605b2937f7b483b1a5ffa239bfd80 100644 --- a/bindings/restlike.go +++ b/bindings/restlike.go @@ -5,3 +5,86 @@ //////////////////////////////////////////////////////////////////////////////// package bindings + +import ( + "encoding/json" + "gitlab.com/elixxir/client/e2e" + "gitlab.com/elixxir/client/restlike" + "gitlab.com/elixxir/client/restlike/connect" +) + +// +func RestlikeRequest(clientID int, connectionID int, request []byte) ([]byte, error) { + cl, err := clientTrackerSingleton.get(clientID) + if err != nil { + return nil, err + } + conn, err := connectionTrackerSingleton.get(connectionID) + if err != nil { + return nil, err + } + + msg := &RestlikeMessage{} + err = json.Unmarshal(request, msg) + if err != nil { + return nil, err + } + + c := connect.Request{ + Net: conn.connection, + Rng: cl.api.GetRng().GetStream(), + E2eGrp: nil, + } + + result, err := c.Request(restlike.Method(msg.Method), restlike.URI(msg.URI), msg.Content, &restlike.Headers{ + Headers: msg.Headers, + Version: msg.Version, + }, e2e.GetDefaultParams()) + if err != nil { + return nil, err + } + return json.Marshal(result) +} + +// +type RestlikeMessage struct { + Version uint32 + Headers []byte + Content []byte + Method int + URI string + Error string +} + +// +func RestlikeRequestAuth(clientID int, authConnectionID int, request []byte) ([]byte, error) { + cl, err := clientTrackerSingleton.get(clientID) + if err != nil { + return nil, err + } + auth, err := authenticatedConnectionTrackerSingleton.get(authConnectionID) + if err != nil { + return nil, err + } + + msg := &RestlikeMessage{} + err = json.Unmarshal(request, msg) + if err != nil { + return nil, err + } + + c := connect.Request{ + Net: auth.connection, + Rng: cl.api.GetRng().GetStream(), + E2eGrp: nil, + } + + result, err := c.Request(restlike.Method(msg.Method), restlike.URI(msg.URI), msg.Content, &restlike.Headers{ + Headers: msg.Headers, + Version: msg.Version, + }, e2e.GetDefaultParams()) + if err != nil { + return nil, err + } + return json.Marshal(result) +}