|
|
|
@ -434,12 +434,34 @@ func (de DelMarkerExpiration) MarshalXML(enc *xml.Encoder, start xml.StartElemen |
|
|
|
|
return enc.EncodeElement(delMarkerExp(de), start) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// AllVersionsExpiration represents AllVersionsExpiration actions element in an ILM policy
|
|
|
|
|
type AllVersionsExpiration struct { |
|
|
|
|
XMLName xml.Name `xml:"AllVersionsExpiration" json:"-"` |
|
|
|
|
Days int `xml:"Days,omitempty" json:"Days,omitempty"` |
|
|
|
|
DeleteMarker ExpireDeleteMarker `xml:"DeleteMarker,omitempty" json:"DeleteMarker,omitempty"` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// IsNull returns true if days field is 0
|
|
|
|
|
func (e AllVersionsExpiration) IsNull() bool { |
|
|
|
|
return e.Days == 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// MarshalXML satisfies xml.Marshaler to provide custom encoding
|
|
|
|
|
func (e AllVersionsExpiration) MarshalXML(enc *xml.Encoder, start xml.StartElement) error { |
|
|
|
|
if e.IsNull() { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
type allVersionsExp AllVersionsExpiration |
|
|
|
|
return enc.EncodeElement(allVersionsExp(e), start) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// MarshalJSON customizes json encoding by omitting empty values
|
|
|
|
|
func (r Rule) MarshalJSON() ([]byte, error) { |
|
|
|
|
type rule struct { |
|
|
|
|
AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `json:"AbortIncompleteMultipartUpload,omitempty"` |
|
|
|
|
Expiration *Expiration `json:"Expiration,omitempty"` |
|
|
|
|
DelMarkerExpiration *DelMarkerExpiration `json:"DelMarkerExpiration,omitempty"` |
|
|
|
|
AllVersionsExpiration *AllVersionsExpiration `json:"AllVersionsExpiration,omitempty"` |
|
|
|
|
ID string `json:"ID"` |
|
|
|
|
RuleFilter *Filter `json:"Filter,omitempty"` |
|
|
|
|
NoncurrentVersionExpiration *NoncurrentVersionExpiration `json:"NoncurrentVersionExpiration,omitempty"` |
|
|
|
@ -475,6 +497,9 @@ func (r Rule) MarshalJSON() ([]byte, error) { |
|
|
|
|
if !r.NoncurrentVersionTransition.isNull() { |
|
|
|
|
newr.NoncurrentVersionTransition = &r.NoncurrentVersionTransition |
|
|
|
|
} |
|
|
|
|
if !r.AllVersionsExpiration.IsNull() { |
|
|
|
|
newr.AllVersionsExpiration = &r.AllVersionsExpiration |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return json.Marshal(newr) |
|
|
|
|
} |
|
|
|
@ -485,6 +510,7 @@ type Rule struct { |
|
|
|
|
AbortIncompleteMultipartUpload AbortIncompleteMultipartUpload `xml:"AbortIncompleteMultipartUpload,omitempty" json:"AbortIncompleteMultipartUpload,omitempty"` |
|
|
|
|
Expiration Expiration `xml:"Expiration,omitempty" json:"Expiration,omitempty"` |
|
|
|
|
DelMarkerExpiration DelMarkerExpiration `xml:"DelMarkerExpiration,omitempty" json:"DelMarkerExpiration,omitempty"` |
|
|
|
|
AllVersionsExpiration AllVersionsExpiration `xml:"AllVersionsExpiration,omitempty" json:"AllVersionsExpiration,omitempty"` |
|
|
|
|
ID string `xml:"ID" json:"ID"` |
|
|
|
|
RuleFilter Filter `xml:"Filter,omitempty" json:"Filter,omitempty"` |
|
|
|
|
NoncurrentVersionExpiration NoncurrentVersionExpiration `xml:"NoncurrentVersionExpiration,omitempty" json:"NoncurrentVersionExpiration,omitempty"` |
|
|
|
|