浏览代码

Move download options to imagedata.DownloadOptions

DarthSim 2 年之前
父节点
当前提交
aa80dc022f
共有 3 个文件被更改,包括 19 次插入14 次删除
  1. 9 4
      imagedata/download.go
  2. 4 6
      imagedata/image_data.go
  3. 6 4
      processing_handler.go

+ 9 - 4
imagedata/download.go

@@ -40,6 +40,11 @@ var (
 
 const msgSourceImageIsUnreachable = "Source image is unreachable"
 
+type DownloadOptions struct {
+	Header    http.Header
+	CookieJar *cookiejar.Jar
+}
+
 type ErrorNotModified struct {
 	Message string
 	Headers map[string]string
@@ -174,8 +179,8 @@ func SendRequest(req *http.Request) (*http.Response, error) {
 	return res, nil
 }
 
-func requestImage(imageURL string, header http.Header, jar *cookiejar.Jar) (*http.Response, error) {
-	req, err := BuildImageRequest(imageURL, header, jar)
+func requestImage(imageURL string, opts DownloadOptions) (*http.Response, error) {
+	req, err := BuildImageRequest(imageURL, opts.Header, opts.CookieJar)
 	if err != nil {
 		return nil, err
 	}
@@ -206,13 +211,13 @@ func requestImage(imageURL string, header http.Header, jar *cookiejar.Jar) (*htt
 	return res, nil
 }
 
-func download(imageURL string, header http.Header, jar *cookiejar.Jar, secopts security.Options) (*ImageData, error) {
+func download(imageURL string, opts DownloadOptions, secopts security.Options) (*ImageData, error) {
 	// We use this for testing
 	if len(redirectAllRequestsTo) > 0 {
 		imageURL = redirectAllRequestsTo
 	}
 
-	res, err := requestImage(imageURL, header, jar)
+	res, err := requestImage(imageURL, opts)
 	if res != nil {
 		defer res.Body.Close()
 	}

+ 4 - 6
imagedata/image_data.go

@@ -4,8 +4,6 @@ import (
 	"context"
 	"encoding/base64"
 	"fmt"
-	"net/http"
-	"net/http/cookiejar"
 	"os"
 	"strings"
 	"sync"
@@ -72,7 +70,7 @@ func loadWatermark() (err error) {
 	}
 
 	if len(config.WatermarkURL) > 0 {
-		Watermark, err = Download(config.WatermarkURL, "watermark", nil, nil, security.DefaultOptions())
+		Watermark, err = Download(config.WatermarkURL, "watermark", DownloadOptions{Header: nil, CookieJar: nil}, security.DefaultOptions())
 		return
 	}
 
@@ -86,7 +84,7 @@ func loadFallbackImage() (err error) {
 	case len(config.FallbackImagePath) > 0:
 		FallbackImage, err = FromFile(config.FallbackImagePath, "fallback image", security.DefaultOptions())
 	case len(config.FallbackImageURL) > 0:
-		FallbackImage, err = Download(config.FallbackImageURL, "fallback image", nil, nil, security.DefaultOptions())
+		FallbackImage, err = Download(config.FallbackImageURL, "fallback image", DownloadOptions{Header: nil, CookieJar: nil}, security.DefaultOptions())
 	default:
 		FallbackImage, err = nil, nil
 	}
@@ -132,8 +130,8 @@ func FromFile(path, desc string, secopts security.Options) (*ImageData, error) {
 	return imgdata, nil
 }
 
-func Download(imageURL, desc string, header http.Header, jar *cookiejar.Jar, secopts security.Options) (*ImageData, error) {
-	imgdata, err := download(imageURL, header, jar, secopts)
+func Download(imageURL, desc string, opts DownloadOptions, secopts security.Options) (*ImageData, error) {
+	imgdata, err := download(imageURL, opts, secopts)
 	if err != nil {
 		if nmErr, ok := err.(*ErrorNotModified); ok {
 			nmErr.Message = fmt.Sprintf("Can't download %s: %s", desc, nmErr.Message)

+ 6 - 4
processing_handler.go

@@ -4,7 +4,6 @@ import (
 	"context"
 	"fmt"
 	"net/http"
-	"net/http/cookiejar"
 	"strconv"
 	"strings"
 	"time"
@@ -288,14 +287,17 @@ func handleProcessing(reqID string, rw http.ResponseWriter, r *http.Request) {
 	originData, err := func() (*imagedata.ImageData, error) {
 		defer metrics.StartDownloadingSegment(ctx)()
 
-		var cookieJar *cookiejar.Jar
+		downloadOpts := imagedata.DownloadOptions{
+			Header:    imgRequestHeader,
+			CookieJar: nil,
+		}
 
 		if config.CookiePassthrough {
-			cookieJar, err = cookies.JarFromRequest(r)
+			downloadOpts.CookieJar, err = cookies.JarFromRequest(r)
 			checkErr(ctx, "download", err)
 		}
 
-		return imagedata.Download(imageURL, "source image", imgRequestHeader, cookieJar, po.SecurityOptions)
+		return imagedata.Download(imageURL, "source image", downloadOpts, po.SecurityOptions)
 	}()
 
 	if err == nil {