cmd/zc_newobjectadapters.go (212 lines of code) (raw):
// Copyright © Microsoft <wastore@microsoft.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
package cmd
import (
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/lease"
sharedirectory "github.com/Azure/azure-sdk-for-go/sdk/storage/azfile/directory"
sharefile "github.com/Azure/azure-sdk-for-go/sdk/storage/azfile/file"
"github.com/Azure/azure-storage-azcopy/v10/common"
"time"
)
var noContentProps = emptyPropertiesAdapter{}
var noBlobProps = emptyPropertiesAdapter{}
var noMetadata common.Metadata = nil
// emptyPropertiesAdapter supplies empty (zero-like) values
// for all methods in contentPropsProvider and blobPropsProvider
type emptyPropertiesAdapter struct{}
func (e emptyPropertiesAdapter) CacheControl() string {
return ""
}
func (e emptyPropertiesAdapter) ContentDisposition() string {
return ""
}
func (e emptyPropertiesAdapter) ContentEncoding() string {
return ""
}
func (e emptyPropertiesAdapter) ContentLanguage() string {
return ""
}
func (e emptyPropertiesAdapter) ContentType() string {
return ""
}
func (e emptyPropertiesAdapter) ContentMD5() []byte {
return make([]byte, 0)
}
func (e emptyPropertiesAdapter) ContentLength() int64 {
return 0
}
func (e emptyPropertiesAdapter) BlobType() blob.BlobType {
return ""
}
func (e emptyPropertiesAdapter) AccessTier() blob.AccessTier {
return ""
}
func (e emptyPropertiesAdapter) ArchiveStatus() blob.ArchiveStatus {
return ""
}
func (e emptyPropertiesAdapter) LastModified() time.Time {
return time.Time{}
}
func (e emptyPropertiesAdapter) LeaseDuration() lease.DurationType {
return ""
}
func (e emptyPropertiesAdapter) LeaseState() lease.StateType {
return ""
}
func (e emptyPropertiesAdapter) LeaseStatus() lease.StatusType {
return ""
}
// blobPropertiesResponseAdapter adapts a BlobGetPropertiesResponse to the blobPropsProvider interface
type blobPropertiesResponseAdapter struct {
*blob.GetPropertiesResponse
}
func (a blobPropertiesResponseAdapter) LastModified() time.Time {
return common.IffNotNil(a.GetPropertiesResponse.LastModified, time.Time{})
}
func (a blobPropertiesResponseAdapter) CacheControl() string {
return common.IffNotNil(a.GetPropertiesResponse.CacheControl, "")
}
func (a blobPropertiesResponseAdapter) ContentDisposition() string {
return common.IffNotNil(a.GetPropertiesResponse.ContentDisposition, "")
}
func (a blobPropertiesResponseAdapter) ContentEncoding() string {
return common.IffNotNil(a.GetPropertiesResponse.ContentEncoding, "")
}
func (a blobPropertiesResponseAdapter) ContentLanguage() string {
return common.IffNotNil(a.GetPropertiesResponse.ContentLanguage, "")
}
func (a blobPropertiesResponseAdapter) ContentType() string {
return common.IffNotNil(a.GetPropertiesResponse.ContentType, "")
}
func (a blobPropertiesResponseAdapter) ContentMD5() []byte {
return a.GetPropertiesResponse.ContentMD5
}
func (a blobPropertiesResponseAdapter) ContentLength() int64 {
return common.IffNotNil(a.GetPropertiesResponse.ContentLength, 0)
}
func (a blobPropertiesResponseAdapter) BlobType() blob.BlobType {
return common.IffNotNil(a.GetPropertiesResponse.BlobType, "")
}
func (a blobPropertiesResponseAdapter) AccessTier() blob.AccessTier {
return blob.AccessTier(common.IffNotNil(a.GetPropertiesResponse.AccessTier, ""))
}
func (a blobPropertiesResponseAdapter) ArchiveStatus() blob.ArchiveStatus {
return blob.ArchiveStatus(common.IffNotNil(a.GetPropertiesResponse.ArchiveStatus, ""))
}
// LeaseDuration returns the value for header x-ms-lease-duration.
func (a blobPropertiesResponseAdapter) LeaseDuration() lease.DurationType {
return common.IffNotNil(a.GetPropertiesResponse.LeaseDuration, "")
}
// LeaseState returns the value for header x-ms-lease-state.
func (a blobPropertiesResponseAdapter) LeaseState() lease.StateType {
return common.IffNotNil(a.GetPropertiesResponse.LeaseState, "")
}
// LeaseStatus returns the value for header x-ms-lease-status.
func (a blobPropertiesResponseAdapter) LeaseStatus() lease.StatusType {
return common.IffNotNil(a.GetPropertiesResponse.LeaseStatus, "")
}
// blobPropertiesAdapter adapts a BlobProperties object to both the
// contentPropsProvider and blobPropsProvider interfaces
type blobPropertiesAdapter struct {
BlobProperties *container.BlobProperties
}
func (a blobPropertiesAdapter) CacheControl() string {
return common.IffNotNil(a.BlobProperties.CacheControl, "")
}
func (a blobPropertiesAdapter) ContentDisposition() string {
return common.IffNotNil(a.BlobProperties.ContentDisposition, "")
}
func (a blobPropertiesAdapter) ContentEncoding() string {
return common.IffNotNil(a.BlobProperties.ContentEncoding, "")
}
func (a blobPropertiesAdapter) ContentLanguage() string {
return common.IffNotNil(a.BlobProperties.ContentLanguage, "")
}
func (a blobPropertiesAdapter) ContentType() string {
return common.IffNotNil(a.BlobProperties.ContentType, "")
}
func (a blobPropertiesAdapter) ContentMD5() []byte {
return a.BlobProperties.ContentMD5
}
func (a blobPropertiesAdapter) ContentLength() int64 {
return common.IffNotNil(a.BlobProperties.ContentLength, 0)
}
func (a blobPropertiesAdapter) BlobType() blob.BlobType {
return common.IffNotNil(a.BlobProperties.BlobType, "")
}
func (a blobPropertiesAdapter) AccessTier() blob.AccessTier {
return common.IffNotNil(a.BlobProperties.AccessTier, "")
}
// LeaseDuration returns the value for header x-ms-lease-duration.
func (a blobPropertiesAdapter) LeaseDuration() lease.DurationType {
return common.IffNotNil(a.BlobProperties.LeaseDuration, "")
}
// LeaseState returns the value for header x-ms-lease-state.
func (a blobPropertiesAdapter) LeaseState() lease.StateType {
return common.IffNotNil(a.BlobProperties.LeaseState, "")
}
// LeaseStatus returns the value for header x-ms-lease-status.
func (a blobPropertiesAdapter) LeaseStatus() lease.StatusType {
return common.IffNotNil(a.BlobProperties.LeaseStatus, "")
}
func (a blobPropertiesAdapter) ArchiveStatus() blob.ArchiveStatus {
return common.IffNotNil(a.BlobProperties.ArchiveStatus, "")
}
func (a blobPropertiesAdapter) LastModified() time.Time {
return common.IffNotNil(a.BlobProperties.LastModified, time.Time{})
}
type shareFilePropertiesAdapter struct {
*sharefile.GetPropertiesResponse
}
func (a shareFilePropertiesAdapter) Metadata() common.Metadata {
return a.GetPropertiesResponse.Metadata
}
func (a shareFilePropertiesAdapter) LastModified() time.Time {
return common.IffNotNil(a.GetPropertiesResponse.LastModified, time.Time{})
}
func (a shareFilePropertiesAdapter) FileLastWriteTime() time.Time {
return common.IffNotNil(a.GetPropertiesResponse.FileLastWriteTime, time.Time{})
}
func (a shareFilePropertiesAdapter) CacheControl() string {
return common.IffNotNil(a.GetPropertiesResponse.CacheControl, "")
}
func (a shareFilePropertiesAdapter) ContentDisposition() string {
return common.IffNotNil(a.GetPropertiesResponse.ContentDisposition, "")
}
func (a shareFilePropertiesAdapter) ContentEncoding() string {
return common.IffNotNil(a.GetPropertiesResponse.ContentEncoding, "")
}
func (a shareFilePropertiesAdapter) ContentLanguage() string {
return common.IffNotNil(a.GetPropertiesResponse.ContentLanguage, "")
}
func (a shareFilePropertiesAdapter) ContentType() string {
return common.IffNotNil(a.GetPropertiesResponse.ContentType, "")
}
func (a shareFilePropertiesAdapter) ContentMD5() []byte {
return a.GetPropertiesResponse.ContentMD5
}
func (a shareFilePropertiesAdapter) ContentLength() int64 {
return common.IffNotNil(a.GetPropertiesResponse.ContentLength, 0)
}
type shareDirectoryPropertiesAdapter struct {
*sharedirectory.GetPropertiesResponse
}
func (a shareDirectoryPropertiesAdapter) Metadata() common.Metadata {
return a.GetPropertiesResponse.Metadata
}
func (a shareDirectoryPropertiesAdapter) LastModified() time.Time {
return common.IffNotNil(a.GetPropertiesResponse.LastModified, time.Time{})
}
func (a shareDirectoryPropertiesAdapter) FileLastWriteTime() time.Time {
return common.IffNotNil(a.GetPropertiesResponse.FileLastWriteTime, time.Time{})
}
func (a shareDirectoryPropertiesAdapter) CacheControl() string {
return ""
}
func (a shareDirectoryPropertiesAdapter) ContentDisposition() string {
return ""
}
func (a shareDirectoryPropertiesAdapter) ContentEncoding() string {
return ""
}
func (a shareDirectoryPropertiesAdapter) ContentLanguage() string {
return ""
}
func (a shareDirectoryPropertiesAdapter) ContentType() string {
return ""
}
func (a shareDirectoryPropertiesAdapter) ContentMD5() []byte {
return make([]byte, 0)
}
func (a shareDirectoryPropertiesAdapter) ContentLength() int64 {
return 0
}