Documentation ¶
Index ¶
- Variables
- func ErrEntityTooLarge(totalSize, maxObjectSize int64, bucketName, objectName string) error
- func ErrEntityTooSmall(totalSize int64, bucketName, objectName string) error
- func ErrInvalidArgument(message string) error
- func ErrInvalidBucketName(message string) error
- func ErrInvalidObjectName(message string) error
- func ErrInvalidParts(expectedParts, uploadedParts int) error
- func ErrUnexpectedEOF(totalRead, totalSize int64, bucketName, objectName string) error
- type BucketACL
- type BucketInfo
- type Client
- func (c Client) BucketExists(bucketName string) error
- func (c Client) FGetObject(bucketName, objectName, filePath string) error
- func (c Client) FPutObject(bucketName, objectName, filePath, contentType string) (n int64, err error)
- func (c Client) GetBucketACL(bucketName string) (BucketACL, error)
- func (c Client) GetObject(bucketName, objectName string) (*Object, error)
- func (c Client) ListBuckets() ([]BucketInfo, error)
- func (c Client) ListIncompleteUploads(bucketName, objectPrefix string, recursive bool, doneCh <-chan struct{}) <-chan ObjectMultipartInfo
- func (c Client) ListObjects(bucketName, objectPrefix string, recursive bool, doneCh <-chan struct{}) <-chan ObjectInfo
- func (c Client) MakeBucket(bucketName string, acl BucketACL, location string) error
- func (c Client) PresignedGetObject(bucketName string, objectName string, expires time.Duration, ...) (url string, err error)
- func (c Client) PresignedPostPolicy(p *PostPolicy) (map[string]string, error)
- func (c Client) PresignedPutObject(bucketName string, objectName string, expires time.Duration) (url string, err error)
- func (c Client) PutObject(bucketName, objectName string, reader io.Reader, contentType string) (n int64, err error)
- func (c Client) PutObjectWithProgress(bucketName, objectName string, reader io.Reader, contentType string, ...) (n int64, err error)
- func (c Client) RemoveBucket(bucketName string) error
- func (c Client) RemoveIncompleteUpload(bucketName, objectName string) error
- func (c Client) RemoveObject(bucketName, objectName string) error
- func (c *Client) SetAppInfo(appName string, appVersion string)
- func (c Client) SetBucketACL(bucketName string, acl BucketACL) error
- func (c *Client) SetCustomTransport(customHTTPTransport http.RoundTripper)
- func (c Client) StatObject(bucketName, objectName string) (ObjectInfo, error)
- func (c *Client) TraceOff()
- func (c *Client) TraceOn(outputStream io.Writer)
- type ErrorResponse
- type Object
- type ObjectInfo
- type ObjectMultipartInfo
- type PostPolicy
- func (p *PostPolicy) SetBucket(bucketName string) error
- func (p *PostPolicy) SetContentLengthRange(min, max int64) error
- func (p *PostPolicy) SetContentType(contentType string) error
- func (p *PostPolicy) SetExpires(t time.Time) error
- func (p *PostPolicy) SetKey(key string) error
- func (p *PostPolicy) SetKeyStartsWith(keyStartsWith string) error
- func (p PostPolicy) String() string
- type SignatureType
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidObjectPrefix = ErrInvalidObjectName
ErrInvalidObjectPrefix - Invalid object prefix response is similar to object name response.
Functions ¶
func ErrEntityTooLarge ¶
ErrEntityTooLarge - Input size is larger than supported maximum.
func ErrEntityTooSmall ¶
ErrEntityTooSmall - Input size is smaller than supported minimum.
func ErrInvalidArgument ¶
ErrInvalidArgument - Invalid argument response.
func ErrInvalidBucketName ¶
ErrInvalidBucketName - Invalid bucket name response.
func ErrInvalidObjectName ¶
ErrInvalidObjectName - Invalid object name response.
func ErrInvalidParts ¶
ErrInvalidParts - Invalid number of parts.
func ErrUnexpectedEOF ¶
ErrUnexpectedEOF - Unexpected end of file reached.
Types ¶
type BucketInfo ¶
type BucketInfo struct { // The name of the bucket. Name string `json:"name"` // Date the bucket was created. CreationDate time.Time `json:"creationDate"` }
BucketInfo container for bucket metadata.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client implements Amazon S3 compatible methods.
func (Client) BucketExists ¶
BucketExists verify if bucket exists and you have permission to access it.
func (Client) FGetObject ¶
FGetObject - download contents of an object to a local file.
func (Client) FPutObject ¶
func (c Client) FPutObject(bucketName, objectName, filePath, contentType string) (n int64, err error)
FPutObject - Create an object in a bucket, with contents from file at filePath.
func (Client) GetBucketACL ¶
GetBucketACL - Get the permissions on an existing bucket.
Returned values are:
private - Owner gets full access. public-read - Owner gets full access, others get read access. public-read-write - Owner gets full access, others get full access too. authenticated-read - Owner gets full access, authenticated users get read access.
func (Client) ListBuckets ¶
func (c Client) ListBuckets() ([]BucketInfo, error)
ListBuckets list all buckets owned by this authenticated user.
This call requires explicit authentication, no anonymous requests are allowed for listing buckets.
api := client.New(....) for message := range api.ListBuckets() { fmt.Println(message) }
func (Client) ListIncompleteUploads ¶
func (c Client) ListIncompleteUploads(bucketName, objectPrefix string, recursive bool, doneCh <-chan struct{}) <-chan ObjectMultipartInfo
ListIncompleteUploads - List incompletely uploaded multipart objects.
ListIncompleteUploads lists all incompleted objects matching the objectPrefix from the specified bucket. If recursion is enabled it would list all subdirectories and all its contents.
Your input parameters are just bucketName, objectPrefix, recursive and a done channel to pro-actively close the internal go routine. If you enable recursive as 'true' this function will return back all the multipart objects in a given bucket name.
api := client.New(....) // Create a done channel. doneCh := make(chan struct{}) defer close(doneCh) // Recurively list all objects in 'mytestbucket' recursive := true for message := range api.ListIncompleteUploads("mytestbucket", "starthere", recursive) { fmt.Println(message) }
func (Client) ListObjects ¶
func (c Client) ListObjects(bucketName, objectPrefix string, recursive bool, doneCh <-chan struct{}) <-chan ObjectInfo
ListObjects - (List Objects) - List some objects or all recursively.
ListObjects lists all objects matching the objectPrefix from the specified bucket. If recursion is enabled it would list all subdirectories and all its contents.
Your input parameters are just bucketName, objectPrefix, recursive and a done channel for pro-actively closing the internal go routine. If you enable recursive as 'true' this function will return back all the objects in a given bucket name and object prefix.
api := client.New(....) // Create a done channel. doneCh := make(chan struct{}) defer close(doneCh) // Recurively list all objects in 'mytestbucket' recursive := true for message := range api.ListObjects("mytestbucket", "starthere", recursive, doneCh) { fmt.Println(message) }
func (Client) MakeBucket ¶
MakeBucket makes a new bucket.
Optional arguments are acl and location - by default all buckets are created with “private“ acl and in US Standard region.
ACL valid values - http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
private - owner gets full access [default]. public-read - owner gets full access, all others get read access. public-read-write - owner gets full access, all others get full access too. authenticated-read - owner gets full access, authenticated users get read access.
For Amazon S3 for more supported regions - http://docs.aws.amazon.com/general/latest/gr/rande.html For Google Cloud Storage for more supported regions - https://cloud.google.com/storage/docs/bucket-locations
func (Client) PresignedGetObject ¶
func (c Client) PresignedGetObject(bucketName string, objectName string, expires time.Duration, reqParams url.Values) (url string, err error)
PresignedGetObject - Returns a presigned URL to access an object without credentials. Expires maximum is 7days - ie. 604800 and minimum is 1. Additionally you can override a set of response headers using the query parameters.
func (Client) PresignedPostPolicy ¶
func (c Client) PresignedPostPolicy(p *PostPolicy) (map[string]string, error)
PresignedPostPolicy - Returns POST form data to upload an object at a location.
func (Client) PresignedPutObject ¶
func (c Client) PresignedPutObject(bucketName string, objectName string, expires time.Duration) (url string, err error)
PresignedPutObject - Returns a presigned URL to upload an object without credentials. Expires maximum is 7days - ie. 604800 and minimum is 1.
func (Client) PutObject ¶
func (c Client) PutObject(bucketName, objectName string, reader io.Reader, contentType string) (n int64, err error)
PutObject creates an object in a bucket.
You must have WRITE permissions on a bucket to create an object.
- For size smaller than 5MiB PutObject automatically does a single atomic Put operation.
- For size larger than 5MiB PutObject automatically does a resumable multipart Put operation.
- For size input as -1 PutObject does a multipart Put operation until input stream reaches EOF. Maximum object size that can be uploaded through this operation will be 5TiB.
NOTE: Google Cloud Storage does not implement Amazon S3 Compatible multipart PUT. So we fall back to single PUT operation with the maximum limit of 5GiB.
NOTE: For anonymous requests Amazon S3 doesn't allow multipart upload. So we fall back to single PUT operation.
func (Client) PutObjectWithProgress ¶
func (c Client) PutObjectWithProgress(bucketName, objectName string, reader io.Reader, contentType string, progress io.Reader) (n int64, err error)
PutObjectWithProgress - With progress.
func (Client) RemoveBucket ¶
RemoveBucket deletes the bucket name.
All objects (including all object versions and delete markers). in the bucket must be deleted before successfully attempting this request.
func (Client) RemoveIncompleteUpload ¶
RemoveIncompleteUpload aborts an partially uploaded object. Requires explicit authentication, no anonymous requests are allowed for multipart API.
func (Client) RemoveObject ¶
RemoveObject remove an object from a bucket.
func (*Client) SetAppInfo ¶
SetAppInfo - add application details to user agent.
func (Client) SetBucketACL ¶
SetBucketACL set the permissions on an existing bucket using access control lists (ACL).
For example
private - owner gets full access [default]. public-read - owner gets full access, all others get read access. public-read-write - owner gets full access, all others get full access too. authenticated-read - owner gets full access, authenticated users get read access.
func (*Client) SetCustomTransport ¶
func (c *Client) SetCustomTransport(customHTTPTransport http.RoundTripper)
SetCustomTransport - set new custom transport.
func (Client) StatObject ¶
func (c Client) StatObject(bucketName, objectName string) (ObjectInfo, error)
StatObject verifies if object exists and you have permission to access.
type ErrorResponse ¶
type ErrorResponse struct { XMLName xml.Name `xml:"Error" json:"-"` Code string Message string BucketName string Key string RequestID string `xml:"RequestId"` HostID string `xml:"HostId"` // Region where the bucket is located. This header is returned // only in HEAD bucket and ListObjects response. Region string }
ErrorResponse - Is the typed error returned by all API operations.
func ToErrorResponse ¶
func ToErrorResponse(err error) ErrorResponse
ToErrorResponse - Returns parsed ErrorResponse struct from body and http headers.
For example:
import s3 "github.com/minio/minio-go" ... ... reader, stat, err := s3.GetObject(...) if err != nil { resp := s3.ToErrorResponse(err) } ...
func (ErrorResponse) Error ¶
func (e ErrorResponse) Error() string
Error - Returns HTTP error string
type Object ¶
type Object struct {
// contains filtered or unexported fields
}
Object represents an open object. It implements Read, ReadAt, Seeker, Close for a HTTP stream.
func (*Object) Close ¶
Close - The behavior of Close after the first call returns error for subsequent Close() calls.
func (*Object) Read ¶
Read reads up to len(p) bytes into p. It returns the number of bytes read (0 <= n <= len(p)) and any error encountered. Returns io.EOF upon end of file.
func (*Object) ReadAt ¶
ReadAt reads len(b) bytes from the File starting at byte offset off. It returns the number of bytes read and the error, if any. ReadAt always returns a non-nil error when n < len(b). At end of file, that error is io.EOF.
func (*Object) Seek ¶
Seek sets the offset for the next Read or Write to offset, interpreted according to whence: 0 means relative to the origin of the file, 1 means relative to the current offset, and 2 means relative to the end. Seek returns the new offset and an error, if any.
Seeking to a negative offset is an error. Seeking to any positive offset is legal, subsequent io operations succeed until the underlying object is not closed.
func (*Object) Stat ¶
func (o *Object) Stat() (ObjectInfo, error)
Stat returns the ObjectInfo structure describing object.
type ObjectInfo ¶
type ObjectInfo struct { // An ETag is optionally set to md5sum of an object. In case of multipart objects, // ETag is of the form MD5SUM-N where MD5SUM is md5sum of all individual md5sums of // each parts concatenated into one string. ETag string `json:"etag"` Key string `json:"name"` // Name of the object LastModified time.Time `json:"lastModified"` // Date and time the object was last modified. Size int64 `json:"size"` // Size in bytes of the object. ContentType string `json:"contentType"` // A standard MIME type describing the format of the object data. // Owner name. Owner struct { DisplayName string `json:"name"` ID string `json:"id"` } `json:"owner"` // The class of storage used to store the object. StorageClass string `json:"storageClass"` // Error Err error `json:"-"` }
ObjectInfo container for object metadata.
type ObjectMultipartInfo ¶
type ObjectMultipartInfo struct { // Date and time at which the multipart upload was initiated. Initiated time.Time `type:"timestamp" timestampFormat:"iso8601"` Initiator initiator Owner owner // The type of storage to use for the object. Defaults to 'STANDARD'. StorageClass string // Key of the object for which the multipart upload was initiated. Key string // Size in bytes of the object. Size int64 // Upload ID that identifies the multipart upload. UploadID string `xml:"UploadId"` // Error Err error }
ObjectMultipartInfo container for multipart object metadata.
type PostPolicy ¶
type PostPolicy struct {
// contains filtered or unexported fields
}
PostPolicy - Provides strict static type conversion and validation for Amazon S3's POST policy JSON string.
func (*PostPolicy) SetBucket ¶
func (p *PostPolicy) SetBucket(bucketName string) error
SetBucket - Sets bucket at which objects will be uploaded to.
func (*PostPolicy) SetContentLengthRange ¶
func (p *PostPolicy) SetContentLengthRange(min, max int64) error
SetContentLengthRange - Set new min and max content length condition for all incoming uploads.
func (*PostPolicy) SetContentType ¶
func (p *PostPolicy) SetContentType(contentType string) error
SetContentType - Sets content-type of the object for this policy based upload.
func (*PostPolicy) SetExpires ¶
func (p *PostPolicy) SetExpires(t time.Time) error
SetExpires - Sets expiration time for the new policy.
func (*PostPolicy) SetKey ¶
func (p *PostPolicy) SetKey(key string) error
SetKey - Sets an object name for the policy based upload.
func (*PostPolicy) SetKeyStartsWith ¶
func (p *PostPolicy) SetKeyStartsWith(keyStartsWith string) error
SetKeyStartsWith - Sets an object name that an policy based upload can start with.
func (PostPolicy) String ¶
func (p PostPolicy) String() string
Stringer interface for printing policy in json formatted string.
type SignatureType ¶
type SignatureType int
SignatureType is type of Authorization requested for a given HTTP request.
const ( Latest SignatureType = iota SignatureV4 SignatureV2 )
Different types of supported signatures - default is Latest i.e SignatureV4.
Source Files ¶
- api-definitions.go
- api-error-response.go
- api-get-object-file.go
- api-get.go
- api-list.go
- api-presigned.go
- api-put-bucket.go
- api-put-object-common.go
- api-put-object-file.go
- api-put-object-multipart.go
- api-put-object-progress.go
- api-put-object-readat.go
- api-put-object.go
- api-remove.go
- api-s3-definitions.go
- api-stat.go
- api.go
- bucket-acl.go
- bucket-cache.go
- constants.go
- hook-reader.go
- post-policy.go
- request-signature-v2.go
- request-signature-v4.go
- s3-endpoints.go
- signature-type.go
- tempfile.go
- utils.go