add recipient finish line

This commit is contained in:
Zack Scholl 2018-09-22 06:20:25 -07:00
parent b1aeedb107
commit cd3a936795
3 changed files with 23 additions and 6 deletions

View File

@ -141,9 +141,6 @@ func send(c *cli.Context) error {
codePhrase,
)
err = cr.Send(fname, codePhrase)
if err == nil {
fmt.Fprintf(os.Stderr, "\nTransfer complete")
}
return err
}

View File

@ -43,6 +43,7 @@ func Receive(done chan struct{}, c *websocket.Conn, codephrase string) {
func receive(c *websocket.Conn, codephrase string) (err error) {
var fstats models.FileStats
var sessionKey []byte
var transferTime time.Duration
// start a spinner
spin := spinner.New(spinner.CharSets[9], 100*time.Millisecond)
@ -128,7 +129,7 @@ func receive(c *websocket.Conn, codephrase string) (err error) {
return err
}
bytesWritten := 0
fmt.Fprintf(os.Stderr, "Receiving...\n")
fmt.Fprintf(os.Stderr, "\nReceiving...\n")
bar := progressbar.NewOptions(
int(fstats.Size),
progressbar.OptionSetRenderBlankState(true),
@ -136,6 +137,7 @@ func receive(c *websocket.Conn, codephrase string) (err error) {
progressbar.OptionSetWriter(os.Stderr),
)
c.WriteMessage(websocket.BinaryMessage, []byte("ready"))
startTime := time.Now()
for {
messageType, message, err := c.ReadMessage()
if err != nil {
@ -174,6 +176,7 @@ func receive(c *websocket.Conn, codephrase string) (err error) {
bar.Add(n)
} else {
// we are finished
transferTime = time.Since(startTime)
// close file
err = f.Close()
@ -204,6 +207,19 @@ func receive(c *websocket.Conn, codephrase string) (err error) {
} else {
err = nil
}
if err == nil {
transferRate := float64(fstats.Size) / 1000000.0 / transferTime.Seconds()
transferType := "MB/s"
if transferRate < 1 {
transferRate = float64(fstats.Size) / 1000.0 / transferTime.Seconds()
transferType = "kB/s"
}
folderOrFile := "file"
if fstats.IsDir {
folderOrFile = "folder"
}
fmt.Fprintf(os.Stderr, "\nReceived %s written to %s (%2.1f %s)\n", folderOrFile, fstats.Name, transferRate, transferType)
}
return err
} else {
c.WriteMessage(websocket.BinaryMessage, []byte("not"))

View File

@ -35,9 +35,13 @@ func Send(done chan struct{}, c *websocket.Conn, fname string, codephrase string
err := send(c, fname, codephrase)
if err != nil {
if strings.HasPrefix(err.Error(), "websocket: close 100") {
return
err = nil
}
if err == nil {
fmt.Fprintf(os.Stderr, "Transfer complete")
} else {
fmt.Fprintf(os.Stderr, err.Error())
}
log.Error(err)
}
done <- struct{}{}
}