no passing respChan
This commit is contained in:
parent
a5ab1fea29
commit
ff02459402
1 changed files with 22 additions and 23 deletions
|
|
@ -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),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue