oss/validation.go (71 lines of code) (raw):
package oss
import (
"net/url"
"strings"
)
func isValidRegion(region string) bool {
for _, v := range region {
if !(('a' <= v && v <= 'z') || ('0' <= v && v <= '9') || v == '-') {
return false
}
}
return region != ""
}
func isValidEndpoint(endpoint *url.URL) bool {
return (endpoint != nil)
}
func isValidBucketName(bucketName *string) bool {
if bucketName == nil {
return false
}
nameLen := len(*bucketName)
if nameLen < 3 || nameLen > 63 {
return false
}
if (*bucketName)[0] == '-' || (*bucketName)[nameLen-1] == '-' {
return false
}
for _, v := range *bucketName {
if !(('a' <= v && v <= 'z') || ('0' <= v && v <= '9') || v == '-') {
return false
}
}
return true
}
func isValidObjectName(objectName *string) bool {
if objectName == nil || len(*objectName) == 0 {
return false
}
return true
}
func isValidRange(r *string) bool {
if _, err := ParseRange(*r); err != nil {
return false
}
return true
}
var supportedMethod = map[string]struct{}{
"GET": {},
"PUT": {},
"HEAD": {},
"POST": {},
"DELETE": {},
"OPTIONS": {},
}
func isValidMethod(method string) bool {
if _, ok := supportedMethod[method]; ok {
return true
}
return false
}
var supportedCopyDirective = map[string]struct{}{
"COPY": {},
"REPLACE": {},
}
func isValidCopyDirective(value string) bool {
upper := strings.ToUpper(value)
if _, ok := supportedCopyDirective[upper]; ok {
return true
}
return false
}