no passing respChan

This commit is contained in:
Alexander Wang 2022-11-29 10:20:32 -08:00
parent a5ab1fea29
commit ff02459402
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE

View file

@ -53,11 +53,20 @@ func inline(ms *xmain.State, in []byte, isRemote bool) ([]byte, error) {
defer cancel() defer cancel()
wg.Add(len(filtered)) wg.Add(len(filtered))
for _, img := range filtered { for _, img := range filtered {
if isRemote { go func(src, href string) {
go fetch(ctx, img[0], img[1], respChan) var data string
} else { var err error
go read(ctx, img[0], img[1], respChan) 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() { go func() {
@ -85,24 +94,21 @@ func inline(ms *xmain.State, in []byte, isRemote bool) ([]byte, error) {
var transport = http.DefaultTransport 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) req, err := http.NewRequestWithContext(ctx, "GET", href, nil)
if err != nil { if err != nil {
respChan <- resp{err: err} return "", err
return
} }
client := &http.Client{Transport: transport} client := &http.Client{Transport: transport}
imgResp, err := client.Do(req) imgResp, err := client.Do(req)
if err != nil { if err != nil {
respChan <- resp{err: err} return "", err
return
} }
defer imgResp.Body.Close() defer imgResp.Body.Close()
data, err := ioutil.ReadAll(imgResp.Body) data, err := ioutil.ReadAll(imgResp.Body)
if err != nil { if err != nil {
respChan <- resp{err: err} return "", err
return
} }
mimeType := http.DetectContentType(data) mimeType := http.DetectContentType(data)
@ -110,17 +116,13 @@ func fetch(ctx context.Context, srctxt, href string, respChan chan resp) {
enc := base64.StdEncoding.EncodeToString(data) enc := base64.StdEncoding.EncodeToString(data)
respChan <- resp{ return fmt.Sprintf("data:%s;base64,%s", mimeType, enc), nil
srctxt: srctxt,
data: fmt.Sprintf("data:%s;base64,%s", mimeType, enc),
}
} }
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) data, err := os.ReadFile(href)
if err != nil { if err != nil {
respChan <- resp{err: err} return "", err
return
} }
mimeType := http.DetectContentType(data) mimeType := http.DetectContentType(data)
@ -128,8 +130,5 @@ func read(ctx context.Context, srctxt, href string, respChan chan resp) {
enc := base64.StdEncoding.EncodeToString(data) enc := base64.StdEncoding.EncodeToString(data)
respChan <- resp{ return fmt.Sprintf("data:%s;base64,%s", mimeType, enc), nil
srctxt: srctxt,
data: fmt.Sprintf("data:%s;base64,%s", mimeType, enc),
}
} }