47 lines
963 B
Go
47 lines
963 B
Go
|
package objectstore
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"io"
|
||
|
"net/http"
|
||
|
|
||
|
"gitlab.com/gitlab-org/labkit/log"
|
||
|
"gitlab.com/gitlab-org/labkit/mask"
|
||
|
)
|
||
|
|
||
|
type uploadStrategy interface {
|
||
|
Upload(ctx context.Context, r io.Reader) error
|
||
|
ETag() string
|
||
|
Abort()
|
||
|
Delete()
|
||
|
}
|
||
|
|
||
|
func deleteURL(url string) {
|
||
|
if url == "" {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
req, err := http.NewRequest("DELETE", url, nil)
|
||
|
if err != nil {
|
||
|
log.WithError(err).WithField("object", mask.URL(url)).Warning("Delete failed")
|
||
|
return
|
||
|
}
|
||
|
// TODO: consider adding the context to the outgoing request for better instrumentation
|
||
|
|
||
|
// here we are not using u.ctx because we must perform cleanup regardless of parent context
|
||
|
resp, err := httpClient.Do(req)
|
||
|
if err != nil {
|
||
|
log.WithError(err).WithField("object", mask.URL(url)).Warning("Delete failed")
|
||
|
return
|
||
|
}
|
||
|
resp.Body.Close()
|
||
|
}
|
||
|
|
||
|
func extractETag(rawETag string) string {
|
||
|
if rawETag != "" && rawETag[0] == '"' {
|
||
|
rawETag = rawETag[1 : len(rawETag)-1]
|
||
|
}
|
||
|
|
||
|
return rawETag
|
||
|
}
|