evalphobia/aws-sdk-go-v2-wrapper

View on GitHub
s3/type.go

Summary

Maintainability
C
1 day
Test Coverage
package s3

import (
    "time"

    SDK "github.com/aws/aws-sdk-go-v2/service/s3"
    "github.com/evalphobia/aws-sdk-go-v2-wrapper/private/pointers"
)

type AccessControlPolicy struct {
    Grants []Grant
    Owner  Owner
}

func (r AccessControlPolicy) ToSDK() *SDK.AccessControlPolicy {
    if len(r.Grants) == 0 {
        return nil
    }

    o := &SDK.AccessControlPolicy{}

    if len(r.Grants) != 0 {
        list := make([]SDK.Grant, len(r.Grants))
        for i, v := range r.Grants {
            list[i] = v.ToSDK()
        }
        o.Grants = list
    }

    v := r.Owner.ToSDK()
    o.Owner = &v
    return o
}

type Bucket struct {
    CreationDate time.Time
    Name         string
}

func newBuckets(list []SDK.Bucket) []Bucket {
    if len(list) == 0 {
        return nil
    }

    results := make([]Bucket, len(list))
    for i, v := range list {
        results[i] = newBucket(v)
    }
    return results
}

func newBucket(b SDK.Bucket) Bucket {
    result := Bucket{}

    if b.CreationDate != nil {
        result.CreationDate = *b.CreationDate
    }
    if b.Name != nil {
        result.Name = *b.Name
    }
    return result
}

type Delete struct {
    Objects []ObjectIdentifier
    Quiet   bool
}

func (r Delete) ToSDK() SDK.Delete {
    o := SDK.Delete{}

    if len(r.Objects) != 0 {
        list := make([]SDK.ObjectIdentifier, len(r.Objects))
        for i, v := range r.Objects {
            list[i] = v.ToSDK()
        }
        o.Objects = list
    }

    if r.Quiet {
        o.Quiet = pointers.Bool(r.Quiet)
    }
    return o
}

type DeletedObject struct {
    DeleteMarker          bool
    DeleteMarkerVersionID string
    Key                   string
    VersionID             string
}

func newDeletedObjects(list []SDK.DeletedObject) []DeletedObject {
    if len(list) == 0 {
        return nil
    }

    result := make([]DeletedObject, len(list))
    for i, v := range list {
        result[i] = newDeletedObject(v)
    }
    return result
}

func newDeletedObject(o SDK.DeletedObject) DeletedObject {
    result := DeletedObject{}

    if o.DeleteMarker != nil {
        result.DeleteMarker = *o.DeleteMarker
    }
    if o.DeleteMarkerVersionId != nil {
        result.DeleteMarkerVersionID = *o.DeleteMarkerVersionId
    }
    if o.Key != nil {
        result.Key = *o.Key
    }
    if o.VersionId != nil {
        result.VersionID = *o.VersionId
    }
    return result
}

type DeleteMarkerEntry struct {
    IsLatest     bool
    Key          string
    LastModified time.Time
    Owner        Owner
    VersionID    string
}

func newDeleteMarkerEntries(list []SDK.DeleteMarkerEntry) []DeleteMarkerEntry {
    if len(list) == 0 {
        return nil
    }

    result := make([]DeleteMarkerEntry, len(list))
    for i, v := range list {
        result[i] = newDeleteMarkerEntry(v)
    }
    return result
}

func newDeleteMarkerEntry(o SDK.DeleteMarkerEntry) DeleteMarkerEntry {
    result := DeleteMarkerEntry{}

    if o.IsLatest != nil {
        result.IsLatest = *o.IsLatest
    }
    if o.Key != nil {
        result.Key = *o.Key
    }
    if o.LastModified != nil {
        result.LastModified = *o.LastModified
    }

    result.Owner = newOwner(o.Owner)

    if o.VersionId != nil {
        result.VersionID = *o.VersionId
    }
    return result
}

type Error struct {
    Code      string
    Key       string
    Message   string
    VersionID string
}

func newErrors(list []SDK.Error) []Error {
    if len(list) == 0 {
        return nil
    }

    result := make([]Error, len(list))
    for i, v := range list {
        result[i] = newError(v)
    }
    return result
}

func newError(o SDK.Error) Error {
    result := Error{}

    if o.Code != nil {
        result.Code = *o.Code
    }
    if o.Key != nil {
        result.Key = *o.Key
    }
    if o.Message != nil {
        result.Message = *o.Message
    }
    if o.VersionId != nil {
        result.VersionID = *o.VersionId
    }
    return result
}

type Grant struct {
    GranteeDisplayName  string
    GranteeEmailAddress string
    GranteeID           string
    GranteeType         Type
    GranteeURI          string
    Permission          Permission
}

