mirror of
https://github.com/minio/minio.git
synced 2025-11-07 12:52:58 -05:00
Update comments across the codebase
This commit is contained in:
@@ -47,6 +47,7 @@ type EncoderParams struct {
|
||||
Technique EncoderTechnique
|
||||
}
|
||||
|
||||
// populate new header
|
||||
func NewHeader(key string, part uint8, metadata Metadata, encoderParams EncoderParams) DataHeader {
|
||||
header := DataHeader{}
|
||||
header.Key = key
|
||||
@@ -61,6 +62,7 @@ func NewHeader(key string, part uint8, metadata Metadata, encoderParams EncoderP
|
||||
return header
|
||||
}
|
||||
|
||||
// validate populated header
|
||||
func ValidateHeader(header DataHeader) bool {
|
||||
if header.Key == "" || header.Part < 0 || len(header.Metadata) < 2 {
|
||||
return false
|
||||
@@ -73,6 +75,7 @@ func ValidateHeader(header DataHeader) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// Write data, returns error upon any failure
|
||||
func WriteData(target io.Writer, header DataHeader, data io.Reader) error {
|
||||
if !ValidateHeader(header) {
|
||||
return fmt.Errorf("Invalid header")
|
||||
|
||||
@@ -73,6 +73,7 @@ type DonutFrameFooter struct {
|
||||
|
||||
type Data bytes.Buffer
|
||||
|
||||
// Write Donut format to input io.Writer, returns error upon any failure
|
||||
func WriteFrame(target io.Writer, reader io.Reader, length uint64) error {
|
||||
// write header
|
||||
header := DonutFrameHeader{
|
||||
|
||||
@@ -29,7 +29,6 @@ import (
|
||||
"sync"
|
||||
|
||||
mstorage "github.com/minio-io/minio/pkg/storage"
|
||||
"github.com/minio-io/minio/pkg/utils/helpers"
|
||||
"github.com/minio-io/minio/pkg/utils/policy"
|
||||
)
|
||||
|
||||
@@ -42,6 +41,7 @@ type SerializedMetadata struct {
|
||||
ContentType string
|
||||
}
|
||||
|
||||
// Start filesystem channel
|
||||
func Start(root string) (chan<- string, <-chan error, *storage) {
|
||||
ctrlChannel := make(chan string)
|
||||
errorChannel := make(chan error)
|
||||
@@ -67,7 +67,9 @@ func appendUniq(slice []string, i string) []string {
|
||||
return append(slice, i)
|
||||
}
|
||||
|
||||
// Bucket Operations
|
||||
/// Bucket Operations
|
||||
|
||||
// GET - Service
|
||||
func (storage *storage) ListBuckets() ([]mstorage.BucketMetadata, error) {
|
||||
files, err := ioutil.ReadDir(storage.root)
|
||||
if err != nil {
|
||||
@@ -92,6 +94,7 @@ func (storage *storage) ListBuckets() ([]mstorage.BucketMetadata, error) {
|
||||
return metadataList, nil
|
||||
}
|
||||
|
||||
// PUT - Bucket
|
||||
func (storage *storage) StoreBucket(bucket string) error {
|
||||
storage.lock.Lock()
|
||||
defer storage.lock.Unlock()
|
||||
@@ -119,6 +122,7 @@ func (storage *storage) StoreBucket(bucket string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GET - Bucket policy
|
||||
func (storage *storage) GetBucketPolicy(bucket string) (interface{}, error) {
|
||||
storage.lock.Lock()
|
||||
defer storage.lock.Unlock()
|
||||
@@ -163,6 +167,7 @@ func (storage *storage) GetBucketPolicy(bucket string) (interface{}, error) {
|
||||
|
||||
}
|
||||
|
||||
// PUT - Bucket policy
|
||||
func (storage *storage) StoreBucketPolicy(bucket string, policy interface{}) error {
|
||||
storage.lock.Lock()
|
||||
defer storage.lock.Unlock()
|
||||
@@ -203,8 +208,9 @@ func (storage *storage) StoreBucketPolicy(bucket string, policy interface{}) err
|
||||
return nil
|
||||
}
|
||||
|
||||
// Object Operations
|
||||
/// Object Operations
|
||||
|
||||
// GET Object
|
||||
func (storage *storage) CopyObjectToWriter(w io.Writer, bucket string, object string) (int64, error) {
|
||||
// validate bucket
|
||||
if mstorage.IsValidBucket(bucket) == false {
|
||||
@@ -247,6 +253,7 @@ func (storage *storage) CopyObjectToWriter(w io.Writer, bucket string, object st
|
||||
return count, nil
|
||||
}
|
||||
|
||||
// HEAD Object
|
||||
func (storage *storage) GetObjectMetadata(bucket string, object string) (mstorage.ObjectMetadata, error) {
|
||||
if mstorage.IsValidBucket(bucket) == false {
|
||||
return mstorage.ObjectMetadata{}, mstorage.BucketNameInvalid{Bucket: bucket}
|
||||
@@ -340,10 +347,16 @@ func delimiter(path, delimiter string) string {
|
||||
|
||||
type ByObjectKey []mstorage.ObjectMetadata
|
||||
|
||||
func (b ByObjectKey) Len() int { return len(b) }
|
||||
func (b ByObjectKey) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
|
||||
// Len
|
||||
func (b ByObjectKey) Len() int { return len(b) }
|
||||
|
||||
// Swap
|
||||
func (b ByObjectKey) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
|
||||
|
||||
// Less
|
||||
func (b ByObjectKey) Less(i, j int) bool { return b[i].Key < b[j].Key }
|
||||
|
||||
// GET bucket (list objects)
|
||||
func (storage *storage) ListObjects(bucket string, resources mstorage.BucketResourcesMetadata) ([]mstorage.ObjectMetadata, mstorage.BucketResourcesMetadata, error) {
|
||||
p := Path{}
|
||||
p.files = make(map[string]os.FileInfo)
|
||||
@@ -388,7 +401,7 @@ func (storage *storage) ListObjects(bucket string, resources mstorage.BucketReso
|
||||
}
|
||||
metadataList = append(metadataList, metadata)
|
||||
case delimited != "":
|
||||
resources.CommonPrefixes = helpers.appendUniq(resources.CommonPrefixes, delimited)
|
||||
resources.CommonPrefixes = appendUniq(resources.CommonPrefixes, delimited)
|
||||
}
|
||||
case resources.Delimiter != "" && strings.HasPrefix(name, resources.Prefix):
|
||||
delimited := delimiter(name, resources.Delimiter)
|
||||
@@ -403,7 +416,7 @@ func (storage *storage) ListObjects(bucket string, resources mstorage.BucketReso
|
||||
}
|
||||
metadataList = append(metadataList, metadata)
|
||||
case delimited != "":
|
||||
resources.CommonPrefixes = helpers.AppendUniqStr(resources.CommonPrefixes, delimited)
|
||||
resources.CommonPrefixes = appendUniq(resources.CommonPrefixes, delimited)
|
||||
}
|
||||
case strings.HasPrefix(name, resources.Prefix):
|
||||
metadata := mstorage.ObjectMetadata{
|
||||
@@ -422,6 +435,7 @@ ret:
|
||||
return metadataList, resources, nil
|
||||
}
|
||||
|
||||
// PUT object
|
||||
func (storage *storage) StoreObject(bucket, key, contentType string, data io.Reader) error {
|
||||
// TODO Commits should stage then move instead of writing directly
|
||||
storage.lock.Lock()
|
||||
|
||||
@@ -67,6 +67,7 @@ type BucketResourcesMetadata struct {
|
||||
Notification string
|
||||
}
|
||||
|
||||
// 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
|
||||
@@ -82,6 +83,7 @@ func IsValidBucket(bucket string) bool {
|
||||
return match
|
||||
}
|
||||
|
||||
// Verify Object name in accordance with http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
|
||||
func IsValidObject(object string) bool {
|
||||
if len(object) > 1024 || len(object) == 0 {
|
||||
return false
|
||||
|
||||
@@ -24,6 +24,7 @@ import (
|
||||
. "gopkg.in/check.v1"
|
||||
)
|
||||
|
||||
// API test suite
|
||||
func APITestSuite(c *C, create func() Storage) {
|
||||
testCreateBucket(c, create)
|
||||
testMultipleObjectCreation(c, create)
|
||||
|
||||
@@ -51,6 +51,14 @@ type ImplementationError struct {
|
||||
Err error
|
||||
}
|
||||
|
||||
type BackendCorrupted BackendError
|
||||
type BucketPolicyNotFound GenericBucketError
|
||||
type BucketNameInvalid GenericBucketError
|
||||
type BucketExists GenericBucketError
|
||||
type BucketNotFound GenericBucketError
|
||||
type ObjectNameInvalid GenericObjectError
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self ImplementationError) Error() string {
|
||||
error := ""
|
||||
if self.Bucket != "" {
|
||||
@@ -63,6 +71,7 @@ func (self ImplementationError) Error() string {
|
||||
return error
|
||||
}
|
||||
|
||||
// Wrapper function for error object
|
||||
func EmbedError(bucket, object string, err error) ImplementationError {
|
||||
return ImplementationError{
|
||||
Bucket: bucket,
|
||||
@@ -71,45 +80,47 @@ func EmbedError(bucket, object string, err error) ImplementationError {
|
||||
}
|
||||
}
|
||||
|
||||
type BackendCorrupted BackendError
|
||||
type BucketPolicyNotFound GenericBucketError
|
||||
type BucketNameInvalid GenericBucketError
|
||||
type BucketExists GenericBucketError
|
||||
type BucketNotFound GenericBucketError
|
||||
type ObjectNameInvalid GenericObjectError
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self BucketPolicyNotFound) Error() string {
|
||||
return "Bucket policy not found for: " + self.Bucket
|
||||
}
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self ObjectNotFound) Error() string {
|
||||
return "Object not Found: " + self.Bucket + "#" + self.Object
|
||||
}
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self ApiNotImplemented) Error() string {
|
||||
return "Api not implemented: " + self.Api
|
||||
}
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self ObjectExists) Error() string {
|
||||
return "Object exists: " + self.Bucket + "#" + self.Key
|
||||
}
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self BucketNameInvalid) Error() string {
|
||||
return "Bucket name invalid: " + self.Bucket
|
||||
}
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self BucketExists) Error() string {
|
||||
return "Bucket exists: " + self.Bucket
|
||||
}
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self BucketNotFound) Error() string {
|
||||
return "Bucket not Found: " + self.Bucket
|
||||
}
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self ObjectNameInvalid) Error() string {
|
||||
return "Object name invalid: " + self.Bucket + "#" + self.Object
|
||||
}
|
||||
|
||||
// Return string an error formatted as the given text
|
||||
func (self BackendCorrupted) Error() string {
|
||||
return "Backend corrupted: " + self.Path
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user