According to the frostfs api specification,
the File Path attribute must start with a
leading slash. More info:
https://git.frostfs.info/TrueCloudLab/frostfs-api
Signed-off-by: Roman Loginov <r.loginov@yadro.com>
Use zaptest to get logs which get printed only if a test fails
or if you ran go test -v.
Dont use zaptest.Logger for fuzz otherwise ngfuzz/libfuzz crashes
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
According to the FrostFS API specification,
the FileName attribute cannot contain a slash
at the beginning.
Signed-off-by: Roman Loginov <r.loginov@yadro.com>
During upload if X-Explode-Archive is set, gate tries to read archive and create an object for each file.
Each object acquires a FilePath attribute which is calculated relative to the archive root.
Archive could have compression via Gzip if "Content-Encoding: gzip" header is specified
Signed-off-by: Nikita Zinkevich <n.zinkevich@yadro.com>
Split DownloadZip handler on methods. Add handler DownloadTar for downloading tar.gz archives. Make methods more universal for using in both implementations
Signed-off-by: Nikita Zinkevich <n.zinkevich@yadro.com>
The Access Denied status may be received
from APE due to exceeding the quota. In
this situation, you need to return the
appropriate status code.
Signed-off-by: Roman Loginov <r.loginov@yadro.com>
Prioritize getting s3 object with the key, which equals to valid FrostFS OID, rather than getting non-existent object with OID via native protocol for GET and HEAD requests
Signed-off-by: Nikita Zinkevich <n.zinkevich@yadro.com>
Fallback path to search is needed because
some software may keep FileName attribute
and ignore FilePath attribute during file
upload. Therefore, if this feature is
enabled under certain conditions (for more
information, see gate-configuration.md) a
search will be performed for the FileName
attribute.
Signed-off-by: Roman Loginov <r.loginov@yadro.com>
Add tree service's GetBucketSettings to use them to check for protocol to use (S3 or native). Also add mock implementations for this and GetLatestVersion methods.
Signed-off-by: Nikita Zinkevich <n.zinkevich@yadro.com>
HTTP Gateway expects io.Reader to work with
payload, however `WithPayload` flag reads whole
payload into header object.
Signed-off-by: Alex Vanin <a.vanin@yadro.com>