func newGrants(list []SDK.Grant) []Grant {
    if len(list) == 0 {
        return nil
    }

    result := make([]Grant, len(list))
    for i, v := range list {
        result[i] = newGrant(v)
    }
    return result
}

func newGrant(o SDK.Grant) Grant {
    result := Grant{}

    g := o.Grantee
    if g.DisplayName != nil {
        result.GranteeDisplayName = *g.DisplayName
    }
    if g.EmailAddress != nil {
        result.GranteeEmailAddress = *g.EmailAddress
    }
    if g.ID != nil {
        result.GranteeID = *g.ID
    }
    if g.Type != "" {
        result.GranteeType = Type(g.Type)
    }
    if g.URI != nil {
        result.GranteeURI = *g.URI
    }
    if o.Permission != "" {
        result.Permission = Permission(o.Permission)
    }
    return result
}

func (r Grant) ToSDK() SDK.Grant {
    o := SDK.Grant{}

    g := SDK.Grantee{}
    if r.GranteeDisplayName != "" {
        g.DisplayName = pointers.String(r.GranteeDisplayName)
    }
    if r.GranteeEmailAddress != "" {
        g.EmailAddress = pointers.String(r.GranteeEmailAddress)
    }
    if r.GranteeID != "" {
        g.ID = pointers.String(r.GranteeID)
    }
    if r.GranteeURI != "" {
        g.URI = pointers.String(r.GranteeURI)
    }
    g.Type = SDK.Type(r.GranteeType)

    o.Permission = SDK.Permission(r.Permission)
    return o
}

type LifecycleRule struct {
    Expiration                   LifecycleExpiration
    Filter                       LifecycleRuleFilter
    ID                           string
    NoncurrentVersionTransitions []NoncurrentVersionTransition
    Prefix                       string
    Status                       ExpirationStatus
    Transitions                  []Transition

    AbortIncompleteMultipartUploadDaysAfterInitiation int64
    NoncurrentVersionExpirationDays                   int64
}

func newLifecycleRules(list []SDK.LifecycleRule) []LifecycleRule {
    if len(list) == 0 {
        return nil
    }

    results := make([]LifecycleRule, len(list))
    for i, v := range list {
        results[i] = newLifecycleRule(v)
    }
    return results
}

func newLifecycleRule(o SDK.LifecycleRule) LifecycleRule {
    result := LifecycleRule{}

    result.Expiration = newLifecycleExpiration(o.Expiration)

    if o.Filter != nil {
        result.Filter = newLifecycleRuleFilter(o.Filter)
    }
    if o.ID != nil {
        result.ID = *o.ID
    }

    result.NoncurrentVersionTransitions = newNoncurrentVersionTransitions(o.NoncurrentVersionTransitions)

    if o.Prefix != nil {
        result.Prefix = *o.Prefix
    }

    result.Status = ExpirationStatus(o.Status)
    result.Transitions = newTransitions(o.Transitions)

    if v := o.AbortIncompleteMultipartUpload; v != nil {
        if v.DaysAfterInitiation != nil {
            result.AbortIncompleteMultipartUploadDaysAfterInitiation = *v.DaysAfterInitiation
        }
    }
    if v := o.NoncurrentVersionExpiration; v != nil {
        if v.NoncurrentDays != nil {
            result.NoncurrentVersionExpirationDays = *v.NoncurrentDays
        }
    }
    return result
}

func (r LifecycleRule) ToSDK() SDK.LifecycleRule {
    o := SDK.LifecycleRule{}

    if r.ID != "" {
        o.ID = pointers.String(r.ID)
    }
    if r.Prefix != "" {
        o.Prefix = pointers.String(r.Prefix)
    }

    o.Status = SDK.ExpirationStatus(r.Status)

    if r.AbortIncompleteMultipartUploadDaysAfterInitiation != 0 {
        o.AbortIncompleteMultipartUpload = &SDK.AbortIncompleteMultipartUpload{
            DaysAfterInitiation: pointers.Long64(r.AbortIncompleteMultipartUploadDaysAfterInitiation),
        }
    }
    if r.NoncurrentVersionExpirationDays != 0 {
        o.NoncurrentVersionExpiration = &SDK.NoncurrentVersionExpiration{
            NoncurrentDays: pointers.Long64(r.NoncurrentVersionExpirationDays),
        }
    }

    if len(r.NoncurrentVersionTransitions) != 0 {
        list := make([]SDK.NoncurrentVersionTransition, len(r.NoncurrentVersionTransitions))
        for i, v := range r.NoncurrentVersionTransitions {
            list[i] = v.ToSDK()
        }
        o.NoncurrentVersionTransitions = list
    }
    if len(r.Transitions) != 0 {
        list := make([]SDK.Transition, len(r.Transitions))
        for i, v := range r.Transitions {
            list[i] = v.ToSDK()
        }
        o.Transitions = list
    }

    if !r.Expiration.IsEmpty() {
        v := r.Expiration.ToSDK()
        o.Expiration = &v
    }
    if !r.Filter.IsEmpty() {
        v := r.Filter.ToSDK()
        o.Filter = &v
    }
    return o
}

