parent
7be35915bc
commit
3622fbc87d
@ -1,2 +0,0 @@ |
||||
donut |
||||
build-constants.go |
@ -0,0 +1,47 @@ |
||||
package donut |
||||
|
||||
// BucketACL - bucket level access control
|
||||
type BucketACL string |
||||
|
||||
// different types of ACL's currently supported for buckets
|
||||
const ( |
||||
BucketPrivate = BucketACL("private") |
||||
BucketPublicRead = BucketACL("public-read") |
||||
BucketPublicReadWrite = BucketACL("public-read-write") |
||||
) |
||||
|
||||
func (b BucketACL) String() string { |
||||
return string(b) |
||||
} |
||||
|
||||
// IsPrivate - is acl Private
|
||||
func (b BucketACL) IsPrivate() bool { |
||||
return b == BucketACL("private") |
||||
} |
||||
|
||||
// IsPublicRead - is acl PublicRead
|
||||
func (b BucketACL) IsPublicRead() bool { |
||||
return b == BucketACL("public-read") |
||||
} |
||||
|
||||
// IsPublicReadWrite - is acl PublicReadWrite
|
||||
func (b BucketACL) IsPublicReadWrite() bool { |
||||
return b == BucketACL("public-read-write") |
||||
} |
||||
|
||||
// IsValidBucketACL - is provided acl string supported
|
||||
func IsValidBucketACL(acl string) bool { |
||||
switch acl { |
||||
case "private": |
||||
fallthrough |
||||
case "public-read": |
||||
fallthrough |
||||
case "public-read-write": |
||||
return true |
||||
case "": |
||||
// by default its "private"
|
||||
return true |
||||
default: |
||||
return false |
||||
} |
||||
} |
@ -1,78 +0,0 @@ |
||||
/* |
||||
* 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 donut |
||||
|
||||
import ( |
||||
"errors" |
||||
"fmt" |
||||
"strconv" |
||||
"strings" |
||||
) |
||||
|
||||
// Date - [0000-00-00]
|
||||
type Date struct { |
||||
Year int16 |
||||
Month byte |
||||
Day byte |
||||
} |
||||
|
||||
// String output in yyyy-mm-dd format
|
||||
func (d Date) String() string { |
||||
return fmt.Sprintf("%04d-%02d-%02d", d.Year, d.Month, d.Day) |
||||
} |
||||
|
||||
// IsZero true if date is 0000-00-00
|
||||
func (d Date) IsZero() bool { |
||||
return d.Day == 0 && d.Month == 0 && d.Year == 0 |
||||
} |
||||
|
||||
// Convert string date in format YYYY-MM-DD to Date.
|
||||
// Leading and trailing spaces are ignored. If format is invalid returns zero.
|
||||
func parseDate(str string) (d Date, err error) { |
||||
str = strings.TrimSpace(str) |
||||
if str == "0000-00-00" { |
||||
return |
||||
} |
||||
var ( |
||||
y, m, n int |
||||
) |
||||
if len(str) != 10 || str[4] != '-' || str[7] != '-' { |
||||
err = errors.New("Invalid 0000-00-000 style DATE string: " + str) |
||||
return |
||||
} |
||||
if y, err = strconv.Atoi(str[0:4]); err != nil { |
||||
return |
||||
} |
||||
if m, err = strconv.Atoi(str[5:7]); err != nil { |
||||
return |
||||
} |
||||
if m < 1 || m > 12 { |
||||
err = errors.New("Invalid 0000-00-000 style DATE string: " + str) |
||||
return |
||||
} |
||||
if n, err = strconv.Atoi(str[8:10]); err != nil { |
||||
return |
||||
} |
||||
if n < 1 || n > 31 { |
||||
err = errors.New("Invalid 0000-00-000 style DATE string: " + str) |
||||
return |
||||
} |
||||
d.Year = int16(y) |
||||
d.Month = byte(m) |
||||
d.Day = byte(n) |
||||
return |
||||
} |
@ -1,109 +0,0 @@ |
||||
/* |
||||
* 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 donut |
||||
|
||||
import ( |
||||
"regexp" |
||||
"strings" |
||||
"unicode/utf8" |
||||
) |
||||
|
||||
// BucketACL - bucket level access control
|
||||
type BucketACL string |
||||
|
||||
// different types of ACL's currently supported for buckets
|
||||
const ( |
||||
BucketPrivate = BucketACL("private") |
||||
BucketPublicRead = BucketACL("public-read") |
||||
BucketPublicReadWrite = BucketACL("public-read-write") |
||||
) |
||||
|
||||
func (b BucketACL) String() string { |
||||
return string(b) |
||||
} |
||||
|
||||
// IsPrivate - is acl Private
|
||||
func (b BucketACL) IsPrivate() bool { |
||||
return b == BucketACL("private") |
||||
} |
||||
|
||||
// IsPublicRead - is acl PublicRead
|
||||
func (b BucketACL) IsPublicRead() bool { |
||||
return b == BucketACL("public-read") |
||||
} |
||||
|
||||
// IsPublicReadWrite - is acl PublicReadWrite
|
||||
func (b BucketACL) IsPublicReadWrite() bool { |
||||
return b == BucketACL("public-read-write") |
||||
} |
||||
|
||||
// IsValidBucketACL - is provided acl string supported
|
||||
func IsValidBucketACL(acl string) bool { |
||||
switch acl { |
||||
case "private": |
||||
fallthrough |
||||
case "public-read": |
||||
fallthrough |
||||
case "public-read-write": |
||||
return true |
||||
case "": |
||||
// by default its "private"
|
||||
return true |
||||
default: |
||||
return false |
||||
} |
||||
} |
||||
|
||||
// IsValidBucket - verify bucket name in accordance with
|
||||
// - http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html
|
||||
func IsValidBucket(bucket string) bool { |
||||
if len(bucket) < 3 || len(bucket) > 63 { |
||||
return false |
||||
} |
||||
if bucket[0] == '.' || bucket[len(bucket)-1] == '.' { |
||||
return false |
||||
} |
||||
if match, _ := regexp.MatchString("\\.\\.", bucket); match == true { |
||||
return false |
||||
} |
||||
// We don't support buckets with '.' in them
|
||||
match, _ := regexp.MatchString("^[a-zA-Z][a-zA-Z0-9\\-]+[a-zA-Z0-9]$", bucket) |
||||
return match |
||||
} |
||||
|
||||
// IsValidObjectName - verify object name in accordance with
|
||||
// - http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
|
||||
func IsValidObjectName(object string) bool { |
||||
if strings.TrimSpace(object) == "" { |
||||
return false |
||||
} |
||||
if len(object) > 1024 || len(object) == 0 { |
||||
return false |
||||
} |
||||
if !utf8.ValidString(object) { |
||||
return false |
||||
} |
||||
return true |
||||
} |
||||
|
||||
// IsValidPrefix - verify prefix name is correct, an empty prefix is valid
|
||||
func IsValidPrefix(prefix string) bool { |
||||
if strings.TrimSpace(prefix) == "" { |
||||
return true |
||||
} |
||||
return IsValidObjectName(prefix) |
||||
} |
Loading…
Reference in new issue