simple pull response
This commit is contained in:
parent
dd960d1d5e
commit
0637632258
2 changed files with 12 additions and 15 deletions
|
@ -8,7 +8,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -140,20 +139,8 @@ func (c *Client) Pull(ctx context.Context, req *PullRequest, callback func(progr
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
if err := c.stream(ctx, http.MethodPost, "/api/pull", req, func(progressBytes []byte) {
|
if err := c.stream(ctx, http.MethodPost, "/api/pull", req, func(progressBytes []byte) {
|
||||||
/*
|
|
||||||
Events have the following format for progress:
|
|
||||||
event:progress
|
|
||||||
data:{"total":123,"completed":123,"percent":0.1}
|
|
||||||
Need to parse out the data part and unmarshal it.
|
|
||||||
*/
|
|
||||||
eventParts := strings.Split(string(progressBytes), "data:")
|
|
||||||
if len(eventParts) < 2 {
|
|
||||||
// no data part, ignore
|
|
||||||
return
|
|
||||||
}
|
|
||||||
eventData := eventParts[1]
|
|
||||||
var progress PullProgress
|
var progress PullProgress
|
||||||
if err := json.Unmarshal([]byte(eventData), &progress); err != nil {
|
if err := json.Unmarshal(progressBytes, &progress); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,7 +120,17 @@ func Serve(ln net.Listener) error {
|
||||||
if !ok {
|
if !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
c.SSEvent("progress", progress)
|
|
||||||
|
bts, err := json.Marshal(progress)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
bts = append(bts, '\n')
|
||||||
|
if _, err := w.Write(bts); err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue