46 lines
963 B
Go
46 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
|
|
}
|