Documentation ¶
Index ¶
- Constants
- Variables
- func ActionFromRouteName(name string) proto.Action
- func ActionToUniqueRouteName(action proto.Action) (name string)
- func ArnEqualsFunc(p *RequestParam, value ConditionValues) bool
- func ArnLikeFunc(p *RequestParam, value ConditionValues) bool
- func ArnNotEqualsFunc(p *RequestParam, value ConditionValues) bool
- func ArnNotLikeFunc(p *RequestParam, value ConditionValues) bool
- func BoolFunc(p *RequestParam, policyCondtion ConditionValues) bool
- func DateEqualsFunc(p *RequestParam, policyVals ConditionValues) bool
- func DateGreaterThanEqualsFunc(p *RequestParam, value ConditionValues) bool
- func DateGreaterThanFunc(p *RequestParam, value ConditionValues) bool
- func DateLessThanEqualsFunc(p *RequestParam, value ConditionValues) bool
- func DateLessThanFunc(p *RequestParam, value ConditionValues) bool
- func DateNotEqualsFunc(p *RequestParam, value ConditionValues) bool
- func GetActionFromContext(r *http.Request) (action proto.Action)
- func GetRequestID(r *http.Request) (id string)
- func GetStatusCodeFromContext(r *http.Request) int
- func IpAddressFunc(p *RequestParam, value ConditionValues) bool
- func IsIntersectionActions(actions proto.Actions, action proto.Action) bool
- func IsMonitoredStatusCode(code int) bool
- func MarshalXMLEntity(entity interface{}) ([]byte, error)
- func NewClosableChunkedReader(source io.ReadCloser) io.ReadCloser
- func NotIpAddressFunc(p *RequestParam, values ConditionValues) bool
- func NumericEqualsFunc(p *RequestParam, value ConditionValues) bool
- func NumericGreaterThanEqualsFunc(p *RequestParam, value ConditionValues) bool
- func NumericGreaterThanFunc(p *RequestParam, value ConditionValues) bool
- func NumericLessThanEqualsFunc(p *RequestParam, value ConditionValues) bool
- func NumericLessThanFunc(p *RequestParam, value ConditionValues) bool
- func NumericNotEqualsFunc(p *RequestParam, value ConditionValues) bool
- func ParseUserDefinedMetadata(header http.Header) map[string]string
- func ReleaseUserInfoStore(store UserInfoStore)
- func ServeInternalStaticErrorResponse(w http.ResponseWriter, r *http.Request)
- func SetRequestAction(r *http.Request, action proto.Action)
- func SetRequestID(r *http.Request, requestID string)
- func SetResponseErrorMessage(r *http.Request, message string)
- func SetResponseStatusCode(r *http.Request, code ErrorCode)
- func SplitFileRange(size, blockSize int64) (ranges [][2]int64)
- func StringEqualsFunc(reqParam *RequestParam, storeCondVals ConditionValues) bool
- func StringLikeFunc(reqParam *RequestParam, storeCondVals ConditionValues) bool
- func StringNotEqualsFunc(p *RequestParam, values ConditionValues) bool
- func StringNotLikeFunc(p *RequestParam, values ConditionValues) bool
- func TrimAwsPrefixKey(key string) string
- func UnmarshalXMLEntity(bytes []byte, data interface{}) error
- func ValidateCacheControl(cacheControl string) bool
- func ValidateCacheExpires(expires string) bool
- type AccessControlList
- type AccessControlPolicy
- func (acp *AccessControlPolicy) IsAclEmpty() bool
- func (acp *AccessControlPolicy) IsAllowed(param *RequestParam, isOwner bool) bool
- func (acp *AccessControlPolicy) Marshal() ([]byte, error)
- func (acp *AccessControlPolicy) SetBucketGrantACL(param *RequestParam, permission Permission)
- func (acp *AccessControlPolicy) SetBucketStandardACL(param *RequestParam, acl string)
- func (acp *AccessControlPolicy) Validate(bucket string) (bool, error)
- type AclRole
- type ActionType
- type Arn
- type AsyncTaskErrorFunc
- type AuthType
- type BucketOwner
- type CORSConfiguration
- type CORSRule
- type CacheUserInfoLoader
- type CacheUserInfoStore
- type CheckFuncs
- type CommonPrefix
- type CompleteMultipartResult
- type CompleteMultipartUploadRequest
- type Condition
- type ConditionFunc
- type ConditionKey
- type ConditionType
- type ConditionTypeSet
- type ConditionValues
- type Content
- type CopyObjectResult
- type CopyResult
- type DeleteRequest
- type DeleteResult
- type Deleted
- type ETagValue
- type Effect
- type Error
- type ErrorCode
- type FSFileInfo
- type FSPart
- type FSUpload
- type GetXAttrOutput
- type Grant
- type Grantee
- type InitMultipartResult
- type ListBucketResult
- type ListBucketResultV2
- type ListFilesV1Option
- type ListFilesV1Result
- type ListFilesV2Option
- type ListFilesV2Result
- type ListPartsResult
- type ListUploadsResult
- type ListXAttrsOutput
- type MetaStore
- type OSSMeta
- type Object
- type ObjectNode
- type Owner
- type Part
- type PartRequest
- type PathItem
- type PathIterator
- type Permission
- type Policy
- type PrefixMap
- type Prefixes
- type Principal
- type PutFileOption
- type PutXAttrRequest
- type RequestAuthInfo
- type RequestParam
- type Resource
- type ResourceType
- type StandardACL
- type Statement
- type Store
- type StrictUserInfoStore
- type StringSet
- func (ss *StringSet) Contains(val string) bool
- func (ss *StringSet) ContainsRegex(val string) bool
- func (ss *StringSet) ContainsWild(val string) bool
- func (ss *StringSet) ContainsWithAny(val string) bool
- func (ss *StringSet) Empty() bool
- func (ss *StringSet) Intersection(set *StringSet) bool
- func (ss StringSet) MarshalJSON() ([]byte, error)
- func (ss StringSet) String() string
- func (ss *StringSet) UnmarshalJSON(b []byte) error
- type Tag
- type Tagging
- type Upload
- type UserInfoStore
- type Volume
- func (v *Volume) AbortMultipart(path string, multipartID string) (err error)
- func (v *Volume) Close() error
- func (v *Volume) CompleteMultipart(path, multipartID string, multipartInfo *proto.MultipartInfo) (fsFileInfo *FSFileInfo, err error)
- func (v *Volume) CopyFile(sv *Volume, sourcePath, targetPath, metaDirective string, opt *PutFileOption) (info *FSFileInfo, err error)
- func (v *Volume) CreateTime() time.Time
- func (v *Volume) DeletePath(path string) (err error)
- func (v *Volume) DeleteXAttr(path string, key string) (err error)
- func (v *Volume) GetXAttr(path string, key string) (info *proto.XAttrInfo, err error)
- func (v *Volume) InitMultipart(path string, opt *PutFileOption) (multipartID string, err error)
- func (v *Volume) ListFilesV1(opt *ListFilesV1Option) (result *ListFilesV1Result, err error)
- func (v *Volume) ListFilesV2(opt *ListFilesV2Option) (result *ListFilesV2Result, err error)
- func (v *Volume) ListMultipartUploads(prefix, delimiter, keyMarker string, multipartIdMarker string, ...) ([]*FSUpload, string, string, bool, []string, error)
- func (v *Volume) ListParts(path, uploadId string, maxParts, partNumberMarker uint64) (parts []*FSPart, nextMarker uint64, isTruncated bool, err error)
- func (v *Volume) ListXAttrs(path string) (keys []string, err error)
- func (v *Volume) Name() string
- func (v *Volume) OSSSecure() (accessKey, secretKey string)
- func (v *Volume) ObjectMeta(path string) (info *FSFileInfo, err error)
- func (v *Volume) Owner() string
- func (v *Volume) PutObject(path string, reader io.Reader, opt *PutFileOption) (fsInfo *FSFileInfo, err error)
- func (v *Volume) ReadFile(path string, writer io.Writer, offset, size uint64) error
- func (v *Volume) SetXAttr(path string, key string, data []byte, autoCreate bool) error
- func (v *Volume) WritePart(path string, multipartId string, partId uint16, reader io.Reader) (*FSFileInfo, error)
- type VolumeConfig
- type VolumeLoader
- type VolumeManager
- type Wildcard
- type Wildcards
- type XAttr
Constants ¶
const ( //Permission Value ReadPermission Permission = "READ" WritePermission = "WRITE" ReadACPPermission = "READ_ACP" WriteACPPermission = "WRITE_ACP" FullControlPermission = "FULL_CONTROL" )
const ( PrivateACL StandardACL = "private" PublicReadACL = "public-read" PubliceReadWriteACL = "public-read-write" AwsExecReadACL = "aws-exec-read" AuthenticatedReadACL = "authenticated-read" BucketOwnerReadACL = "bucket-owner-read" BucketOwnerFullControlACL = "bucket-owner-full-control" LogDeliveryWriteACL = "log-delivery-write" )
const ( XMLNS = "http://www.w3.org/2001/XMLSchema-instance" XSI_TYPE = "CanonicalUser" // )
const ( ContextKeyRequestID = "ctx_request_id" ContextKeyRequestAction = "ctx_request_action" ContextKeyStatusCode = "status_code" ContextKeyErrorMessage = "error_message" )
const ( SignatrueV2 AuthType = "signature_v2" SignatrueV4 = "signature_v4" PresignedV2 = "presigned_v2" PresignedV4 = "presigned_v4" )
const ( RequestHeaderV2Authorization = "Authorization" RequestHeaderV2AuthorizationScheme = "AWS" RequestHeaderV2XAmzDate = "X-Amz-Date" )
const ( SignatureExpires = time.Hour * 24 * 7 // Signature is valid for seven days after the specified date. MaxPresignedExpires = 3 * 365 * 24 * 60 * 60 //10years DateFormatISO8601 = "20060102T150405Z" //"yyyyMMddTHHmmssZ" MaxSkewTime = 15 * time.Minute XAmzContentSha256 = "X-Amz-Content-Sha256" XAmzCredential = "X-Amz-Credential" XAmzSignature = "X-Amz-Signature" // XAmzSignedHeaders = "X-Amz-SignedHeaders" XAmzAlgorithm = "X-Amz-Algorithm" XAmzDate = "X-Amz-Date" XAmzExpires = "X-Amz-Expires" SignatureV4Algorithm = "AWS4-HMAC-SHA256" SignatureV4Request = "aws4-request" SignedHeaderHost = "host" UnsignedPayload = "UNSIGNED-PAYLOAD" PresignedV4QueryAuth = "Authorization" )
const ( HeaderNameServer = "Server" HeaderNameHost = "Host" HeaderNameLastModified = "Last-Modified" HeaderNameETag = "ETag" HeaderNameDate = "Date" HeaderNameContentMD5 = "Content-MD5" HeaderNameContentEnc = "Content-Encoding" HeaderNameContentType = "Content-Type" HeaderNameContentLength = "Content-Length" HeaderNameContentRange = "Content-Range" HeaderNameContentDisposition = "Content-Disposition" HeaderNameAuthorization = "Authorization" HeaderNameAcceptRange = "Accept-Ranges" HeaderNameRange = "Range" HeaderNameExpect = "Expect" HeaderNameXForwardedExpect = "X-Forwarded-Expect" HeaderNameLocation = "Location" HeaderNameCacheControl = "Cache-Control" HeaderNameExpires = "Expires" // Headers for CORS validation Origin = "Origin" HeaderNameAccessControlRequestMethod = "Access-Control-Request-Method" HeaderNameAccessControlRequestHeaders = "Access-Control-Request-Headers" HeaderNameAccessControlAllowOrigin = "Access-Control-Allow-Origin" HeaderNameAccessControlMaxAge = "Access-Control-Max-Age" HeaderNameAccessControlAllowMethods = "Access-Control-Allow-Methods" HeaderNameAccessControlAllowHeaders = "Access-Control-Allow-Headers" HeaderNamrAccessControlExposeHeaders = "Access-Control-Expose-Headers" HeaderNameXAmzStartDate = "x-amz-date" HeaderNameXAmzRequestId = "x-amz-request-id" HeaderNameXAmzContentHash = "x-amz-content-sha256" HeaderNameXAmzCopySource = "x-amz-copy-source" HeaderNameXAmzCopyMatch = "x-amz-copy-source-if-match" HeaderNameXAmzCopyNoneMatch = "x-amz-copy-source-if-none-match" HeaderNameXAmzCopyModified = "x-amz-copy-source-if-modified-since" HeaderNameXAmzCopyUnModified = "x-amz-copy-source-if-unmodified-since" HeaderNameXAmzDecodeContentLength = "x-amz-decoded-content-length" HeaderNameXAmzTagging = "x-amz-tagging" HeaderNameXAmzMetaPrefix = "x-amz-meta-" HeaderNameXAmzDownloadPartCount = "x-amz-mp-parts-count" HeaderNameXAmzMetadataDirective = "x-amz-metadata-directive" HeaderNameXAmzBucketRegion = "x-amz-bucket-region" HeaderNameXAmzTaggingCount = "x-amz-tagging-count" HeaderNameIfMatch = "If-Match" HeaderNameIfNoneMatch = "If-None-Match" HeaderNameIfModifiedSince = "If-Modified-Since" HeaderNameIfUnmodifiedSince = "If-Unmodified-Since" )
const ( HeaderValueServer = "ChubaoFS" HeaderValueAcceptRange = "bytes" HeaderValueTypeStream = "application/octet-stream" HeaderValueContentTypeXML = "application/xml" HeaderValueContentTypeDirectory = "application/directory" )
const ( SubObjectDelete = "delete" SubMultipartUpload = "uploads" )
const ( ParamUploadId = "uploadId" ParamPartNumber = "partNumber" ParamKeyMarker = "key-marker" ParamMarker = "marker" ParamPrefix = "prefix" ParamContToken = "continuation-token" ParamFetchOwner = "fetch-owner" ParamMaxKeys = "max-keys" ParamStartAfter = "start-after" ParamKey = "key" ParamMaxParts = "max-parts" ParamUploadIdMarker = "upload-id-marker" ParamPartNoMarker = "part-number-marker" ParamPartMaxUploads = "max-uploads" ParamPartDelimiter = "delimiter" ParamEncodingType = "encoding-type" ParamResponseCacheControl = "response-cache-control" ParamResponseContentType = "response-content-type" ParamResponseContentDisposition = "response-content-disposition" ParamResponseExpires = "response-expires" )
const ( MaxKeys = 1000 MaxParts = 1000 MaxUploads = 1000 )
const ( XAttrKeyOSSETag = "oss:etag" XAttrKeyOSSTagging = "oss:tagging" XAttrKeyOSSPolicy = "oss:policy" XAttrKeyOSSACL = "oss:acl" XAttrKeyOSSMIME = "oss:mime" XAttrKeyOSSDISPOSITION = "oss:disposition" XAttrKeyOSSCORS = "oss:cors" XAttrKeyOSSCacheControl = "oss:cache" XAttrKeyOSSExpires = "oss:expires" // Deprecated XAttrKeyOSSETagDeprecated = "oss:tag" )
XAttr keys for ObjectNode compatible feature
const ( AMZTimeFormat = "2006-01-02T15:04:05.000Z" RFC1123Format = "Mon, 02 Jan 2006 15:04:05 GMT" RFC850Format = "Monday, 02-Jan-06 15:04:05 GMT" ANSICFormat = "Mon Jan 2 15:04:05 2006" )
const ( DefaultFileMode = 0644 DefaultDirMode = DefaultFileMode | os.ModeDir )
const ( SplitFileRangeBlockSize = 10 * 1024 * 1024 // 10MB ParallelDownloadPartSize = 10 * 1024 * 1024 MinParallelDownloadFileSize = 2 * ParallelDownloadPartSize )
const ( MetadataDirectiveCopy = "COPY" MetadataDirectiveReplace = "REPLACE" )
const ( TaggingCounts = 10 TaggingKeyMaxLength = 128 TaggingValueMaxLength = 256 )
const ( PolicyDefaultVersion = "2012-10-17" BucketPolicyLimitSize = 20 * 1024 //Bucket policies are limited to 20KB ArnSplitToken = ":" )
https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
const ( IpAddress ConditionType = "IpAddress" NotIpAddress = "NotIpAddress" StringLike = "StringLike" StringNotLike = "StringNotLike" StringEquals = "StringEquals" StringNotEquals = "StringNotEquals" Bool = "Bool" DateEquals = "DateEquals" DateNotEquals = "DateNotEquals" DateLessThan = "DateLessThan" DateLessThanEquals = "DateLessThanEquals" DateGreaterThan = "DateGreaterThan" DateGreaterThanEquals = "DateGreaterThanEquals" NumericEquals = "NumericEquals" NumericNotEquals = "NumericNotEquals" NumericLessThan = "NumericLessThan" NumericLessThanEquals = "NumericLessThanEquals" NumericGreaterThan = "NumericGreaterThan" NumericGreaterThanEquals = "NumericGreaterThanEquals" ArnEquals = "ArnEquals" ArnLike = "ArnLike" // ArnNotEquals = "ArnNotEquals" ArnNotLike = "ArnNotLike" // )
const ( AwsCurrentTime ConditionKey = "aws:CurrentTime" AwsEpochTime = "aws:EpochTime" AwsMultiFactorAuthPresent = "aws:MultiFactorAuthPresent" AwsPrincipalAccount = "aws:PrincipalAccount" AwsPrincipalArn = "aws:PrincipalArn" AwsPrincipalOrgID = "aws:PrincipalOrgID" AwsPrincipalTag = "aws:PrincipalTag" AwsPrincipalType = "aws:PrincipalType" AwsReferer = "aws:Referer" AwsRequestRegion = "aws:RequestRegion" AwsRequestTagKey = "aws:RequestTag/tag-key" AwsResourceTagKey = "aws:ResourceTag/tag-key" AwsSecureTransport = "aws:SecureTransport" AwsSourceAccout = "aws:AwsSourceAccout" AwsSourceArn = "aws:SourceArn" AwsSourceIp = "aws:SourceIp" AwsSourceVpc = "aws:SourceVpc" AwsSourceVpce = "aws:SourceVpce" AwsTagKeys = "aws:TagKeys" AwsTokenIssueTime = "aws:TokenIssueTime" AwsUserAgent = "aws:UserAgent" AwsUserId = "aws:userid" AwsUserName = "aws:username" AwsVpcSourceIp = "aws:VpcSourceIp" )
https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/reference_policies_condition-keys.html
const (
EmptyContentMD5String = "d41d8cd98f00b204e9800998ecf8427e"
)
const (
LogDeliveryRole = "LogDelivery"
)
const (
META_OSS_VOLUME = ".oss_meta"
)
const (
MaxCopyObjectSize = 5 * 1024 * 1024 * 1024
)
const (
MaxRetry = 3
)
const (
OSSMetaUpdateDuration = time.Duration(time.Second * 30)
)
const (
StorageClassStandard = "Standard"
)
Variables ¶
var ( StringFuncs = []ConditionFunc{StringEqualsFunc, StringNotEqualsFunc, StringLikeFunc, StringNotLikeFunc} DateFuncs = []ConditionFunc{DateEqualsFunc, DateNotEqualsFunc, DateLessThanFunc, DateGreaterThanFunc, DateLessThanEqualsFunc, DateGreaterThanEqualsFunc} IpAddressFuncs = []ConditionFunc{IpAddressFunc, NotIpAddressFunc} BoolFuncs = []ConditionFunc{BoolFunc} NumericFuncs = []ConditionFunc{NumericEqualsFunc, NumericNotEqualsFunc, NumericLessThanFunc, NumericLessThanEqualsFunc, NumericGreaterThanFunc, NumericGreaterThanEqualsFunc} ArnFuncs = []ConditionFunc{ArnEqualsFunc, ArnNotEqualsFunc, ArnLikeFunc, ArnNotLikeFunc} )
var ( StringType = ConditionTypeSet{StringEquals: void, StringNotEquals: void, StringLike: void, StringNotLike: void} DateType = ConditionTypeSet{DateEquals: void, DateNotEquals: void, DateLessThan: void, DateGreaterThan: void, DateLessThanEquals: void, DateGreaterThanEquals: void} IpAddressType = ConditionTypeSet{IpAddress: void, NotIpAddress: void} BoolType = ConditionTypeSet{Bool: void} NumericType = ConditionTypeSet{NumericEquals: void, NumericNotEquals: void, NumericLessThan: void, NumericLessThanEquals: void, NumericGreaterThan: void, NumericGreaterThanEquals: void} ArnType = ConditionTypeSet{ArnEquals: void, ArnNotEquals: void, ArnLike: void, ArnNotLike: void} )
var ( UnsupportedOperation = &ErrorCode{ErrorCode: "UnsupportedOperation", ErrorMessage: "Operation is not supported", StatusCode: http.StatusBadRequest} AccessDenied = &ErrorCode{ErrorCode: "AccessDenied", ErrorMessage: "Access Denied", StatusCode: http.StatusForbidden} BadDigest = &ErrorCode{ErrorCode: "BadDigest", ErrorMessage: "The Content-MD5 you specified did not match what we received.", StatusCode: http.StatusBadRequest} BucketNotExisted = &ErrorCode{ErrorCode: "BucketNotExisted", ErrorMessage: "The requested bucket name is not existed.", StatusCode: http.StatusNotFound} BucketNotExistedForHead = &ErrorCode{ErrorCode: "BucketNotExisted", ErrorMessage: "The requested bucket name is not existed.", StatusCode: http.StatusConflict} BucketNotEmpty = &ErrorCode{ErrorCode: "BucketNotEmpty", ErrorMessage: "The bucket you tried to delete is not empty.", StatusCode: http.StatusConflict} BucketNotOwnedByYou = &ErrorCode{ErrorCode: "BucketNotOwnedByYou", ErrorMessage: "The bucket is not owned by you.", StatusCode: http.StatusConflict} KeyTooLongError = &ErrorCode{ErrorCode: "KeyTooLongError", ErrorMessage: "", StatusCode: http.StatusBadRequest} InvalidKey = &ErrorCode{ErrorCode: "InvalidKey", ErrorMessage: "Object key is Illegal", StatusCode: http.StatusBadRequest} EntityTooSmall = &ErrorCode{ErrorCode: "EntityTooSmall", ErrorMessage: "Your proposed upload is smaller than the minimum allowed object size.", StatusCode: http.StatusBadRequest} EntityTooLarge = &ErrorCode{ErrorCode: "EntityTooLarge", ErrorMessage: "Your proposed upload exceeds the maximum allowed object size.", StatusCode: http.StatusBadRequest} IncorrectNumberOfFilesInPostRequest = &ErrorCode{ErrorCode: "IncorrectNumberOfFilesInPostRequest", ErrorMessage: "POST requires exactly one file upload per request.", StatusCode: http.StatusBadRequest} InvalidArgument = &ErrorCode{ErrorCode: "InvalidArgument", ErrorMessage: "Invalid Argument", StatusCode: http.StatusBadRequest} InvalidBucketName = &ErrorCode{ErrorCode: "InvalidBucketName", ErrorMessage: "The specified bucket is not valid.", StatusCode: http.StatusBadRequest} InvalidRange = &ErrorCode{ErrorCode: "InvalidRange", ErrorMessage: "The requested range cannot be satisfied.", StatusCode: http.StatusRequestedRangeNotSatisfiable} MissingContentLength = &ErrorCode{ErrorCode: "MissingContentLength", ErrorMessage: "You must provide the Content-Length HTTP header.", StatusCode: http.StatusLengthRequired} NoSuchBucket = &ErrorCode{ErrorCode: "NoSuchBucket", ErrorMessage: "The specified bucket does not exist.", StatusCode: http.StatusNotFound} NoSuchKey = &ErrorCode{ErrorCode: "NoSuchKey", ErrorMessage: "The specified key does not exist.", StatusCode: http.StatusNotFound} PreconditionFailed = &ErrorCode{ErrorCode: "PreconditionFailed", ErrorMessage: "At least one of the preconditions you specified did not hold.", StatusCode: http.StatusPreconditionFailed} MaxContentLength = &ErrorCode{ErrorCode: "MaxContentLength", ErrorMessage: "Content-Length is bigger than 20KB.", StatusCode: http.StatusLengthRequired} DuplicatedBucket = &ErrorCode{ErrorCode: "CreateBucketFailed", ErrorMessage: "Duplicate bucket name.", StatusCode: http.StatusBadRequest} ObjectModeConflict = &ErrorCode{ErrorCode: "ObjectModeConflict", ErrorMessage: "Object already exists but file mode conflicts", StatusCode: http.StatusConflict} NotModified = &ErrorCode{ErrorCode: "MaxContentLength", ErrorMessage: "Not modified.", StatusCode: http.StatusNotModified} NoSuchUpload = &ErrorCode{ErrorCode: "NoSuchUpload", ErrorMessage: "The specified upload does not exist.", StatusCode: http.StatusNotFound} OverMaxRecordSize = &ErrorCode{ErrorCode: "OverMaxRecordSize", ErrorMessage: "The length of a record in the input or result is greater than maxCharsPerRecord of 1 MB.", StatusCode: http.StatusBadRequest} CopySourceSizeTooLarge = &ErrorCode{ErrorCode: "InvalidRequest", ErrorMessage: "The specified copy source is larger than the maximum allowable size for a copy source: 5368709120", StatusCode: http.StatusBadRequest} InvalidPartOrder = &ErrorCode{ErrorCode: "InvalidPartOrder", ErrorMessage: "The list of parts was not in ascending order. Parts list must be specified in order by part number.", StatusCode: http.StatusBadRequest} InvalidPart = &ErrorCode{ErrorCode: "InvalidPart", ErrorMessage: "One or more of the specified parts could not be found. The part might not have been uploaded, or the specified entity tag might not have matched the part's entity tag.", StatusCode: http.StatusBadRequest} InvalidCacheArgument = &ErrorCode{ErrorCode: "InvalidCacheArgument", ErrorMessage: "Invalid Cache-Control or Expires Argument", StatusCode: http.StatusBadRequest} TagsGreaterThen10 = &ErrorCode{ErrorCode: "BadRequest", ErrorMessage: "Object tags cannot be greater than 10", StatusCode: http.StatusBadRequest} InvalidTagKey = &ErrorCode{ErrorCode: "InvalidTag", ErrorMessage: "The TagKey you have provided is invalid", StatusCode: http.StatusBadRequest} InvalidTagValue = &ErrorCode{ErrorCode: "InvalidTag", ErrorMessage: "The TagValue you have provided is invalid", StatusCode: http.StatusBadRequest} )
Presets
var ALGORITHM = "HMAC-SHA256"
var AuthSignatureV4Headers = []string{ PresignedV4QueryAuth, XAmzContentSha256, }
var ConditionFuncMap = map[ConditionType]ConditionFunc{ IpAddress: IpAddressFunc, NotIpAddress: NotIpAddressFunc, StringLike: StringLikeFunc, StringNotLike: StringNotLikeFunc, StringEquals: StringEqualsFunc, StringNotEquals: StringNotEqualsFunc, Bool: BoolFunc, DateEquals: DateEqualsFunc, DateNotEquals: DateNotEqualsFunc, DateLessThan: DateLessThanFunc, DateLessThanEquals: DateLessThanEqualsFunc, DateGreaterThan: DateGreaterThanFunc, DateGreaterThanEquals: DateGreaterThanEqualsFunc, }
var ConditionKeyType = map[ConditionKey]ConditionTypeSet{ AwsCurrentTime: DateType, AwsEpochTime: DateType, AwsMultiFactorAuthPresent: BoolType, AwsPrincipalAccount: StringType, AwsPrincipalArn: ArnType, AwsPrincipalOrgID: StringType, AwsPrincipalTag: StringType, AwsPrincipalType: StringType, AwsReferer: StringType, AwsRequestRegion: StringType, AwsRequestTagKey: StringType, AwsResourceTagKey: StringType, AwsSecureTransport: BoolType, AwsSourceAccout: StringType, AwsSourceArn: ArnType, AwsSourceIp: IpAddressType, AwsSourceVpc: StringType, AwsSourceVpce: StringType, AwsTagKeys: StringType, AwsTokenIssueTime: DateType, AwsUserAgent: StringType, AwsUserId: StringType, AwsUserName: StringType, AwsVpcSourceIp: IpAddressType, }
var PresignedSignatureV2Queries = []string{
"AWSAccessKeyId",
"Signature",
}
var PresignedSignatureV4Queries = []string{ XAmzCredential, XAmzSignature, }
var SCHEME = "AWS4"
var SERVICE = "s3"
var SignatureV2WhiteQueries = map[string]struct{}{
"acl": {},
"delete": {},
"lifecycle": {},
"location": {},
"logging": {},
"notification": {},
"partNumber": {},
"policy": {},
"requestPayment": {},
"response-cache-control": {},
"response-content-disposition": {},
"response-content-encoding": {},
"response-content-language": {},
"response-content-type": {},
"response-expires": {},
"torrent": {},
"uploadId": {},
"uploads": {},
"versionId": {},
"versioning": {},
"versions": {},
}
var TERMINATOR = "aws4_request"
Functions ¶
func ActionFromRouteName ¶
func ActionToUniqueRouteName ¶
Reference: https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/amazon-s3-policy-keys.html
func ArnEqualsFunc ¶
func ArnEqualsFunc(p *RequestParam, value ConditionValues) bool
func ArnLikeFunc ¶
func ArnLikeFunc(p *RequestParam, value ConditionValues) bool
func ArnNotEqualsFunc ¶
func ArnNotEqualsFunc(p *RequestParam, value ConditionValues) bool
func ArnNotLikeFunc ¶
func ArnNotLikeFunc(p *RequestParam, value ConditionValues) bool
func BoolFunc ¶
func BoolFunc(p *RequestParam, policyCondtion ConditionValues) bool
func DateEqualsFunc ¶
func DateEqualsFunc(p *RequestParam, policyVals ConditionValues) bool
func DateGreaterThanEqualsFunc ¶
func DateGreaterThanEqualsFunc(p *RequestParam, value ConditionValues) bool
func DateGreaterThanFunc ¶
func DateGreaterThanFunc(p *RequestParam, value ConditionValues) bool
func DateLessThanEqualsFunc ¶
func DateLessThanEqualsFunc(p *RequestParam, value ConditionValues) bool
func DateLessThanFunc ¶
func DateLessThanFunc(p *RequestParam, value ConditionValues) bool
func DateNotEqualsFunc ¶
func DateNotEqualsFunc(p *RequestParam, value ConditionValues) bool
func GetRequestID ¶
func IpAddressFunc ¶
func IpAddressFunc(p *RequestParam, value ConditionValues) bool
func IsIntersectionActions ¶
func IsMonitoredStatusCode ¶
func MarshalXMLEntity ¶
func NewClosableChunkedReader ¶
func NewClosableChunkedReader(source io.ReadCloser) io.ReadCloser
NewClosableChunkedReader returns an instance of the io.ReadCloser interface used to parse chunk data.
func NotIpAddressFunc ¶
func NotIpAddressFunc(p *RequestParam, values ConditionValues) bool
func NumericEqualsFunc ¶
func NumericEqualsFunc(p *RequestParam, value ConditionValues) bool
func NumericGreaterThanEqualsFunc ¶
func NumericGreaterThanEqualsFunc(p *RequestParam, value ConditionValues) bool
func NumericGreaterThanFunc ¶
func NumericGreaterThanFunc(p *RequestParam, value ConditionValues) bool
func NumericLessThanEqualsFunc ¶
func NumericLessThanEqualsFunc(p *RequestParam, value ConditionValues) bool
func NumericLessThanFunc ¶
func NumericLessThanFunc(p *RequestParam, value ConditionValues) bool
func NumericNotEqualsFunc ¶
func NumericNotEqualsFunc(p *RequestParam, value ConditionValues) bool
func ParseUserDefinedMetadata ¶
Checking and parsing user-defined metadata from request header. The optional user-defined metadata names must begin with "x-amz-meta-" to distinguish them from other HTTP headers. Notes: The PUT request header is limited to 8 KB in size. Within the PUT request header, the user-defined metadata is limited to 2 KB in size. The size of user-defined metadata is measured by taking the sum of the number of bytes in the UTF-8 encoding of each key and value. Reference: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
func ReleaseUserInfoStore ¶
func ReleaseUserInfoStore(store UserInfoStore)
func ServeInternalStaticErrorResponse ¶
func ServeInternalStaticErrorResponse(w http.ResponseWriter, r *http.Request)
func SetRequestID ¶
func SetResponseErrorMessage ¶
func SetResponseStatusCode ¶
func SplitFileRange ¶
func StringEqualsFunc ¶
func StringEqualsFunc(reqParam *RequestParam, storeCondVals ConditionValues) bool
func StringLikeFunc ¶
func StringLikeFunc(reqParam *RequestParam, storeCondVals ConditionValues) bool
func StringNotEqualsFunc ¶
func StringNotEqualsFunc(p *RequestParam, values ConditionValues) bool
func StringNotLikeFunc ¶
func StringNotLikeFunc(p *RequestParam, values ConditionValues) bool
func TrimAwsPrefixKey ¶
func UnmarshalXMLEntity ¶
func ValidateCacheControl ¶
func ValidateCacheExpires ¶
Types ¶
type AccessControlList ¶
type AccessControlList struct {
Grants []Grant `xml:"Grant,omitempty"`
}
access control list
func (*AccessControlList) IsEmpty ¶
func (acl *AccessControlList) IsEmpty() bool
type AccessControlPolicy ¶
type AccessControlPolicy struct { Xmlns string `xml:"xmlns,attr"` Owner Owner `xml:"Owner,omitempty"` Acl AccessControlList `xml:"AccessControlList,omitempty"` }
access control policy
func (*AccessControlPolicy) IsAclEmpty ¶
func (acp *AccessControlPolicy) IsAclEmpty() bool
func (*AccessControlPolicy) IsAllowed ¶
func (acp *AccessControlPolicy) IsAllowed(param *RequestParam, isOwner bool) bool
func (*AccessControlPolicy) Marshal ¶
func (acp *AccessControlPolicy) Marshal() ([]byte, error)
func (*AccessControlPolicy) SetBucketGrantACL ¶
func (acp *AccessControlPolicy) SetBucketGrantACL(param *RequestParam, permission Permission)
func (*AccessControlPolicy) SetBucketStandardACL ¶
func (acp *AccessControlPolicy) SetBucketStandardACL(param *RequestParam, acl string)
https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAcl.html
type ActionType ¶
type ActionType string
type Arn ¶
type Arn struct {
// contains filtered or unexported fields
}
arn:partition:service:region:account-id:resource-id arn:partition:service:region:account-id:resource-type/resource-id arn:partition:service:region:account-id:resource-type:resource-id
type AsyncTaskErrorFunc ¶
type AsyncTaskErrorFunc func(err error)
AsyncTaskErrorFunc is a callback method definition for asynchronous tasks when an error occurs. It is mainly used to notify other objects when an error occurs during asynchronous task execution. These asynchronous tasks include periodic volume topology and metadata update tasks.
func (AsyncTaskErrorFunc) OnError ¶
func (f AsyncTaskErrorFunc) OnError(err error)
OnError protects the call of AsyncTaskErrorFunc with null pointer access. Used to simplify caller code.
type BucketOwner ¶
type BucketOwner struct { XMLName xml.Name `xml:"Owner"` ID string `xml:"ID"` DisplayName string `xml:"DisplayName"` }
func NewBucketOwner ¶
func NewBucketOwner(volume *Volume) *BucketOwner
type CORSConfiguration ¶
type CORSRule ¶
type CORSRule struct { AllowedHeader []string `xml:"AllowedHeader" json:"allowed_header"` AllowedMethod []string `xml:"AllowedMethod" json:"allowed_method"` AllowedOrigin []string `xml:"AllowedOrigin" json:"allowed_origin"` ExposeHeader []string `xml:"ExposeHeader" json:"expose_header"` MaxAgeSeconds uint16 `xml:"MaxAgeSeconds" json:"max_age_seconds"` }
type CacheUserInfoLoader ¶
type CacheUserInfoLoader struct {
// contains filtered or unexported fields
}
func NewUserInfoLoader ¶
func NewUserInfoLoader(mc *master.MasterClient) *CacheUserInfoLoader
func (*CacheUserInfoLoader) Close ¶
func (us *CacheUserInfoLoader) Close()
type CacheUserInfoStore ¶
type CacheUserInfoStore struct {
// contains filtered or unexported fields
}
func (*CacheUserInfoStore) Close ¶
func (s *CacheUserInfoStore) Close()
type CheckFuncs ¶
type CheckFuncs func(p *RequestParam) bool
type CommonPrefix ¶
type CompleteMultipartResult ¶
type CompleteMultipartUploadRequest ¶
type CompleteMultipartUploadRequest struct { XMLName xml.Name `xml:"CompleteMultipartUpload"` Parts []*PartRequest `xml:"Part"` }
type Condition ¶
type Condition map[ConditionType]ConditionValues
type ConditionFunc ¶
type ConditionFunc func(p *RequestParam, values ConditionValues) bool
type ConditionKey ¶
type ConditionKey string
type ConditionType ¶
type ConditionType string
type ConditionTypeSet ¶
type ConditionTypeSet map[ConditionType]null
type ConditionValues ¶
https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/example-bucket-policies.html
type CopyObjectResult ¶
type CopyResult ¶
type DeleteRequest ¶
type DeleteResult ¶
type ETagValue ¶
func DirectoryETagValue ¶
func DirectoryETagValue() ETagValue
func EmptyContentETagValue ¶
func ParseETagValue ¶
type ErrorCode ¶
func HttpStatusErrorCode ¶
func InternalErrorCode ¶
func (ErrorCode) ServeResponse ¶
type FSFileInfo ¶
type GetXAttrOutput ¶
type Grant ¶
type Grant struct { Grantee Grantee `xml:"Grantee,omitempty"` Permission Permission `xml:"Permission,omitempty"` }
grant
func (*Grant) IsAllowed ¶
func (g *Grant) IsAllowed(param *RequestParam) bool
type Grantee ¶
type Grantee struct { Xmlxsi string `xml:"xmlns:xsi,attr"` Xmlns string `xml:"xsi,attr"` XsiType string `xml:"xsi:type,attr"` Type string `xml:"type,attr"` Id string `xml:"ID,omitempty"` URI string `xml:"URI,omitempty"` DisplayName string `xml:"DisplayName,omitempty"` EmailAddress string `xml:"EmailAddress,omitempty"` }
grantee
type InitMultipartResult ¶
type ListBucketResult ¶
type ListBucketResult struct { XMLName xml.Name `xml:"ListBucketResult"` Bucket string `xml:"Name"` Prefix string `xml:"Prefix"` Marker string `xml:"Marker"` MaxKeys int `xml:"MaxKeys"` Delimiter string `xml:"Delimiter"` IsTruncated bool `xml:"IsTruncated"` NextMarker string `xml:"NextMarker,omitempty"` Contents []*Content `xml:"Contents"` CommonPrefixes []*CommonPrefix `xml:"CommonPrefixes"` }
type ListBucketResultV2 ¶
type ListBucketResultV2 struct { XMLName xml.Name `xml:"ListBucketResult"` Name string `xml:"Name"` Prefix string `xml:"Prefix,omitempty"` Token string `xml:"ContinuationToken,omitempty"` NextToken string `xml:"NextContinuationToken,omitempty"` KeyCount uint64 `xml:"KeyCount"` MaxKeys uint64 `xml:"MaxKeys"` Delimiter string `xml:"Delimiter,omitempty"` IsTruncated bool `xml:"IsTruncated,omitempty"` Contents []*Content `xml:"Contents"` CommonPrefixes []*CommonPrefix `xml:"CommonPrefixes"` }
type ListFilesV1Option ¶
type ListFilesV1Result ¶
type ListFilesV1Result struct { Files []*FSFileInfo NextMarker string Truncated bool CommonPrefixes []string }
type ListFilesV2Option ¶
type ListFilesV2Result ¶
type ListFilesV2Result struct { Files []*FSFileInfo KeyCount uint64 NextToken string Truncated bool CommonPrefixes []string }
type ListPartsResult ¶
type ListPartsResult struct { XMLName xml.Name `xml:"ListPartsResult"` Bucket string `xml:"Bucket"` Key string `xml:"Key"` UploadId string `xml:"UploadId"` Owner *BucketOwner `xml:"Owner"` StorageClass string `xml:"StorageClass"` PartNumberMarker int `xml:"PartNumberMarker"` NextMarker int `xml:"NextPartNumberMarker"` MaxParts int `xml:"MaxParts"` IsTruncated bool `xml:"IsTruncated"` Parts []*Part `xml:"Parts"` }
type ListUploadsResult ¶
type ListUploadsResult struct { XMLName xml.Name `xml:"ListMultipartUploadsResult"` Bucket string `xml:"Bucket"` KeyMarker string `xml:"KeyMarker"` UploadIdMarker string `xml:"UploadIdMarker"` NextKeyMarker string `xml:"NextKeyMarker"` NextUploadIdMarker string `xml:"NextUploadIdMarker"` Delimiter string `xml:"Delimiter"` Prefix string `xml:"Prefix"` MaxUploads int `xml:"MaxUploads"` IsTruncated bool `xml:"IsTruncated"` Uploads []*Upload `xml:"Uploads"` CommonPrefixes []*CommonPrefix `xml:"CommonPrefixes"` }
type ListXAttrsOutput ¶
type OSSMeta ¶
type OSSMeta struct {
// contains filtered or unexported fields
}
OSSMeta is bucket policy and ACL metadata.
type ObjectNode ¶
type ObjectNode struct {
// contains filtered or unexported fields
}
func NewServer ¶
func NewServer() *ObjectNode
func (*ObjectNode) Shutdown ¶
func (o *ObjectNode) Shutdown()
func (*ObjectNode) Sync ¶
func (o *ObjectNode) Sync()
type Part ¶
type PartRequest ¶
type PathItem ¶
PathItem defines path node attribute information, including node name and whether it is a directory.
type PathIterator ¶
type PathIterator struct {
// contains filtered or unexported fields
}
PathIterator is a path iterator. Used to sequentially iterate each path node from a complete path.
func NewPathIterator ¶
func NewPathIterator(path string) PathIterator
func (*PathIterator) HasNext ¶
func (p *PathIterator) HasNext() bool
func (*PathIterator) Next ¶
func (p *PathIterator) Next() PathItem
func (*PathIterator) Reset ¶
func (p *PathIterator) Reset()
func (PathIterator) ToSlice ¶
func (p PathIterator) ToSlice() []PathItem
type Policy ¶
type Policy struct { Version string `json:"Version"` Id string `json:"Id,omitempty"` Statements []Statement `json:"Statement,omitempty"` }
func (*Policy) IsAllowed ¶
func (p *Policy) IsAllowed(params *RequestParam, isOwner bool) bool
check policy is allowed for request https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/reference_policies_evaluation-logic.html
type PutFileOption ¶
type PutXAttrRequest ¶
type RequestAuthInfo ¶
type RequestAuthInfo struct {
// contains filtered or unexported fields
}
type RequestParam ¶
type RequestParam struct {
// contains filtered or unexported fields
}
func ParseRequestParam ¶
func ParseRequestParam(r *http.Request) *RequestParam
func (*RequestParam) AccessKey ¶
func (p *RequestParam) AccessKey() string
func (*RequestParam) Action ¶
func (p *RequestParam) Action() proto.Action
func (*RequestParam) Bucket ¶
func (p *RequestParam) Bucket() string
func (*RequestParam) GetConditionVar ¶
func (p *RequestParam) GetConditionVar(name string) []string
func (*RequestParam) GetVar ¶
func (p *RequestParam) GetVar(name string) string
func (*RequestParam) Object ¶
func (p *RequestParam) Object() string
type ResourceType ¶
type ResourceType string
type StandardACL ¶
type StandardACL string
type Statement ¶
type Statement struct { Sid string `json:"Sid,omitempty"` Effect Effect `json:"Effect"` Principal Principal `json:"Principal"` Actions StringSet `json:"Action,omitempty"` NotActions StringSet `json:"NotAction,omitempty"` Resources StringSet `json:"Resource,omitempty"` NotResources StringSet `json:"NotResource,omitempty"` Condition Condition `json:"Condition,omitempty"` }
func (Statement) IsAllowed ¶
func (s Statement) IsAllowed(p *RequestParam) bool
type Store ¶
type Store interface { Init(vm *VolumeManager) Put(ns, obj, key string, data []byte) error Get(ns, obj, key string) (data []byte, err error) List(ns, obj string) (data [][]byte, err error) Delete(ns, obj, key string) error }
MetaStore
type StrictUserInfoStore ¶
type StrictUserInfoStore struct {
// contains filtered or unexported fields
}
type StringSet ¶
type StringSet struct {
// contains filtered or unexported fields
}
func (*StringSet) ContainsRegex ¶
func (*StringSet) ContainsWild ¶
func (*StringSet) ContainsWithAny ¶
func (*StringSet) Intersection ¶
func (StringSet) MarshalJSON ¶
func (*StringSet) UnmarshalJSON ¶
type Tagging ¶
type Tagging struct { XMLName xml.Name `json:"-"` TagSet []Tag `xml:"TagSet>Tag,omitempty" json:"ts"` }
func NewTagging ¶
func NewTagging() *Tagging
func ParseTagging ¶
type Upload ¶
type Upload struct { XMLName xml.Name `xml:"Upload"` Key string `xml:"Key"` UploadId string `xml:"UploadId"` StorageClass string `xml:"StorageClass"` Initiated string `xml:"Initiated"` Owner *BucketOwner `xml:"Owner"` }
func NewUploads ¶
type UserInfoStore ¶
func NewUserInfoStore ¶
func NewUserInfoStore(masters []string, strict bool) UserInfoStore
type Volume ¶
type Volume struct {
// contains filtered or unexported fields
}
Volume is a high-level encapsulation of meta sdk and data sdk methods. A high-level approach that exposes the semantics of object storage to the outside world. Volume escapes high-level object storage semantics to low-level POSIX semantics.
func NewVolume ¶
func NewVolume(config *VolumeConfig) (*Volume, error)
func (*Volume) AbortMultipart ¶
func (*Volume) CompleteMultipart ¶
func (v *Volume) CompleteMultipart(path, multipartID string, multipartInfo *proto.MultipartInfo) (fsFileInfo *FSFileInfo, err error)
func (*Volume) CopyFile ¶
func (v *Volume) CopyFile(sv *Volume, sourcePath, targetPath, metaDirective string, opt *PutFileOption) (info *FSFileInfo, err error)
func (*Volume) CreateTime ¶
func (*Volume) DeletePath ¶
DeletePath deletes the specified path. If the target is a non-empty directory, it will return success without any operation. If the target does not exist, it returns success.
Notes: This method will only returns internal system errors. This method will not return syscall.ENOENT error
func (*Volume) InitMultipart ¶
func (v *Volume) InitMultipart(path string, opt *PutFileOption) (multipartID string, err error)
func (*Volume) ListFilesV1 ¶
func (v *Volume) ListFilesV1(opt *ListFilesV1Option) (result *ListFilesV1Result, err error)
ListFilesV1 returns file and directory entry list information that meets the parameters. It supports parameters such as prefix, delimiter, and paging. It is a data plane logical encapsulation of the object storage interface ListObjectsV1.
func (*Volume) ListFilesV2 ¶
func (v *Volume) ListFilesV2(opt *ListFilesV2Option) (result *ListFilesV2Result, err error)
ListFilesV2 returns file and directory entry list information that meets the parameters. It supports parameters such as prefix, delimiter, and paging. It is a data plane logical encapsulation of the object storage interface ListObjectsV2.
func (*Volume) ListMultipartUploads ¶
func (*Volume) ObjectMeta ¶
func (v *Volume) ObjectMeta(path string) (info *FSFileInfo, err error)
func (*Volume) PutObject ¶
func (v *Volume) PutObject(path string, reader io.Reader, opt *PutFileOption) (fsInfo *FSFileInfo, err error)
WriteObject creates or updates target path objects and data. Differentiate whether a target is a file or a directory by identifying its MIME type. When the MIME type is "application/directory", the target object is a directory. During processing, conflicts may occur because the actual type of the target object is different from the expected type.
For example, create a directory called "backup", but a file called "backup" already exists. When a conflict occurs, the method returns an syscall.EINVAL error.
An syscall.EINVAL error is returned indicating that a part of the target path expected to be a file but actual is a directory. An syscall.EINVAL error is returned indicating that a part of the target path expected to be a directory but actual is a file.
type VolumeConfig ¶
type VolumeConfig struct { // Name of volume. // This is a required configuration item. Volume string // Master addresses or host names. // This is a required configuration item. Masters []string // Storage fro ACP management Store Store // Callback method for notifying when an error occurs in an asynchronous task. // Such as Volume topology and metadata update tasks. // This is a optional configuration item. OnAsyncTaskError AsyncTaskErrorFunc // Get OSSMeta from the MetaNode every time if it is set true. MetaStrict bool }
VolumeConfig is the configuration used to initialize the Volume instance.
type VolumeLoader ¶
type VolumeLoader struct {
// contains filtered or unexported fields
}
func NewVolumeLoader ¶
func NewVolumeLoader(masters []string, store Store, strict bool) *VolumeLoader
func (*VolumeLoader) Release ¶
func (loader *VolumeLoader) Release(volName string)
type VolumeManager ¶
type VolumeManager struct {
// contains filtered or unexported fields
}
func NewVolumeManager ¶
func NewVolumeManager(masters []string, strict bool) *VolumeManager
func (*VolumeManager) Release ¶
func (m *VolumeManager) Release(volName string)
type Wildcard ¶ added in v1.5.1
type Wildcard struct {
// contains filtered or unexported fields
}
func NewWildcard ¶ added in v1.5.1
Source Files ¶
- acl.go
- acl_handler.go
- api_context.go
- api_handler.go
- api_handler_bucket.go
- api_handler_multipart.go
- api_handler_object.go
- api_middleware.go
- auth.go
- auth_signature_v2.go
- auth_signature_v4.go
- chunk.go
- const.go
- cors.go
- cors_handler.go
- etag.go
- fs.go
- fs_manager.go
- fs_store.go
- fs_store_object.go
- fs_store_user.go
- fs_store_xattr.go
- fs_volume.go
- fs_volume_meta.go
- policy.go
- policy_action.go
- policy_condition.go
- policy_handler.go
- policy_statement.go
- result.go
- result_error.go
- router.go
- server.go
- signer.go
- stringset.go
- util.go
- wildcard.go