forked from TrueCloudLab/frostfs-s3-gw
[#93] Removed unnecessary
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
a6ec27b40d
commit
2af1b16b59
3 changed files with 35 additions and 80 deletions
|
@ -1,6 +1,7 @@
|
|||
package handler
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
|
@ -12,10 +13,18 @@ import (
|
|||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
type devNull int
|
||||
const sizeToDetectType = 512
|
||||
|
||||
func (d devNull) Write(p []byte) (n int, err error) {
|
||||
return len(p), nil
|
||||
func getRangeToDetectContentType(maxSize int64) *layer.RangeParams {
|
||||
end := uint64(maxSize)
|
||||
if sizeToDetectType < end {
|
||||
end = sizeToDetectType
|
||||
}
|
||||
|
||||
return &layer.RangeParams{
|
||||
Start: 0,
|
||||
End: end - 1,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *handler) checkIsFolder(ctx context.Context, bucket, object string) *layer.ObjectInfo {
|
||||
|
@ -73,7 +82,15 @@ func (h *handler) HeadObjectHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}, r.URL)
|
||||
|
||||
return
|
||||
} else if inf.ContentType, err = h.contentTypeFetcher(r.Context(), devNull(0), inf); err != nil {
|
||||
}
|
||||
buffer := bytes.NewBuffer(make([]byte, 0, sizeToDetectType))
|
||||
getParams := &layer.GetObjectParams{
|
||||
Bucket: inf.Bucket,
|
||||
Object: inf.Name,
|
||||
Writer: buffer,
|
||||
Range: getRangeToDetectContentType(inf.Size),
|
||||
}
|
||||
if err = h.obj.GetObject(r.Context(), getParams); err != nil {
|
||||
h.log.Error("could not get object",
|
||||
zap.String("request_id", rid),
|
||||
zap.String("bucket_name", bkt),
|
||||
|
@ -89,7 +106,7 @@ func (h *handler) HeadObjectHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
return
|
||||
}
|
||||
|
||||
inf.ContentType = http.DetectContentType(buffer.Bytes())
|
||||
writeHeaders(w.Header(), inf)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue