mirror of
				https://github.com/imgproxy/imgproxy.git
				synced 2025-10-30 23:08:02 +02:00 
			
		
		
		
	Polish Azure Blob Storage support
This commit is contained in:
		| @@ -9,15 +9,15 @@ import ( | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/imgproxy/imgproxy/v3/httprange" | ||||
|  | ||||
| 	"github.com/Azure/azure-sdk-for-go/sdk/azcore" | ||||
| 	"github.com/Azure/azure-sdk-for-go/sdk/azidentity" | ||||
| 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob" | ||||
| 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob" | ||||
| 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob" | ||||
|  | ||||
| 	"github.com/imgproxy/imgproxy/v3/config" | ||||
| 	"github.com/imgproxy/imgproxy/v3/ctxreader" | ||||
| 	"github.com/imgproxy/imgproxy/v3/httprange" | ||||
| ) | ||||
|  | ||||
| type transport struct { | ||||
| @@ -27,12 +27,12 @@ type transport struct { | ||||
| func New() (http.RoundTripper, error) { | ||||
| 	var ( | ||||
| 		client                 *azblob.Client | ||||
| 		sharedKeyCredential    *azblob.SharedKeyCredential | ||||
| 		defaultAzureCredential *azidentity.DefaultAzureCredential | ||||
| 		err                    error | ||||
| 		sharedKeyCredential    *azblob.SharedKeyCredential | ||||
| 	) | ||||
|  | ||||
| 	if config.ABSName == "" { | ||||
| 	if len(config.ABSName) == 0 { | ||||
| 		return nil, errors.New("IMGPROXY_ABS_NAME must be set") | ||||
| 	} | ||||
|  | ||||
| @@ -40,12 +40,13 @@ func New() (http.RoundTripper, error) { | ||||
| 	if len(endpoint) == 0 { | ||||
| 		endpoint = fmt.Sprintf("https://%s.blob.core.windows.net", config.ABSName) | ||||
| 	} | ||||
|  | ||||
| 	endpointURL, err := url.Parse(endpoint) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	if config.ABSKey != "" { | ||||
| 	if len(config.ABSKey) > 0 { | ||||
| 		sharedKeyCredential, err = azblob.NewSharedKeyCredential(config.ABSName, config.ABSKey) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| @@ -72,7 +73,7 @@ func (t transport) RoundTrip(req *http.Request) (*http.Response, error) { | ||||
| 	container := req.URL.Host | ||||
| 	key := req.URL.Path | ||||
|  | ||||
| 	var statusCode = http.StatusOK | ||||
| 	statusCode := http.StatusOK | ||||
|  | ||||
| 	header := make(http.Header) | ||||
| 	opts := &blob.DownloadStreamOptions{} | ||||
| @@ -139,7 +140,9 @@ func (t transport) RoundTrip(req *http.Request) (*http.Response, error) { | ||||
|  | ||||
| 	header.Set("Accept-Ranges", "bytes") | ||||
|  | ||||
| 	contentLength := int64(0) | ||||
| 	if result.ContentLength != nil { | ||||
| 		contentLength = *result.ContentLength | ||||
| 		header.Set("Content-Length", strconv.FormatInt(*result.ContentLength, 10)) | ||||
| 	} | ||||
|  | ||||
| @@ -161,7 +164,7 @@ func (t transport) RoundTrip(req *http.Request) (*http.Response, error) { | ||||
| 		ProtoMajor:    1, | ||||
| 		ProtoMinor:    0, | ||||
| 		Header:        header, | ||||
| 		ContentLength: *result.ContentLength, | ||||
| 		ContentLength: contentLength, | ||||
| 		Body:          ctxreader.New(req.Context(), result.Body, true), | ||||
| 		Close:         true, | ||||
| 		Request:       req, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user