From e38b41d4847ec3730d78d0d9eda772662415b3cc Mon Sep 17 00:00:00 2001
From: jbhusson <jonah@elixxir.io>
Date: Wed, 6 Jul 2022 09:23:50 -0400
Subject: [PATCH] More fixes from MR

---
 bindings/fileTransfer.go   | 39 +++++++++-----------------------
 bindings/restlikeSingle.go | 11 +++++----
 bindings/single.go         | 46 +++++++++++++++++++++++---------------
 3 files changed, 45 insertions(+), 51 deletions(-)

diff --git a/bindings/fileTransfer.go b/bindings/fileTransfer.go
index 4176ae716..95112911c 100644
--- a/bindings/fileTransfer.go
+++ b/bindings/fileTransfer.go
@@ -35,7 +35,7 @@ type ReceivedFile struct {
 	Preview    []byte
 	Name       string
 	Type       string
-	Size       uint32
+	Size       int
 }
 
 // FileSend is a public struct which represents a file to be transferred
@@ -61,8 +61,8 @@ type FileSend struct {
 // }
 type Progress struct {
 	Completed   bool
-	Transmitted uint16
-	Total       uint16
+	Transmitted int
+	Total       int
 	Err         error
 }
 
@@ -88,33 +88,14 @@ type FileTransferReceiveProgressCallback interface {
 
 // InitFileTransfer creates a bindings-level File Transfer manager
 // Accepts client ID, ReceiveFileCallback and a ReporterFunc
-func InitFileTransfer(clientID, e2eID int, cb ReceiveFileCallback) (*FileTransfer, error) {
+func InitFileTransfer(e2eID int) (*FileTransfer, error) {
 	// Get bindings client from singleton
-	//c, err := cmixTrackerSingleton.get(clientID)
-	//if err != nil {
-	//	return nil, err
-	//}
 	e2eCl, err := e2eTrackerSingleton.get(e2eID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Create the callback to wrap the ReceiveFileCallback
-	//rcb := func(tid *ftCrypto.TransferID, fileName, fileType string,
-	//	sender *id.ID, size uint32, preview []byte) {
-	//	f := &ReceivedFile{
-	//		TransferID: tid.Bytes(),
-	//		SenderID:   sender.Marshal(),
-	//		Preview:    preview,
-	//		Name:       fileName,
-	//		Type:       fileType,
-	//		Size:       size,
-	//	}
-	//	cb.Callback(json.Marshal(f))
-	//}
-
 	// Client info
-	e2eCl.api.GetTransmissionIdentity()
 	myID := e2eCl.api.GetTransmissionIdentity().ID
 	rng := e2eCl.api.GetRng()
 
@@ -149,8 +130,8 @@ func (f *FileTransfer) Send(payload, recipientID []byte, retry float32,
 		st fileTransfer.SentTransfer, t fileTransfer.FilePartTracker, err error) {
 		prog := &Progress{
 			Completed:   completed,
-			Transmitted: arrived,
-			Total:       total,
+			Transmitted: int(arrived),
+			Total:       int(total),
 			Err:         err,
 		}
 		pm, err := json.Marshal(prog)
@@ -218,8 +199,8 @@ func (f *FileTransfer) RegisterSentProgressCallback(tidBytes []byte,
 		st fileTransfer.SentTransfer, t fileTransfer.FilePartTracker, err error) {
 		prog := &Progress{
 			Completed:   completed,
-			Transmitted: arrived,
-			Total:       total,
+			Transmitted: int(arrived),
+			Total:       int(total),
 			Err:         err,
 		}
 		pm, err := json.Marshal(prog)
@@ -239,8 +220,8 @@ func (f *FileTransfer) RegisterReceivedProgressCallback(tidBytes []byte, callbac
 		rt fileTransfer.ReceivedTransfer, t fileTransfer.FilePartTracker, err error) {
 		prog := &Progress{
 			Completed:   completed,
-			Transmitted: received,
-			Total:       total,
+			Transmitted: int(received),
+			Total:       int(total),
 			Err:         err,
 		}
 		pm, err := json.Marshal(prog)
diff --git a/bindings/restlikeSingle.go b/bindings/restlikeSingle.go
index b39576ce0..b1dfff9d8 100644
--- a/bindings/restlikeSingle.go
+++ b/bindings/restlikeSingle.go
@@ -14,11 +14,14 @@ 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
 // Returns json marshalled restlike.Message & error
-func RequestRestLike(clientID int, recipient, request []byte) ([]byte, error) {
-	c, err := clientTrackerSingleton.get(clientID)
+func RequestRestLike(e2eID int, recipient, request []byte) ([]byte, error) {
+	c, err := e2eTrackerSingleton.get(e2eID)
 	if err != nil {
 		return nil, err
 	}
@@ -50,8 +53,8 @@ func RequestRestLike(clientID 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(clientID int, recipient, request []byte, cb RestlikeCallback) error {
-	c, err := clientTrackerSingleton.get(clientID)
+func AsyncRequestRestLike(e2eID int, recipient, request []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 64e79e29a..0589007a6 100644
--- a/bindings/single.go
+++ b/bindings/single.go
@@ -13,8 +13,8 @@ import (
 
 // TransmitSingleUse accepts a marshalled recipient contact object, tag, payload, SingleUseResponse callback func & a
 // Client.  Transmits payload to recipient via single use
-func TransmitSingleUse(clientID int, recipient []byte, tag string, payload []byte, responseCB SingleUseResponse) ([]byte, error) {
-	cl, err := clientTrackerSingleton.get(clientID)
+func TransmitSingleUse(e2eID int, recipient []byte, tag string, payload []byte, responseCB SingleUseResponse) ([]byte, error) {
+	e2eCl, err := e2eTrackerSingleton.get(e2eID)
 	if err != nil {
 		return nil, err
 	}
@@ -26,27 +26,32 @@ func TransmitSingleUse(clientID int, recipient []byte, tag string, payload []byt
 
 	rcb := &singleUseResponse{response: responseCB}
 
-	rids, eid, err := single.TransmitRequest(recipientContact, tag, payload, rcb, single.GetDefaultRequestParams(), cl.api.GetCmix(), cl.api.GetRng().GetStream(), cl.api.GetStorage().GetE2EGroup())
+	rids, eid, err := single.TransmitRequest(recipientContact, tag, payload, rcb, single.GetDefaultRequestParams(), e2eCl.api.GetCmix(), e2eCl.api.GetRng().GetStream(), e2eCl.api.GetStorage().GetE2EGroup())
 
 	if err != nil {
 		return nil, err
 	}
 	sr := SingleUseSendReport{
-		EphID:      eid,
-		RoundsList: makeRoundsList(rids),
+		EphID:       eid.EphId.Int64(),
+		ReceptionID: eid.Source.Marshal(),
+		RoundsList:  makeRoundsList(rids),
 	}
 	return json.Marshal(sr)
 }
 
 // Listen starts a single use listener on a given tag using the passed in client and SingleUseCallback func
-func Listen(clientID int, tag string, cb SingleUseCallback) (StopFunc, error) {
-	cl, err := clientTrackerSingleton.get(clientID)
+func Listen(e2eID int, tag string, cb SingleUseCallback) (StopFunc, error) {
+	e2eCl, err := e2eTrackerSingleton.get(e2eID)
 	if err != nil {
 		return nil, err
 	}
 
 	listener := singleUseListener{scb: cb}
-	l := single.Listen(tag, cl.api.GetUser().ReceptionID, cl.api.GetUser().E2eDhPrivateKey, cl.api.GetCmix(), cl.api.GetStorage().GetE2EGroup(), listener)
+	dhpk, err := e2eCl.api.GetReceptionIdentity().GetDHKeyPrivate()
+	if err != nil {
+		return nil, err
+	}
+	l := single.Listen(tag, e2eCl.api.GetReceptionIdentity().ID, dhpk, e2eCl.api.GetCmix(), e2eCl.api.GetStorage().GetE2EGroup(), listener)
 	return l.Stop, nil
 }
 
@@ -60,7 +65,8 @@ func Listen(clientID int, tag string, cb SingleUseCallback) (StopFunc, error) {
 //  "Source":"emV6aW1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD"}}
 type SingleUseSendReport struct {
 	RoundsList
-	EphID receptionID.EphemeralIdentity
+	ReceptionID []byte
+	EphID       int64
 }
 
 // SingleUseResponseReport is the bindings struct used to represent information passed
@@ -75,7 +81,8 @@ type SingleUseSendReport struct {
 type SingleUseResponseReport struct {
 	RoundsList
 	Payload     []byte
-	ReceptionID receptionID.EphemeralIdentity
+	ReceptionID []byte
+	EphID       int64
 	Err         error
 }
 
@@ -90,9 +97,10 @@ type SingleUseResponseReport struct {
 //  "Source":"emV6aW1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD"}}
 type SingleUseCallbackReport struct {
 	RoundsList
-	Payload []byte
-	Partner *id.ID
-	EphID   receptionID.EphemeralIdentity
+	Payload     []byte
+	Partner     *id.ID
+	EphID       int64
+	ReceptionID []byte
 }
 
 // Function types
@@ -132,10 +140,11 @@ func (sl singleUseListener) Callback(req *single.Request, eid receptionID.Epheme
 
 	// Todo: what other info from req needs to get to bindings
 	scr := SingleUseCallbackReport{
-		Payload:    req.GetPayload(),
-		RoundsList: makeRoundsList(rids),
-		Partner:    req.GetPartner(),
-		EphID:      eid,
+		Payload:     req.GetPayload(),
+		RoundsList:  makeRoundsList(rids),
+		Partner:     req.GetPartner(),
+		EphID:       eid.EphId.Int64(),
+		ReceptionID: eid.Source.Marshal(),
 	}
 
 	sl.scb.Callback(json.Marshal(scr))
@@ -157,7 +166,8 @@ func (sr singleUseResponse) Callback(payload []byte, receptionID receptionID.Eph
 	}
 	sendReport := SingleUseResponseReport{
 		RoundsList:  makeRoundsList(rids),
-		ReceptionID: receptionID,
+		ReceptionID: receptionID.Source.Marshal(),
+		EphID:       receptionID.EphId.Int64(),
 		Payload:     payload,
 		Err:         err,
 	}
-- 
GitLab