From ff02459402c5b59f36c74a409f636fcdb93d6530 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Tue, 29 Nov 2022 10:20:32 -0800 Subject: [PATCH] no passing respChan --- lib/imgbundler/imgbundler.go | 45 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/lib/imgbundler/imgbundler.go b/lib/imgbundler/imgbundler.go index 6702e3735..776409054 100644 --- a/lib/imgbundler/imgbundler.go +++ b/lib/imgbundler/imgbundler.go @@ -53,11 +53,20 @@ func inline(ms *xmain.State, in []byte, isRemote bool) ([]byte, error) { defer cancel() wg.Add(len(filtered)) for _, img := range filtered { - if isRemote { - go fetch(ctx, img[0], img[1], respChan) - } else { - go read(ctx, img[0], img[1], respChan) - } + go func(src, href string) { + var data string + var err error + if isRemote { + data, err = fetch(ctx, href) + } else { + data, err = read(ctx, href) + } + respChan <- resp{ + srctxt: src, + data: data, + err: err, + } + }(img[0], img[1]) } go func() { @@ -85,24 +94,21 @@ func inline(ms *xmain.State, in []byte, isRemote bool) ([]byte, error) { var transport = http.DefaultTransport -func fetch(ctx context.Context, srctxt, href string, respChan chan resp) { +func fetch(ctx context.Context, href string) (string, error) { req, err := http.NewRequestWithContext(ctx, "GET", href, nil) if err != nil { - respChan <- resp{err: err} - return + return "", err } client := &http.Client{Transport: transport} imgResp, err := client.Do(req) if err != nil { - respChan <- resp{err: err} - return + return "", err } defer imgResp.Body.Close() data, err := ioutil.ReadAll(imgResp.Body) if err != nil { - respChan <- resp{err: err} - return + return "", err } mimeType := http.DetectContentType(data) @@ -110,17 +116,13 @@ func fetch(ctx context.Context, srctxt, href string, respChan chan resp) { enc := base64.StdEncoding.EncodeToString(data) - respChan <- resp{ - srctxt: srctxt, - data: fmt.Sprintf("data:%s;base64,%s", mimeType, enc), - } + return fmt.Sprintf("data:%s;base64,%s", mimeType, enc), nil } -func read(ctx context.Context, srctxt, href string, respChan chan resp) { +func read(ctx context.Context, href string) (string, error) { data, err := os.ReadFile(href) if err != nil { - respChan <- resp{err: err} - return + return "", err } mimeType := http.DetectContentType(data) @@ -128,8 +130,5 @@ func read(ctx context.Context, srctxt, href string, respChan chan resp) { enc := base64.StdEncoding.EncodeToString(data) - respChan <- resp{ - srctxt: srctxt, - data: fmt.Sprintf("data:%s;base64,%s", mimeType, enc), - } + return fmt.Sprintf("data:%s;base64,%s", mimeType, enc), nil }