type LifecycleRuleFilter struct {
    AndOperatorPrefix string
    AndOperatorTags   []Tag
    Prefix            string
    Tag               Tag
}

func newLifecycleRuleFilter(o *SDK.LifecycleRuleFilter) LifecycleRuleFilter {
    result := LifecycleRuleFilter{}
    if o == nil {
        return result
    }

    if o.And != nil {
        a := o.And
        if a.Prefix != nil {
            result.AndOperatorPrefix = *a.Prefix
        }
        if len(a.Tags) != 0 {
            result.AndOperatorTags = newTags(a.Tags)
        }
    }
    if o.Prefix != nil {
        result.Prefix = *o.Prefix
    }
    if o.Tag != nil {
        result.Tag = newTag(*o.Tag)
    }
    return result
}

func (r LifecycleRuleFilter) IsEmpty() bool {
    switch {
    case r.Prefix != "",
        r.AndOperatorPrefix != "",
        len(r.AndOperatorTags) != 0,
        !r.Tag.IsEmpty():
        return false
    }
    return true
}

func (r LifecycleRuleFilter) ToSDK() SDK.LifecycleRuleFilter {
    o := SDK.LifecycleRuleFilter{}
    if r.Prefix != "" {
        o.Prefix = pointers.String(r.Prefix)
    }
    if !r.Tag.IsEmpty() {
        v := r.Tag.ToSDK()
        o.Tag = &v
    }
    if r.AndOperatorPrefix != "" || len(r.AndOperatorTags) != 0 {
        and := &SDK.LifecycleRuleAndOperator{}
        if r.AndOperatorPrefix != "" {
            and.Prefix = pointers.String(r.AndOperatorPrefix)
        }
        if len(r.AndOperatorTags) != 0 {
            list := make([]SDK.Tag, len(r.AndOperatorTags))
            for i, v := range r.AndOperatorTags {
                list[i] = v.ToSDK()
            }
            and.Tags = list
        }
    }
    return o
}

type LifecycleExpiration struct {
    Date                      time.Time
    Days                      int64
    ExpiredObjectDeleteMarker bool
}

func newLifecycleExpiration(o *SDK.LifecycleExpiration) LifecycleExpiration {
    result := LifecycleExpiration{}
    if o == nil {
        return result
    }

    if o.Date != nil {
        result.Date = *o.Date
    }
    if o.Days != nil {
        result.Days = *o.Days
    }
    if o.ExpiredObjectDeleteMarker != nil {
        result.ExpiredObjectDeleteMarker = *o.ExpiredObjectDeleteMarker
    }
    return result
}

func (r LifecycleExpiration) IsEmpty() bool {
    switch {
    case r.Days != 0,
        r.ExpiredObjectDeleteMarker,
        !r.Date.IsZero():
        return false
    }
    return true
}

func (r LifecycleExpiration) ToSDK() SDK.LifecycleExpiration {
    o := SDK.LifecycleExpiration{}
    if r.Days != 0 {
        o.Days = pointers.Long64(r.Days)
    }
    if !r.Date.IsZero() {
        o.Date = &r.Date
    }
    if r.ExpiredObjectDeleteMarker {
        o.ExpiredObjectDeleteMarker = pointers.Bool(r.ExpiredObjectDeleteMarker)
    }
    return o
}

type NoncurrentVersionTransition struct {
    NoncurrentDays int64
    StorageClass   TransitionStorageClass
}

func newNoncurrentVersionTransitions(list []SDK.NoncurrentVersionTransition) []NoncurrentVersionTransition {
    if len(list) == 0 {
        return nil
    }

    results := make([]NoncurrentVersionTransition, len(list))
    for i, v := range list {
        results[i] = newNoncurrentVersionTransition(v)
    }
    return results
}

func newNoncurrentVersionTransition(o SDK.NoncurrentVersionTransition) NoncurrentVersionTransition {
    result := NoncurrentVersionTransition{}

    if o.NoncurrentDays != nil {
        result.NoncurrentDays = *o.NoncurrentDays
    }
    result.StorageClass = TransitionStorageClass(o.StorageClass)
    return result
}

func (r NoncurrentVersionTransition) ToSDK() SDK.NoncurrentVersionTransition {
    o := SDK.NoncurrentVersionTransition{}
    if r.NoncurrentDays != 0 {
        o.NoncurrentDays = pointers.Long64(r.NoncurrentDays)
    }

    o.StorageClass = SDK.TransitionStorageClass(r.StorageClass)
    return o
}

