Merge pull request #713 from harshavardhana/pr_out_across_donut_split_nimble_some_code_cleanup
commit
fadadf0e1a
@ -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