datatype

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 4, 2020 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CANNEDACL_PRIVATE                    = 0
	CANNEDACL_PUBLIC_READ                = 1
	CANNEDACL_PUBLIC_READ_WRITE          = 2
	CANNEDACL_AWS_EXEC_READ              = 3
	CANNEDACL_AUTHENTICATED_READ         = 4
	CANNEDACL_BUCKET_OWNER_READ          = 5
	CANNEDACL_BUCKET_OWNER_FULL_CONTROLL = 6
)
View Source
const (
	XMLNSXSI = "http://www.w3.org/2001/XMLSchema-instance"
	XMLNS    = "http://s3.amazonaws.com/doc/2006-03-01/"
)
View Source
const (
	ACL_TYPE_CANON_USER = "CanonicalUser"
	ACL_TYPE_GROUP      = "Group"
)
View Source
const (
	ACL_GROUP_TYPE_ALL_USERS           = "http://acs.amazonaws.com/groups/global/AllUsers"
	ACL_GROUP_TYPE_AUTHENTICATED_USERS = "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
)
View Source
const (
	ACL_PERM_READ         = "READ"
	ACL_PERM_WRITE        = "WRITE"
	ACL_PERM_READ_ACP     = "READ_ACP"
	ACL_PERM_WRITE_ACP    = "WRITE_ACP"
	ACL_PERM_FULL_CONTROL = "FULL_CONTROL"
)
View Source
const (
	MaxObjectList  = 1000 // Limit number of objects in a listObjectsResponse.
	MaxUploadsList = 1000 // Limit number of uploads in a listUploadsResponse.
	MaxPartsList   = 1000 // Limit number of parts in a listPartsResponse.
)
View Source
const (
	Iso8601Format           = "20060102T150405Z"
	YYYYMMDD                = "20060102"
	PresignedUrlExpireLimit = 7 * 24 * time.Hour
)

Variables

View Source
var ErrorInvalidRange = errors.New("Invalid range")

ErrorInvalidRange - returned when given range value is not valid.

View Source
var ValidCannedAcl = []string{
	"private",
	"public-read",
	"public-read-write",
}

Functions

func IsValidCannedAcl

func IsValidCannedAcl(acl Acl) (err error)

func ParseAmzDate

func ParseAmzDate(amzDateStr string) (amzDate time.Time, apiErr error)

parseAmzDate - parses date string into supported amz date formats.

Types

type AccessControlPolicy

type AccessControlPolicy struct {
	XMLName           xml.Name `xml:"AccessControlPolicy"`
	Xmlns             string   `xml:"xmlns,attr,omitempty"`
	ID                string   `xml:"Owner>ID"`
	DisplayName       string   `xml:"Owner>DisplayName"`
	AccessControlList []Grant  `xml:"AccessControlList>Grant"`
}

type AccessControlPolicyResponse

type AccessControlPolicyResponse struct {
	XMLName           xml.Name        `xml:"AccessControlPolicy"`
	Xmlns             string          `xml:"xmlns,attr,omitempty"`
	ID                string          `xml:"Owner>ID"`
	DisplayName       string          `xml:"Owner>DisplayName"`
	AccessControlList []GrantResponse `xml:"AccessControlList>Grant"`
}

func CreatePolicyFromCanned

func CreatePolicyFromCanned(owner Owner, bucketOwner Owner, acl Acl) (
	policy AccessControlPolicyResponse, err error)

type Acl

type Acl struct {
	CannedAcl string
}

func GetCannedAclFromPolicy

func GetCannedAclFromPolicy(policy AccessControlPolicy) (acl Acl, err error)

the function will be deleted, because we will use AccessControlPolicy instead canned acl stored in hbase

type AppendObjectResult

type AppendObjectResult struct {
	PutObjectResult
	NextPosition int64
}

type Bucket

type Bucket struct {
	Name         string
	CreationDate string // time string of format "2006-01-02T15:04:05.000Z"
}

Bucket container for bucket metadata

type CommonPrefix

type CommonPrefix struct {
	XMLName xml.Name `xml:"CommonPrefixes"`
	Prefix  string
}

CommonPrefix container for prefix response in ListObjectsResponse

type CompleteMultipartResult

type CompleteMultipartResult struct {
	ETag                    string
	VersionId               string
	SseType                 string
	SseAwsKmsKeyIdBase64    string
	SseCustomerAlgorithm    string
	SseCustomerKeyMd5Base64 string
}

type CompleteMultipartUploadResponse

type CompleteMultipartUploadResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ CompleteMultipartUploadResult" json:"-"`

	Location string
	Bucket   string
	Key      string
	ETag     string
}

CompleteMultipartUploadResponse container for completed multipart upload response

type CopyObjectPartResponse

type CopyObjectPartResponse struct {
	XMLName      xml.Name `xml:"CopyPartResult"`
	LastModified string
	ETag         string
}

type CopyObjectResponse

