diff --git a/bindings/fileTransfer.go b/bindings/fileTransfer.go index 95112911cbc40005332687a985ac82f3376dc9da..a13eb35725a25bdf068da049eb11e31cdc341366 100644 --- a/bindings/fileTransfer.go +++ b/bindings/fileTransfer.go @@ -4,7 +4,6 @@ import ( "encoding/json" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/catalog" - "gitlab.com/elixxir/client/e2e" "gitlab.com/elixxir/client/fileTransfer" ftCrypto "gitlab.com/elixxir/crypto/fileTransfer" "gitlab.com/xx_network/primitives/id" @@ -89,6 +88,8 @@ type FileTransferReceiveProgressCallback interface { // InitFileTransfer creates a bindings-level File Transfer manager // Accepts client ID, ReceiveFileCallback and a ReporterFunc func InitFileTransfer(e2eID int) (*FileTransfer, error) { + paramsJSON := GetDefaultFileTransferParams() + // Get bindings client from singleton e2eCl, err := e2eTrackerSingleton.get(e2eID) if err != nil { @@ -99,8 +100,13 @@ func InitFileTransfer(e2eID int) (*FileTransfer, error) { myID := e2eCl.api.GetTransmissionIdentity().ID rng := e2eCl.api.GetRng() + params, err := parseFileTransferParams(paramsJSON) + if err != nil { + return nil, err + } + // Create file transfer manager - m, err := fileTransfer.NewManager(fileTransfer.DefaultParams(), myID, + m, err := fileTransfer.NewManager(params, myID, e2eCl.api.GetCmix(), e2eCl.api.GetStorage(), rng) // Add file transfer processes to client services tracking @@ -116,6 +122,7 @@ func InitFileTransfer(e2eID int) (*FileTransfer, error) { // Send is the bindings-level function for sending a File func (f *FileTransfer) Send(payload, recipientID []byte, retry float32, period string, callback FileTransferSentProgressCallback) ([]byte, error) { + paramsJSON := GetDefaultE2EParams() // Unmarshal recipient ID recipient, err := id.Unmarshal(recipientID) if err != nil { @@ -146,11 +153,7 @@ func (f *FileTransfer) Send(payload, recipientID []byte, retry float32, } sendNew := func(transferInfo []byte) error { - params, err := e2e.GetDefaultParams().MarshalJSON() - if err != nil { - return err - } - resp, err := f.e2eCl.SendE2E(int(catalog.NewFileTransfer), recipientID, transferInfo, params) + resp, err := f.e2eCl.SendE2E(int(catalog.NewFileTransfer), recipientID, transferInfo, paramsJSON) if err != nil { return err } diff --git a/bindings/params.go b/bindings/params.go index 860c1fbcd1077201c2d285d84af37881fe54e8eb..8a83e63281f4d92306bb8d97b12727fbaf2c2f5e 100644 --- a/bindings/params.go +++ b/bindings/params.go @@ -11,6 +11,8 @@ package bindings import ( jww "github.com/spf13/jwalterweatherman" + "gitlab.com/elixxir/client/fileTransfer" + "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/xxdk" ) @@ -38,6 +40,34 @@ func GetDefaultE2EParams() []byte { return data } +func GetDefaultFileTransferParams() []byte { + defaultParams := fileTransfer.DefaultParams() + data, err := defaultParams.MarshalJSON() + if err != nil { + jww.FATAL.Panicf("Unexpected error: %+v", err) + } + return data +} + +func GetDefaultSingleUseParams() []byte { + defaultParams := single.GetDefaultRequestParams() + data, err := defaultParams.MarshalJSON() + if err != nil { + jww.FATAL.Panicf("Unexpected error: %+v", err) + } + return data +} + +func parseSingleUseParams(data []byte) (single.RequestParams, error) { + p := &single.RequestParams{} + return *p, p.UnmarshalJSON(data) +} + +func parseFileTransferParams(data []byte) (fileTransfer.Params, error) { + p := &fileTransfer.Params{} + return *p, p.UnmarshalJSON(data) +} + func parseCMixParams(data []byte) (xxdk.CMIXParams, error) { p := &xxdk.CMIXParams{} err := p.Unmarshal(data) diff --git a/bindings/restlikeSingle.go b/bindings/restlikeSingle.go index b1dfff9d8d56b95bb7969d2d30fdc6e9090f9d19..cbe93325b50bc6cc4695c141451afba37d52a635 100644 --- a/bindings/restlikeSingle.go +++ b/bindings/restlikeSingle.go @@ -4,7 +4,6 @@ import ( "encoding/json" "gitlab.com/elixxir/client/restlike" "gitlab.com/elixxir/client/restlike/single" - singleuse "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/crypto/contact" ) @@ -21,6 +20,7 @@ type RequestParams struct { // Accepts marshalled contact object as recipient, byte slice payload & headers, method enum and a URI // Returns json marshalled restlike.Message & error func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) { + paramsJSON := GetDefaultSingleUseParams() c, err := e2eTrackerSingleton.get(e2eID) if err != nil { return nil, err @@ -39,11 +39,16 @@ func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) { return nil, err } + params, err := parseSingleUseParams(paramsJSON) + if err != nil { + return nil, err + } + resp, err := req.Request(recipientContact, restlike.Method(message.Method), restlike.URI(message.URI), message.Content, &restlike.Headers{ Headers: message.Headers, Version: 0, - }, singleuse.GetDefaultRequestParams()) + }, params) if err != nil { return nil, err } @@ -54,6 +59,7 @@ func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) { // Accepts marshalled contact object as recipient, byte slice payload & headers, method enum, URI, and a RestlikeCallback // Returns an error, and the RestlikeCallback will be called with the results of json marshalling the response when received func AsyncRequestRestLike(e2eID int, recipient, request []byte, cb RestlikeCallback) error { + paramsJSON := GetDefaultSingleUseParams() c, err := e2eTrackerSingleton.get(e2eID) if err != nil { return err @@ -76,9 +82,14 @@ func AsyncRequestRestLike(e2eID int, recipient, request []byte, cb RestlikeCallb cb.Callback(json.Marshal(message)) } + params, err := parseSingleUseParams(paramsJSON) + if err != nil { + return err + } + return req.AsyncRequest(recipientContact, restlike.Method(message.Method), restlike.URI(message.URI), message.Content, &restlike.Headers{ Headers: message.Headers, Version: 0, - }, rlcb, singleuse.GetDefaultRequestParams()) + }, rlcb, params) } diff --git a/bindings/single.go b/bindings/single.go index 0589007a6c49a78b94d6c4d1482f080796fcefe8..4dcf51e95756a27c968d68e52cdc63cfbbd496f0 100644 --- a/bindings/single.go +++ b/bindings/single.go @@ -14,6 +14,7 @@ import ( // TransmitSingleUse accepts a marshalled recipient contact object, tag, payload, SingleUseResponse callback func & a // Client. Transmits payload to recipient via single use func TransmitSingleUse(e2eID int, recipient []byte, tag string, payload []byte, responseCB SingleUseResponse) ([]byte, error) { + paramsJSON := GetDefaultSingleUseParams() e2eCl, err := e2eTrackerSingleton.get(e2eID) if err != nil { return nil, err @@ -26,7 +27,12 @@ func TransmitSingleUse(e2eID int, recipient []byte, tag string, payload []byte, rcb := &singleUseResponse{response: responseCB} - rids, eid, err := single.TransmitRequest(recipientContact, tag, payload, rcb, single.GetDefaultRequestParams(), e2eCl.api.GetCmix(), e2eCl.api.GetRng().GetStream(), e2eCl.api.GetStorage().GetE2EGroup()) + params, err := parseSingleUseParams(paramsJSON) + if err != nil { + return nil, err + } + + rids, eid, err := single.TransmitRequest(recipientContact, tag, payload, rcb, params, e2eCl.api.GetCmix(), e2eCl.api.GetRng().GetStream(), e2eCl.api.GetStorage().GetE2EGroup()) if err != nil { return nil, err