From d9d2c9dcf3b2be55eb812bbf82113486c7e4ce74 Mon Sep 17 00:00:00 2001
From: jbhusson <jonah@elixxir.io>
Date: Wed, 6 Jul 2022 14:23:09 -0400
Subject: [PATCH] Properly thread params for single, restlikesingle and
 filetransfer

---
 bindings/fileTransfer.go   | 26 +++++++++++++++++++++-----
 bindings/restlikeSingle.go | 17 +++++++----------
 bindings/single.go         |  5 ++---
 3 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/bindings/fileTransfer.go b/bindings/fileTransfer.go
index 89394f4f1..9b8b1da61 100644
--- a/bindings/fileTransfer.go
+++ b/bindings/fileTransfer.go
@@ -86,9 +86,8 @@ type FileTransferReceiveProgressCallback interface {
 /* Main functions */
 
 // InitFileTransfer creates a bindings-level File Transfer manager
-// Accepts client ID, ReceiveFileCallback and a ReporterFunc
-func InitFileTransfer(e2eID int) (*FileTransfer, error) {
-	paramsJSON := GetDefaultFileTransferParams()
+// Accepts e2e client ID and marshalled params JSON
+func InitFileTransfer(e2eID int, paramsJSON []byte) (*FileTransfer, error) {
 
 	// Get bindings client from singleton
 	e2eCl, err := e2eTrackerSingleton.get(e2eID)
@@ -120,9 +119,15 @@ 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,
+// Accepts:
+//  FileSend JSON payload
+//  Marshalled recipient ID
+//  Marshalled e2e Params JSON
+//  Number of retries allowed
+//  Limit on duration between retries
+//  FileTransferSentProgressCallback interface
+func (f *FileTransfer) Send(payload, recipientID, paramsJSON []byte, retry float32,
 	period string, callback FileTransferSentProgressCallback) ([]byte, error) {
-	paramsJSON := GetDefaultE2EParams()
 	// Unmarshal recipient ID
 	recipient, err := id.Unmarshal(recipientID)
 	if err != nil {
@@ -196,6 +201,12 @@ func (f *FileTransfer) CloseSend(tidBytes []byte) error {
 
 /* Callback registration functions */
 
+// RegisterSentProgressCallback allows for the registration of a callback to
+// track the progress of an individual sent file transfer.
+// SentProgressCallback is auto registered on Send; this function should be
+// called when resuming clients or registering extra callbacks.
+// Accepts ID of the transfer, callback for transfer progress,
+// and period between retries
 func (f *FileTransfer) RegisterSentProgressCallback(tidBytes []byte,
 	callback FileTransferSentProgressCallback, period string) error {
 	cb := func(completed bool, arrived, total uint16,
@@ -218,6 +229,11 @@ func (f *FileTransfer) RegisterSentProgressCallback(tidBytes []byte,
 	return f.ft.RegisterSentProgressCallback(&tid, cb, p)
 }
 
+// RegisterReceivedProgressCallback allows for the registration of a
+// callback to track the progress of an individual received file transfer.
+// This should be done when a new transfer is received on the
+// ReceiveCallback.
+// Accepts ID of the transfer, callback for transfer progress and period between retries
 func (f *FileTransfer) RegisterReceivedProgressCallback(tidBytes []byte, callback FileTransferReceiveProgressCallback, period string) error {
 	cb := func(completed bool, received, total uint16,
 		rt fileTransfer.ReceivedTransfer, t fileTransfer.FilePartTracker, err error) {
diff --git a/bindings/restlikeSingle.go b/bindings/restlikeSingle.go
index cbe93325b..eb7d34bee 100644
--- a/bindings/restlikeSingle.go
+++ b/bindings/restlikeSingle.go
@@ -13,14 +13,10 @@ type RestlikeCallback interface {
 	Callback([]byte, error)
 }
 
-type RequestParams struct {
-}
-
 // RequestRestLike sends a restlike request to a given contact
-// Accepts marshalled contact object as recipient, byte slice payload & headers, method enum and a URI
+// Accepts marshalled contact object as recipient, marshalled RestlikeMessage and params JSON
 // Returns json marshalled restlike.Message & error
-func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) {
-	paramsJSON := GetDefaultSingleUseParams()
+func RequestRestLike(e2eID int, recipient, request, paramsJSON []byte) ([]byte, error) {
 	c, err := e2eTrackerSingleton.get(e2eID)
 	if err != nil {
 		return nil, err
@@ -56,10 +52,11 @@ func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) {
 }
 
 // AsyncRequestRestLike sends an asynchronous restlike request to a given contact
-// 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()
+// Accepts e2e client ID, marshalled contact object as recipient,
+// marshalled RestlikeMessage, marshalled Params json, 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, paramsJSON []byte, cb RestlikeCallback) error {
 	c, err := e2eTrackerSingleton.get(e2eID)
 	if err != nil {
 		return err
diff --git a/bindings/single.go b/bindings/single.go
index 4dcf51e95..048edda8a 100644
--- a/bindings/single.go
+++ b/bindings/single.go
@@ -11,10 +11,9 @@ import (
 
 /* PUBLIC WRAPPER METHODS */
 
-// TransmitSingleUse accepts a marshalled recipient contact object, tag, payload, SingleUseResponse callback func & a
+// TransmitSingleUse accepts a marshalled recipient contact object, tag, payload, params JSON, 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()
+func TransmitSingleUse(e2eID int, recipient []byte, tag string, payload, paramsJSON []byte, responseCB SingleUseResponse) ([]byte, error) {
 	e2eCl, err := e2eTrackerSingleton.get(e2eID)
 	if err != nil {
 		return nil, err
-- 
GitLab