forked from TrueCloudLab/frostfs-http-gw
[#123] Add url-encoded queries for attributes
Signed-off-by: Angira Kekteeva <kira@nspcc.ru>
This commit is contained in:
parent
c21217bc62
commit
c11b2332f9
2 changed files with 16 additions and 2 deletions
13
README.md
13
README.md
|
@ -298,6 +298,9 @@ where
|
||||||
`$ATTRIBUTE_NAME` is the name of the attribute we want to use,
|
`$ATTRIBUTE_NAME` is the name of the attribute we want to use,
|
||||||
`$ATTRIBUTE_VALUE` is the value of this attribute that the target object should have.
|
`$ATTRIBUTE_VALUE` is the value of this attribute that the target object should have.
|
||||||
|
|
||||||
|
**NB!** The attribute key and value must be url encoded, i.e., if you want to download an object with the attribute value
|
||||||
|
`a cat`, the value in the request must be `a+cat`. In the same way with the attribute key.
|
||||||
|
|
||||||
If multiple objects have specified attribute with specified value, then the
|
If multiple objects have specified attribute with specified value, then the
|
||||||
first one of them is returned (and you can't get others via this interface).
|
first one of them is returned (and you can't get others via this interface).
|
||||||
|
|
||||||
|
@ -306,6 +309,11 @@ Example for file name attribute:
|
||||||
```
|
```
|
||||||
$ wget http://localhost:8082/get_by_attribute/88GdaZFTcYJn1dqiSECss8kKPmmun6d6BfvC4zhwfLYM/FileName/cat.jpeg
|
$ wget http://localhost:8082/get_by_attribute/88GdaZFTcYJn1dqiSECss8kKPmmun6d6BfvC4zhwfLYM/FileName/cat.jpeg
|
||||||
```
|
```
|
||||||
|
Or when the filename includes special symbols:
|
||||||
|
```
|
||||||
|
$ wget http://localhost:8082/get_by_attribute/88GdaZFTcYJn1dqiSECss8kKPmmun6d6BfvC4zhwfLYM/FileName/cat+jpeg # means 'cat jpeg'
|
||||||
|
$ wget http://localhost:8082/get_by_attribute/88GdaZFTcYJn1dqiSECss8kKPmmun6d6BfvC4zhwfLYM/FileName/cat%25jpeg # means 'cat%jpeg'
|
||||||
|
```
|
||||||
|
|
||||||
Some other user-defined attribute:
|
Some other user-defined attribute:
|
||||||
|
|
||||||
|
@ -313,6 +321,11 @@ Some other user-defined attribute:
|
||||||
$ wget http://localhost:8082/get_by_attribute/Dxhf4PNprrJHWWTG5RGLdfLkJiSQ3AQqit1MSnEPRkDZ/Ololo/100500
|
$ wget http://localhost:8082/get_by_attribute/Dxhf4PNprrJHWWTG5RGLdfLkJiSQ3AQqit1MSnEPRkDZ/Ololo/100500
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Or when the attribute includes special symbols:
|
||||||
|
```
|
||||||
|
$ wget http://localhost:8082/get_by_attribute/Dxhf4PNprrJHWWTG5RGLdfLkJiSQ3AQqit1MSnEPRkDZ/Olo%2Blo/100500 # means Olo+lo
|
||||||
|
```
|
||||||
|
|
||||||
An optional `download=true` argument for `Content-Disposition` management is
|
An optional `download=true` argument for `Content-Disposition` management is
|
||||||
also supported (more on that below):
|
also supported (more on that below):
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"path"
|
"path"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -314,8 +315,8 @@ func (d *Downloader) byAttribute(c *fasthttp.RequestCtx, f func(request, pool.Ob
|
||||||
var (
|
var (
|
||||||
httpStatus = fasthttp.StatusBadRequest
|
httpStatus = fasthttp.StatusBadRequest
|
||||||
scid, _ = c.UserValue("cid").(string)
|
scid, _ = c.UserValue("cid").(string)
|
||||||
key, _ = c.UserValue("attr_key").(string)
|
key, _ = url.QueryUnescape(c.UserValue("attr_key").(string))
|
||||||
val, _ = c.UserValue("attr_val").(string)
|
val, _ = url.QueryUnescape(c.UserValue("attr_val").(string))
|
||||||
log = d.log.With(zap.String("cid", scid), zap.String("attr_key", key), zap.String("attr_val", val))
|
log = d.log.With(zap.String("cid", scid), zap.String("attr_key", key), zap.String("attr_val", val))
|
||||||
)
|
)
|
||||||
containerID := cid.New()
|
containerID := cid.New()
|
||||||
|
|
Loading…
Reference in a new issue