[#134] Support percent-encoding #134

Merged
alexvanin merged 1 commit from pogpp/frostfs-http-gw:feature/percent_encoding into master 2024-09-03 12:00:14 +00:00
2 changed files with 8 additions and 1 deletions

View file

@ -3,6 +3,7 @@
This document outlines major changes between releases. This document outlines major changes between releases.
## [Unreleased] ## [Unreleased]
- Support percent-encoding for GET queries (#134)
dkirillov marked this conversation as resolved Outdated

Please use linkt to PR

Please use linkt to PR
## [0.30.0] - Kangshung - 2024-07-22 ## [0.30.0] - Kangshung - 2024-07-22

View file

@ -215,6 +215,12 @@ func (h *Handler) byObjectName(req *fasthttp.RequestCtx, f func(context.Context,
log = h.log.With(zap.String("bucketname", bucketname), zap.String("key", key)) log = h.log.With(zap.String("bucketname", bucketname), zap.String("key", key))
) )
unescapedKey, err := url.QueryUnescape(key)
if err != nil {
logAndSendBucketError(req, log, err)
return
}
ctx := utils.GetContextFromRequest(req) ctx := utils.GetContextFromRequest(req)
bktInfo, err := h.getBucketInfo(ctx, bucketname, log) bktInfo, err := h.getBucketInfo(ctx, bucketname, log)
@ -223,7 +229,7 @@ func (h *Handler) byObjectName(req *fasthttp.RequestCtx, f func(context.Context,
return return
} }
foundOid, err := h.tree.GetLatestVersion(ctx, &bktInfo.CID, key) foundOid, err := h.tree.GetLatestVersion(ctx, &bktInfo.CID, unescapedKey)
if err != nil { if err != nil {
if errors.Is(err, tree.ErrNodeAccessDenied) { if errors.Is(err, tree.ErrNodeAccessDenied) {
response.Error(req, "Access Denied", fasthttp.StatusForbidden) response.Error(req, "Access Denied", fasthttp.StatusForbidden)