type CopyObjectResponse struct {
	XMLName      xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ CopyObjectResult" json:"-"`
	ETag         string
	LastModified string // time string of format "2006-01-02T15:04:05.000Z"
}

CopyObjectResponse container returns ETag and LastModified of the successfully copied object

type CreateBucketLocationConfiguration

type CreateBucketLocationConfiguration struct {
	XMLName  xml.Name `xml:"CreateBucketConfiguration" json:"-"`
	Location string   `xml:"LocationConstraint"`
}

createBucketConfiguration container for bucket configuration request from client. Used for parsing the location from the request body for MakeBucket.

type DeleteError

type DeleteError struct {
	Code      string
	Message   string
	Key       string
	VersionId string `xml:",omitempty"`
}

DeleteError structure.

type DeleteObjectResult

type DeleteObjectResult struct {
	DeleteMarker bool
	VersionId    string
}

type DeleteObjectsRequest

type DeleteObjectsRequest struct {
	XMLName xml.Name `xml:"Delete"`
	// Element to enable quiet mode for the request
	Quiet bool
	// List of objects to be deleted
	Objects []ObjectIdentifier `xml:"Object"`
}

DeleteObjectsRequest - xml carrying the object key names which needs to be deleted.

type Grant

type Grant struct {
	XMLName    xml.Name `xml:"Grant"`
	Grantee    Grantee  `xml:"Grantee"`
	Permission string   `xml:"Permission"`
}

type GrantResponse

type GrantResponse struct {
	XMLName    xml.Name        `xml:"Grant"`
	Grantee    GranteeResponse `xml:"Grantee"`
	Permission string          `xml:"Permission"`
}

type Grantee

type Grantee struct {
	XMLName      xml.Name `xml:"Grantee"`
	XmlnsXsi     string   `xml:"xmlns:xsi,attr"`
	XsiType      string   `xml:"http://www.w3.org/2001/XMLSchema-instance type,attr"`
	URI          string   `xml:"URI,omitempty"`
	ID           string   `xml:"ID,omitempty"`
	DisplayName  string   `xml:"DisplayName,omitempty"`
	EmailAddress string   `xml:"EmailAddress,omitempty"`
}

type GranteeResponse

type GranteeResponse struct {
	XMLName      xml.Name `xml:"Grantee"`
	XmlnsXsi     string   `xml:"xmlns:xsi,attr"`
	XsiType      string   `xml:"xsi:type,attr"`
	URI          string   `xml:"URI,omitempty"`
	ID           string   `xml:"ID,omitempty"`
	DisplayName  string   `xml:"DisplayName,omitempty"`
	EmailAddress string   `xml:"EmailAddress,omitempty"`
}

type HttpRange

type HttpRange struct {
	OffsetBegin  int64
	OffsetEnd    int64
	ResourceSize int64
}

HttpRange specifies the byte range to be sent to the client.

func ParseRequestRange

func ParseRequestRange(rangeString string, resourceSize int64) (hrange *HttpRange, err error)

func (HttpRange) GetLength

func (hrange HttpRange) GetLength() int64

getlength - get length from the range.

func (HttpRange) String

func (hrange HttpRange) String() string

String populate range stringer interface

type InitiateMultipartUploadResponse

type InitiateMultipartUploadResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ InitiateMultipartUploadResult" json:"-"`

	Bucket   string
	Key      string
	UploadID string `xml:"UploadId"`
}

InitiateMultipartUploadResponse container for InitiateMultiPartUpload response, provides uploadID to start MultiPart upload

type Initiator

type Initiator Owner

Initiator inherit from Owner struct, fields are same

type ListBucketsResponse

type ListBucketsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListAllMyBucketsResult" json:"-"`
	Owner   Owner
	// Container for one or more buckets.
	Buckets struct {
		Buckets []Bucket `xml:"Bucket"`
	} // Buckets are nested
}

ListBucketsResponse - format for list buckets response

type ListMultipartUploadsResponse

type ListMultipartUploadsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListMultipartUploadsResult" json:"-"`

	Bucket             string
	KeyMarker          string
	UploadIdMarker     string
	NextKeyMarker      string
	NextUploadIdMarker string
	EncodingType       string `xml:"Encoding-Type,omitempty"`
	MaxUploads         int
	IsTruncated        bool
	Uploads            []Upload `xml:"Upload"`
	Prefix             string
	Delimiter          string
	CommonPrefixes     []CommonPrefix
}

ListMultipartUploadsResponse - format for list multipart uploads response.

type ListObjectsRequest

type ListObjectsRequest struct {
	Versioned    bool // should return versioned objects?
	Version      int  // Currently 1 or 2
	Delimiter    string
	EncodingType string
	MaxKeys      int
	Prefix       string

	// v1 specific
	Marker string

	// v2 specific
	ContinuationToken string
	StartAfter        string
	FetchOwner        bool

	// versioned specific
	KeyMarker       string
	VersionIdMarker string
}

type ListObjectsResponse

