Merge pull request #558 from harshavardhana/pr_out_even_mux_vars_don_t_help_handle_it_by_looking_at_req_url_path

This commit is contained in:
Harshavardhana 2015-05-01 12:43:51 -07:00
commit 1f3dd2374c
2 changed files with 21 additions and 5 deletions

View file

@ -30,7 +30,6 @@ import (
"strings"
"time"
"github.com/gorilla/mux"
"github.com/minio-io/minio/pkg/api/config"
)
@ -169,14 +168,30 @@ var subResList = []string{
"website",
}
func url2BucketAndObject(url string) (string, string) {
var bucketName, objectName string
splits := strings.SplitN(url, "/", 3)
switch len(splits) {
case 0, 1:
bucketName = ""
objectName = ""
case 2:
bucketName = splits[1]
objectName = ""
case 3:
bucketName = splits[1]
objectName = splits[2]
}
return bucketName, objectName
}
// From the Amazon docs:
//
// CanonicalizedResource = [ "/" + Bucket ] +
// <HTTP-Request-URI, from the protocol name up to the query string> +
// [ sub-resource, if present. For example "?acl", "?location", "?logging", or "?torrent"];
func writeCanonicalizedResource(buf *bytes.Buffer, req *http.Request) {
vars := mux.Vars(req)
bucket := vars["bucket"]
bucket, _ := url2BucketAndObject(req.URL.Path)
if bucket != "" {
buf.WriteByte('/')
buf.WriteString(bucket)

View file

@ -113,17 +113,18 @@ func (s *MySuite) TearDownTest(c *C) {
}
func setAuthHeader(req *http.Request) {
if date := req.Header.Get("Date"); date == "" {
req.Header.Set("Date", time.Now().UTC().Format(http.TimeFormat))
}
hm := hmac.New(sha1.New, []byte("H+AVh8q5G7hEH2r3WxFP135+Q19Aw8yXWel8IGh/HrEjZyTNx/n4Xw=="))
ss := getStringToSign(req)
io.WriteString(hm, ss)
authHeader := new(bytes.Buffer)
fmt.Fprintf(authHeader, "AWS %s:", "AC5NH40NQLTL4D2W92PM")
encoder := base64.NewEncoder(base64.StdEncoding, authHeader)
encoder.Write(hm.Sum(nil))
encoder.Close()
req.Header.Set("Authorization", authHeader.String())
req.Header.Set("Date", time.Now().UTC().Format(http.TimeFormat))
}
func (s *MySuite) TestNonExistantBucket(c *C) {