From 15c53cff19a85de602765527921a8a486e7afcdd Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Tue, 28 Jan 2014 18:02:31 -0600 Subject: [PATCH] s3 storage abstraction --- util/storage.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 util/storage.go diff --git a/util/storage.go b/util/storage.go new file mode 100644 index 000000000..0164a3a35 --- /dev/null +++ b/util/storage.go @@ -0,0 +1,36 @@ +package util + +import ( + "io" + "os" + "pilosa/config" + "strings" + + "github.com/kr/s3/s3util" +) + +func init() { + access_key := config.GetString("AWS_ACCESS_KEY_ID") + secret := config.GetString("AWS_SECRET_ACCESS_KEY") + + s3util.DefaultConfig.AccessKey = access_key + s3util.DefaultConfig.SecretKey = secret +} + +func Open(s string) (io.ReadCloser, error) { + if isURL(s) { + return s3util.Open(s, nil) + } + return os.Open(s) +} + +func Create(s string) (io.WriteCloser, error) { + if isURL(s) { + return s3util.Create(s, nil, nil) + } + return os.Create(s) +} + +func isURL(s string) bool { + return strings.HasPrefix(s, "http://") || strings.HasPrefix(s, "https://") +}