type Object struct {
    ETag             string
    Key              string
    LastModified     time.Time
    Size             int64
    StorageClass     ObjectStorageClass
    OwnerID          string
    OwnerDisplayName string
}

func NewObject(o SDK.Object) Object {
    result := Object{}

    if o.ETag != nil {
        result.ETag = *o.ETag
    }
    if o.Key != nil {
        result.Key = *o.Key
    }
    if o.LastModified != nil {
        result.LastModified = *o.LastModified
    }
    if o.Size != nil {
        result.Size = *o.Size
    }

    result.StorageClass = ObjectStorageClass(o.StorageClass)

    if o.Owner != nil {
        owner := o.Owner
        if owner.ID != nil {
            result.OwnerID = *owner.ID
        }
        if owner.DisplayName != nil {
            result.OwnerDisplayName = *owner.DisplayName
        }
    }
    return result
}

type ObjectIdentifier struct {
    Key       string
    VersionID string
}

func (r ObjectIdentifier) ToSDK() SDK.ObjectIdentifier {
    o := SDK.ObjectIdentifier{}

    if r.Key != "" {
        o.Key = pointers.String(r.Key)
    }
    if r.VersionID != "" {
        o.VersionId = pointers.String(r.VersionID)
    }
    return o
}

type ObjectVersion struct {
    ETag         string
    IsLatest     bool
    Key          string
    LastModified time.Time
    Owner        Owner
    Size         int64
    StorageClass ObjectVersionStorageClass
    VersionID    string
}

func newObjectVersions(list []SDK.ObjectVersion) []ObjectVersion {
    if len(list) == 0 {
        return nil
    }

    result := make([]ObjectVersion, len(list))
    for i, v := range list {
        result[i] = newObjectVersion(v)
    }
    return result
}

func newObjectVersion(o SDK.ObjectVersion) ObjectVersion {
    result := ObjectVersion{}

    if o.ETag != nil {
        result.ETag = *o.ETag
    }
    if o.IsLatest != nil {
        result.IsLatest = *o.IsLatest
    }
    if o.Key != nil {
        result.Key = *o.Key
    }
    if o.LastModified != nil {
        result.LastModified = *o.LastModified
    }

    result.Owner = newOwner(o.Owner)

    if o.Size != nil {
        result.Size = *o.Size
    }

    result.StorageClass = ObjectVersionStorageClass(o.StorageClass)

    if o.VersionId != nil {
        result.VersionID = *o.VersionId
    }
    return result
}

type Owner struct {
    DisplayName string
    ID          string
}

func newOwner(o *SDK.Owner) Owner {
    result := Owner{}
    if o == nil {
        return result
    }

    if o.DisplayName != nil {
        result.DisplayName = *o.DisplayName
    }
    if o.ID != nil {
        result.ID = *o.ID
    }
    return result
}

func (r Owner) ToSDK() SDK.Owner {
    o := SDK.Owner{}

    if r.DisplayName != "" {
        o.DisplayName = pointers.String(r.DisplayName)
    }
    if r.ID != "" {
        o.ID = pointers.String(r.ID)
    }
    return o
}

type Tag struct {
    Key   string
    Value string
}

func newTags(list []SDK.Tag) []Tag {
    if len(list) == 0 {
        return nil
    }

    results := make([]Tag, len(list))
    for i, v := range list {
        results[i] = newTag(v)
    }
    return results
}

func newTag(o SDK.Tag) Tag {
    result := Tag{}

    if o.Key != nil {
        result.Key = *o.Key
    }
    if o.Value != nil {
        result.Value = *o.Value
    }
    return result
}

func (r Tag) IsEmpty() bool {
    return r.Key == ""
}

func (r Tag) ToSDK() SDK.Tag {
    o := SDK.Tag{}

    if r.Key != "" {
        o.Key = pointers.String(r.Key)
    }
    if r.Value != "" {
        o.Value = pointers.String(r.Value)
    }
    return o
}

type Transition struct {
    Date         time.Time
    Days         int64
    StorageClass TransitionStorageClass
}

func newTransitions(list []SDK.Transition) []Transition {
    if len(list) == 0 {
        return nil
    }

    results := make([]Transition, len(list))
    for i, v := range list {
        results[i] = newTransition(v)
    }
    return results
}

func newTransition(o SDK.Transition) Transition {
    result := Transition{}

    if o.Date != nil {
        result.Date = *o.Date
    }
    if o.Days != nil {
        result.Days = *o.Days
    }
    result.StorageClass = TransitionStorageClass(o.StorageClass)
    return result
}

func (r Transition) ToSDK() SDK.Transition {
    o := SDK.Transition{}
    if !r.Date.IsZero() {
        o.Date = &r.Date
    }
    if r.Days != 0 {
        o.Days = pointers.Long64(r.Days)
    }

    o.StorageClass = SDK.TransitionStorageClass(r.StorageClass)
    return o
}