diff --git a/s3api/debuglogger/logger.go b/s3api/debuglogger/logger.go index 88bd172b..defa9055 100644 --- a/s3api/debuglogger/logger.go +++ b/s3api/debuglogger/logger.go @@ -45,9 +45,9 @@ func LogFiberRequestDetails(ctx *fiber.Ctx) { // log request headers wrapInBox(green, "REQUEST HEADERS", boxWidth, func() { - ctx.Request().Header.VisitAll(func(key, value []byte) { + for key, value := range ctx.Request().Header.All() { printWrappedLine(yellow, string(key), string(value)) - }) + } }) // skip request body log for PutObject and UploadPart skipBodyLog := isLargeDataAction(ctx) @@ -61,18 +61,18 @@ func LogFiberRequestDetails(ctx *fiber.Ctx) { } if ctx.Request().URI().QueryArgs().Len() != 0 { - ctx.Request().URI().QueryArgs().VisitAll(func(key, val []byte) { - log.Printf("%s: %s", key, val) - }) + for key, value := range ctx.Request().URI().QueryArgs().All() { + log.Printf("%s: %s", key, value) + } } } // Logs http response details: body, headers func LogFiberResponseDetails(ctx *fiber.Ctx) { wrapInBox(green, "RESPONSE HEADERS", boxWidth, func() { - ctx.Response().Header.VisitAll(func(key, value []byte) { + for key, value := range ctx.Response().Header.All() { printWrappedLine(yellow, string(key), string(value)) - }) + } }) _, ok := ctx.Locals("skip-res-body-log").(bool) diff --git a/s3api/utils/utils.go b/s3api/utils/utils.go index 30d81c75..ada265c2 100644 --- a/s3api/utils/utils.go +++ b/s3api/utils/utils.go @@ -44,14 +44,14 @@ var ( func GetUserMetaData(headers *fasthttp.RequestHeader) (metadata map[string]string) { metadata = make(map[string]string) headers.DisableNormalizing() - headers.VisitAllInOrder(func(key, value []byte) { + for key, value := range headers.AllInOrder() { hKey := string(key) if strings.HasPrefix(strings.ToLower(hKey), "x-amz-meta-") { trimmedKey := hKey[11:] headerValue := string(value) metadata[trimmedKey] = headerValue } - }) + } headers.EnableNormalizing() return @@ -74,12 +74,12 @@ func createHttpRequestFromCtx(ctx *fiber.Ctx, signedHdrs []string, contentLength } // Set the request headers - req.Header.VisitAll(func(key, value []byte) { + for key, value := range req.Header.All() { keyStr := string(key) if includeHeader(keyStr, signedHdrs) { httpReq.Header.Add(keyStr, string(value)) } - }) + } // make sure all headers in the signed headers are present for _, header := range signedHdrs { @@ -124,7 +124,7 @@ func createPresignedHttpRequestFromCtx(ctx *fiber.Ctx, signedHdrs []string, cont uri, _, _ := strings.Cut(ctx.OriginalURL(), "?") isFirst := true - ctx.Request().URI().QueryArgs().VisitAll(func(key, value []byte) { + for key, value := range ctx.Request().URI().QueryArgs().All() { _, ok := signedQueryArgs[string(key)] if !ok { escapeValue := url.QueryEscape(string(value)) @@ -135,19 +135,19 @@ func createPresignedHttpRequestFromCtx(ctx *fiber.Ctx, signedHdrs []string, cont uri += fmt.Sprintf("&%s=%s", key, escapeValue) } } - }) + } httpReq, err := http.NewRequest(string(req.Header.Method()), uri, body) if err != nil { return nil, errors.New("error in creating an http request") } // Set the request headers - req.Header.VisitAll(func(key, value []byte) { + for key, value := range req.Header.All() { keyStr := string(key) if includeHeader(keyStr, signedHdrs) { httpReq.Header.Add(keyStr, string(value)) } - }) + } // Check if Content-Length in signed headers // If content length is non 0, then the header will be included @@ -297,10 +297,10 @@ func FilterObjectAttributes(attrs map[s3response.ObjectAttributes]struct{}, outp func ParseObjectAttributes(ctx *fiber.Ctx) (map[s3response.ObjectAttributes]struct{}, error) { attrs := map[s3response.ObjectAttributes]struct{}{} var err error - ctx.Request().Header.VisitAll(func(key, value []byte) { + for key, value := range ctx.Request().Header.All() { if string(key) == "X-Amz-Object-Attributes" { if len(value) == 0 { - return + break } oattrs := strings.Split(string(value), ",") for _, a := range oattrs { @@ -313,7 +313,7 @@ func ParseObjectAttributes(ctx *fiber.Ctx) (map[s3response.ObjectAttributes]stru attrs[attr] = struct{}{} } } - }) + } if err != nil { return nil, err @@ -426,10 +426,10 @@ func ParseChecksumHeaders(ctx *fiber.Ctx) (types.ChecksumAlgorithm, ChecksumValu var hdrErr error // Parse and validate checksum headers - ctx.Request().Header.VisitAll(func(key, value []byte) { + for key, value := range ctx.Request().Header.All() { // Skip `X-Amz-Checksum-Type` as it's a special header - if hdrErr != nil || !strings.HasPrefix(string(key), "X-Amz-Checksum-") || string(key) == "X-Amz-Checksum-Type" { - return + if !strings.HasPrefix(string(key), "X-Amz-Checksum-") || string(key) == "X-Amz-Checksum-Type" { + continue } algo := types.ChecksumAlgorithm(strings.ToUpper(strings.TrimPrefix(string(key), "X-Amz-Checksum-"))) @@ -437,11 +437,11 @@ func ParseChecksumHeaders(ctx *fiber.Ctx) (types.ChecksumAlgorithm, ChecksumValu if err != nil { debuglogger.Logf("invalid checksum header: %s\n", key) hdrErr = s3err.GetAPIError(s3err.ErrInvalidChecksumHeader) - return + break } checksums[algo] = string(value) - }) + } if hdrErr != nil { return sdkAlgorithm, nil, hdrErr