From 67e2e2bdc599cb82f578df53c9ec04bf2455dcfc Mon Sep 17 00:00:00 2001 From: Quinn Slack Date: Sun, 15 Sep 2013 18:05:25 -0700 Subject: [PATCH] Add s3util.Delete function --- s3util/delete.go | 32 ++++++++++++++++++++++++++++++++ s3util/example_test.go | 7 +++++++ 2 files changed, 39 insertions(+) create mode 100644 s3util/delete.go diff --git a/s3util/delete.go b/s3util/delete.go new file mode 100644 index 0000000..e86572f --- /dev/null +++ b/s3util/delete.go @@ -0,0 +1,32 @@ +package s3util + +import ( + "io" + "net/http" + "time" +) + +// Delete deletes the S3 object at url. An HTTP status other than 204 (No +// Content) is considered an error. +// +// If c is nil, Delete uses DefaultConfig. +func Delete(url string, c *Config) (io.ReadCloser, error) { + if c == nil { + c = DefaultConfig + } + r, _ := http.NewRequest("DELETE", url, nil) + r.Header.Set("Date", time.Now().UTC().Format(http.TimeFormat)) + c.Sign(r, *c.Keys) + client := c.Client + if client == nil { + client = http.DefaultClient + } + resp, err := client.Do(r) + if err != nil { + return nil, err + } + if resp.StatusCode != http.StatusNoContent { + return nil, newRespError(resp) + } + return resp.Body, nil +} diff --git a/s3util/example_test.go b/s3util/example_test.go index 8acd4a9..5015970 100644 --- a/s3util/example_test.go +++ b/s3util/example_test.go @@ -15,6 +15,13 @@ func ExampleCreate() { w.Close() } +func ExampleDelete() { + s3util.DefaultConfig.AccessKey = "...access key..." + s3util.DefaultConfig.SecretKey = "...secret key..." + r, _ := s3util.Delete("https://mybucket.s3.amazonaws.com/log.txt", nil) + r.Close() +} + func ExampleOpen() { s3util.DefaultConfig.AccessKey = "...access key..." s3util.DefaultConfig.SecretKey = "...secret key..."