type ListObjectsResponse struct {
	XMLName xml.Name `xml:"ListBucketResult"`

	CommonPrefixes []CommonPrefix
	Delimiter      string
	EncodingType   string `xml:"Encoding-Type,omitempty"`
	IsTruncated    bool
	MaxKeys        int
	KeyCount       int `xml:",omitempty"`
	Prefix         string
	BucketName     string `xml:"Name"`

	// v1 specific
	Marker     string
	NextMarker string `xml:",omitempty"`

	// v2 specific
	ContinuationToken     string `xml:",omitempty"`
	NextContinuationToken string `xml:",omitempty"`
	StartAfter            string `xml:",omitempty"`

	Contents []Object
}

type ListPartsRequest

type ListPartsRequest struct {
	EncodingType     string
	UploadId         string
	MaxParts         int
	PartNumberMarker int
}

type ListPartsResponse

type ListPartsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListPartsResult" json:"-"`

	Bucket       string
	Key          string
	UploadId     string
	EncodingType string `xml:"Encoding-Type,omitempty"`

	Initiator Initiator
	Owner     Owner

	// The class of storage used to store the object.
	StorageClass string

	PartNumberMarker     int
	NextPartNumberMarker int
	MaxParts             int
	IsTruncated          bool

	// List of parts.
	Parts []Part `xml:"Part"`
}

ListPartsResponse - format for list parts response.

type ListUploadsRequest

type ListUploadsRequest struct {
	Delimiter      string
	EncodingType   string
	MaxUploads     int
	KeyMarker      string
	Prefix         string
	UploadIdMarker string
}

type LocationResponse

type LocationResponse struct {
	XMLName  xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ LocationConstraint" json:"-"`
	Location string   `xml:",chardata"`
}

LocationResponse - format for location response.

type Object

type Object struct {
	XMLName      xml.Name `xml:"Contents"`
	Key          string
	LastModified string // time string of format "2006-01-02T15:04:05.000Z"
	ETag         string
	Size         int64

	Owner Owner

	// The class of storage used to store the object.
	StorageClass string

	Location string
	Tier     int32
}

Object container for object metadata

type ObjectIdentifier

type ObjectIdentifier struct {
	ObjectName            string `xml:"Key"`
	VersionId             string `xml:",omitempty"`
	DeleteMarker          bool   `xml:",omitempty"`
	DeleteMarkerVersionId string `xml:",omitempty"`
}

ObjectIdentifier carries key name for the object to delete.

type Owner

type Owner struct {
	ID          string
	DisplayName string
}

Owner - bucket owner/principal

type Part

type Part struct {
	PartNumber   int
	ETag         string
	LastModified string
	Size         int64
}

Part container for part metadata.

type PostResponse

type PostResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ PostResponse" json:"-"`

	Location string
	Bucket   string
	Key      string
	ETag     string
}

PostResponse container for completed post upload response

type PutObjectPartResult

type PutObjectPartResult struct {
	ETag                    string
	SseType                 string
	SseAwsKmsKeyIdBase64    string
	SseCustomerAlgorithm    string
	SseCustomerKeyMd5Base64 string
}

type PutObjectResult

type PutObjectResult struct {
	Md5          string
	VersionId    string
	LastModified time.Time
}

type SseRequest

type SseRequest struct {
	// type of Server Side Encryption, could be "SSE-KMS", "SSE-S3", "SSE-C"(custom), or ""(none),
	// KMS is not implemented yet
	Type string

	// AWS-managed specific(KMS and S3)
	SseAwsKmsKeyId string
	SseContext     string

	// customer-provided specific(SSE-C)
	SseCustomerAlgorithm string
	SseCustomerKey       []byte

	// keys for copy
	CopySourceSseCustomerAlgorithm string
	CopySourceSseCustomerKey       []byte
}

type Upload

type Upload struct {
	Key          string
	UploadId     string
	Initiator    Initiator
	Owner        Owner
	StorageClass string
	Initiated    string // time string of format "2006-01-02T15:04:05.000Z"
}

Upload container for in progress multipart upload

type VersionedListObjectsResponse

type VersionedListObjectsResponse struct {
	XMLName xml.Name `xml:"ListVersionsResult"`

	Contents            []VersionedObject
	CommonPrefixes      []CommonPrefix
	Delimiter           string
	EncodingType        string `xml:"Encoding-Type,omitempty"`
	IsTruncated         bool
	MaxKeys             int
	KeyCount            int
	Prefix              string
	BucketName          string `xml:"Name"`
	KeyMarker           string
	NextKeyMarker       string
	VersionIdMarker     string
	NextVersionIdMarker string
}

type VersionedObject

type VersionedObject struct {
	XMLName   xml.Name
	Key       string
	VersionId string
	// TODO: IsLatest
	// IsLatest     bool
	LastModified string // time string of format "2006-01-02T15:04:05.000Z"
	ETag         string
	Size         int64
	StorageClass string
	Owner        Owner
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL