parent
28785421cd
commit
107e077ec0
@ -0,0 +1,72 @@ |
|||||||
|
/* |
||||||
|
* Minimalist Object Storage, (C) 2015 Minio, Inc. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package api |
||||||
|
|
||||||
|
import ( |
||||||
|
"net/http" |
||||||
|
"strings" |
||||||
|
) |
||||||
|
|
||||||
|
// Please read for more information - http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
|
||||||
|
//
|
||||||
|
// Here We are only supporting 'acl's through request headers not through their request body
|
||||||
|
// http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#setting-acls
|
||||||
|
|
||||||
|
// Minio only supports three types for now i.e 'private, public-read, public-read-write'
|
||||||
|
type ACLType int |
||||||
|
|
||||||
|
const ( |
||||||
|
unsupportedACLType ACLType = iota |
||||||
|
privateACLType |
||||||
|
publicReadACLType |
||||||
|
publicReadWriteACLType |
||||||
|
) |
||||||
|
|
||||||
|
// Get acl type requested from 'x-amz-acl' header
|
||||||
|
func getACLType(req *http.Request) ACLType { |
||||||
|
aclHeader := req.Header.Get("x-amz-acl") |
||||||
|
switch { |
||||||
|
case strings.HasPrefix(aclHeader, "private"): |
||||||
|
return privateACLType |
||||||
|
case strings.HasPrefix(aclHeader, "public-read"): |
||||||
|
return publicReadACLType |
||||||
|
case strings.HasPrefix(aclHeader, "public-read-write"): |
||||||
|
return publicReadWriteACLType |
||||||
|
default: |
||||||
|
return unsupportedACLType |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// ACL type to human readable string
|
||||||
|
func getACLTypeString(acl ACLType) string { |
||||||
|
switch acl { |
||||||
|
case privateACLType: |
||||||
|
{ |
||||||
|
return "private" |
||||||
|
} |
||||||
|
case publicReadACLType: |
||||||
|
{ |
||||||
|
return "public-read" |
||||||
|
} |
||||||
|
case publicReadWriteACLType: |
||||||
|
{ |
||||||
|
return "public-read-write" |
||||||
|
} |
||||||
|
default: |
||||||
|
return "" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package api |
||||||
|
|
||||||
|
import ( |
||||||
|
"encoding/base64" |
||||||
|
"strings" |
||||||
|
) |
||||||
|
|
||||||
|
func isValidMD5(md5 string) bool { |
||||||
|
_, err := base64.StdEncoding.DecodeString(strings.TrimSpace(md5)) |
||||||
|
if err != nil { |
||||||
|
return false |
||||||
|
} |
||||||
|
return true |
||||||
|
} |
Loading…
Reference in new issue