qingstor

package module
v3.3.0 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2021 License: Apache-2.0 Imports: 25 Imported by: 1

README

Build Status Integration Tests License

go-services-qingstor

QingStor Object Storage service support for go-storage.

Install

go get github.com/beyondstorage/go-service-qingstor/v3

Usage

import (
	"log"

	_ "github.com/beyondstorage/go-service-qingstor/v3"
	"github.com/beyondstorage/go-storage/v4/services"
)

func main() {
	store, err := services.NewStoragerFromString("qingstor://bucket_name/path/to/workdir?credential=hmac:access_key_id:secret_access_key&endpoint=https:qingstor.com")
	if err != nil {
		log.Fatal(err)
	}
	
	// Write data from io.Reader into hello.txt
	n, err := store.Write("hello.txt", r, length)
}

Documentation

Overview

Package qingstor provided support for qingstor object storage (https://www.qingcloud.com/products/qingstor/)

Code generated by go generate via cmd/definitions; DO NOT EDIT.

Index

Examples

Constants

View Source
const (
	StorageClassStandard   = "STANDARD"
	StorageClassStandardIA = "STANDARD_IA"
)

All available storage classes are listed here.

View Source
const (
	SseCustomerAlgorithmAes256 = "AES256"
)

All available SSE customer algorithms are listed here.

View Source
const Type = "qingstor"

Type is the type for qingstor

Variables

View Source
var (
	// ErrBucketNameInvalid will be returned while bucket name is invalid.
	ErrBucketNameInvalid = services.NewErrorCode("invalid bucket name")

	// ErrWorkDirInvalid will be returned while work dir is invalid.
	// Work dir must start and end with only one '/'
	ErrWorkDirInvalid = services.NewErrorCode("invalid work dir")

	// ErrEncryptionCustomerKeyInvalid will be returned while encryption customer key is invalid.
	// Encryption key must be a 32-byte AES-256 key.
	ErrEncryptionCustomerKeyInvalid = services.NewErrorCode("invalid encryption customer key")

	// ErrAppendNextPositionEmpty will be returned while next append position is empty.
	ErrAppendNextPositionEmpty = services.NewErrorCode("next append position is empty")

	// ErrPartNumberInvalid will be returned while part number is out of range [0, 10000] when uploading multipart.
	ErrPartNumberInvalid = services.NewErrorCode("part number is out of range [0, 10000]")
)

Functions

func IsBucketNameValid

func IsBucketNameValid(s string) bool

IsBucketNameValid will check whether given string is a valid bucket name.

func New

func New(pairs ...typ.Pair) (typ.Servicer, typ.Storager, error)

New will create both Servicer and Storager.

Example
_, _, err := New(
	pairs.WithCredential(
		credential.NewHmac("test_access_key", "test_secret_key").String(),
	),
)
if err != nil {
	log.Printf("service init failed: %v", err)
}
Output:

func NewServicer

func NewServicer(pairs ...typ.Pair) (typ.Servicer, error)

NewServicer will create Servicer only.

func NewStorager

func NewStorager(pairs ...typ.Pair) (typ.Storager, error)

NewStorager will create Storager only.

func WithCopySourceEncryptionCustomerAlgorithm

func WithCopySourceEncryptionCustomerAlgorithm(v string) Pair

WithCopySourceEncryptionCustomerAlgorithm will apply copy_source_encryption_customer_algorithm value to Options.

CopySourceEncryptionCustomerAlgorithm is the encryption algorithm for the source object. Only AES256 is supported now.

func WithCopySourceEncryptionCustomerKey

func WithCopySourceEncryptionCustomerKey(v []byte) Pair

WithCopySourceEncryptionCustomerKey will apply copy_source_encryption_customer_key value to Options.

CopySourceEncryptionCustomerKey is the customer-provided encryption key for the source object. For AES256 keys, the plaintext must be 32 bytes long.

func WithDefaultServicePairs

func WithDefaultServicePairs(v DefaultServicePairs) Pair

WithDefaultServicePairs will apply default_service_pairs value to Options.

DefaultServicePairs set default pairs for service actions

func WithDefaultStoragePairs

func WithDefaultStoragePairs(v DefaultStoragePairs) Pair

WithDefaultStoragePairs will apply default_storage_pairs value to Options.

DefaultStoragePairs set default pairs for storager actions

func WithDisableURICleaning

func WithDisableURICleaning() Pair

WithDisableURICleaning will apply disable_uri_cleaning value to Options.

DisableURICleaning

func WithEnableVirtualDir added in v3.3.0

func WithEnableVirtualDir() Pair

WithEnableVirtualDir will apply enable_virtual_dir value to Options.

VirtualDir virtual_dir feature is designed for a service that doesn't have native dir support but wants to provide simulated operations.

- If this feature is disabled (the default behavior), the service will behave like it doesn't have any dir support. - If this feature is enabled, the service will support simulated dir behavior in create_dir, create, list, delete, and so on.

This feature was introduced in GSP-109.

func WithEnableVirtualLink() Pair

WithEnableVirtualLink will apply enable_virtual_link value to Options.

VirtualLink virtual_link feature is designed for a service that doesn't have native support for link.

- If this feature is enabled, the service will run compatible mode: create link via native methods, but allow read link from old-style link object. - If this feature is not enabled, the service will run in native as other service.

This feature was introduced in GSP-86.

func WithEncryptionCustomerAlgorithm

func WithEncryptionCustomerAlgorithm(v string) Pair

WithEncryptionCustomerAlgorithm will apply encryption_customer_algorithm value to Options.

EncryptionCustomerAlgorithm specifies the encryption algorithm. Only AES256 is supported now.

func WithEncryptionCustomerKey

func WithEncryptionCustomerKey(v []byte) Pair

WithEncryptionCustomerKey will apply encryption_customer_key value to Options.

EncryptionCustomerKey is the customer-provided encryption key. For AES256 keys, the plaintext must be 32 bytes long.

func WithServiceFeatures added in v3.1.0

func WithServiceFeatures(v ServiceFeatures) Pair

WithServiceFeatures will apply service_features value to Options.

ServiceFeatures set service features

func WithStorageClass

func WithStorageClass(v string) Pair

WithStorageClass will apply storage_class value to Options.

StorageClass

func WithStorageFeatures added in v3.1.0

func WithStorageFeatures(v StorageFeatures) Pair

WithStorageFeatures will apply storage_features value to Options.

StorageFeatures set storage features

Types

type DefaultServicePairs

type DefaultServicePairs struct {
	Create []Pair
	Delete []Pair
	Get    []Pair
	List   []Pair
}

DefaultServicePairs is default pairs for specific action

type DefaultStoragePairs

type DefaultStoragePairs struct {
	CommitAppend       []Pair
	CompleteMultipart  []Pair
	Copy               []Pair
	Create             []Pair
	CreateAppend       []Pair
	CreateDir          []Pair
	CreateLink         []Pair
	CreateMultipart    []Pair
	Delete             []Pair
	Fetch              []Pair
	List               []Pair
	ListMultipart      []Pair
	Metadata           []Pair
	Move               []Pair
	QuerySignHTTPRead  []Pair
	QuerySignHTTPWrite []Pair
	Reach              []Pair
	Read               []Pair
	Stat               []Pair
	Write              []Pair
	WriteAppend        []Pair
	WriteMultipart     []Pair
}

DefaultStoragePairs is default pairs for specific action

type ObjectSystemMetadata added in v3.1.0

type ObjectSystemMetadata struct {
	// EncryptionCustomerAlgorithm
	EncryptionCustomerAlgorithm string
	// StorageClass
	StorageClass string
}

ObjectSystemMetadata stores system metadata for object.

func GetObjectSystemMetadata added in v3.1.0

func GetObjectSystemMetadata(o *Object) ObjectSystemMetadata

GetObjectSystemMetadata will get ObjectSystemMetadata from Object.

- This function should not be called by service implementer. - The returning ObjectServiceMetadata is read only and should not be modified.

type Service

type Service struct {
	typ.UnimplementedServicer
	// contains filtered or unexported fields
}

Service is the qingstor service config.

func (*Service) Create

func (s *Service) Create(name string, pairs ...Pair) (store Storager, err error)

Create will create a new storager instance.

This function will create a context by default.

func (*Service) CreateWithContext

func (s *Service) CreateWithContext(ctx context.Context, name string, pairs ...Pair) (store Storager, err error)

CreateWithContext will create a new storager instance.

func (*Service) Delete

func (s *Service) Delete(name string, pairs ...Pair) (err error)

Delete will delete a storager instance.

This function will create a context by default.

func (*Service) DeleteWithContext

func (s *Service) DeleteWithContext(ctx context.Context, name string, pairs ...Pair) (err error)

DeleteWithContext will delete a storager instance.

func (*Service) Get

func (s *Service) Get(name string, pairs ...Pair) (store Storager, err error)

Get will get a valid storager instance for service.

This function will create a context by default.

Example
srv, _, err := New(
	pairs.WithCredential(
		credential.NewHmac("test_access_key", "test_secret_key").String(),
	),
)
if err != nil {
	log.Printf("service init failed: %v", err)
}

store, err := srv.Get("bucket_name", pairs.WithLocation("location"))
if err != nil {
	log.Printf("service get bucket failed: %v", err)
}
log.Printf("%v", store)
Output:

func (*Service) GetWithContext

func (s *Service) GetWithContext(ctx context.Context, name string, pairs ...Pair) (store Storager, err error)

GetWithContext will get a valid storager instance for service.

func (*Service) List

func (s *Service) List(pairs ...Pair) (sti *StoragerIterator, err error)

List will list all storager instances under this service.

This function will create a context by default.

func (*Service) ListWithContext

func (s *Service) ListWithContext(ctx context.Context, pairs ...Pair) (sti *StoragerIterator, err error)

ListWithContext will list all storager instances under this service.

func (*Service) String

func (s *Service) String() string

String implements Service.String.

type ServiceFeatures added in v3.1.0

type ServiceFeatures struct {
}

type Storage

Storage is the qingstor object storage client.

func (*Storage) CommitAppend

func (s *Storage) CommitAppend(o *Object, pairs ...Pair) (err error)

CommitAppend will commit and finish an append process.

This function will create a context by default.

func (*Storage) CommitAppendWithContext

func (s *Storage) CommitAppendWithContext(ctx context.Context, o *Object, pairs ...Pair) (err error)

CommitAppendWithContext will commit and finish an append process.

func (*Storage) CompleteMultipart

func (s *Storage) CompleteMultipart(o *Object, parts []*Part, pairs ...Pair) (err error)

CompleteMultipart will complete a multipart upload and construct an Object.

This function will create a context by default.

func (*Storage) CompleteMultipartWithContext

func (s *Storage) CompleteMultipartWithContext(ctx context.Context, o *Object, parts []*Part, pairs ...Pair) (err error)

CompleteMultipartWithContext will complete a multipart upload and construct an Object.

func (*Storage) Copy

func (s *Storage) Copy(src string, dst string, pairs ...Pair) (err error)

Copy will copy an Object or multiple object in the service.

## Behavior

- Copy only copy one and only one object.

  • Service DON'T NEED to support copy a non-empty directory or copy files recursively.
  • User NEED to implement copy a non-empty directory and copy recursively by themself.
  • Copy a file to a directory SHOULD return `ErrObjectModeInvalid`.

- Copy SHOULD NOT return an error as dst object exists.

  • Service that has native support for `overwrite` doesn't NEED to check the dst object exists or not.
  • Service that doesn't have native support for `overwrite` SHOULD check and delete the dst object if exists.

- A successful copy opration should be complete, which means the dst object's content and metadata should be the same as src object.

This function will create a context by default.

func (*Storage) CopyWithContext

func (s *Storage) CopyWithContext(ctx context.Context, src string, dst string, pairs ...Pair) (err error)

CopyWithContext will copy an Object or multiple object in the service.

## Behavior

- Copy only copy one and only one object.

  • Service DON'T NEED to support copy a non-empty directory or copy files recursively.
  • User NEED to implement copy a non-empty directory and copy recursively by themself.
  • Copy a file to a directory SHOULD return `ErrObjectModeInvalid`.

- Copy SHOULD NOT return an error as dst object exists.

  • Service that has native support for `overwrite` doesn't NEED to check the dst object exists or not.
  • Service that doesn't have native support for `overwrite` SHOULD check and delete the dst object if exists.

- A successful copy opration should be complete, which means the dst object's content and metadata should be the same as src object.

func (*Storage) Create

func (s *Storage) Create(path string, pairs ...Pair) (o *Object)

Create will create a new object without any api call.

## Behavior

- Create SHOULD NOT send any API call. - Create SHOULD accept ObjectMode pair as object mode.

This function will create a context by default.

func (*Storage) CreateAppend

func (s *Storage) CreateAppend(path string, pairs ...Pair) (o *Object, err error)

CreateAppend will create an append object.

## Behavior

- CreateAppend SHOULD create an appendable object with position 0 and size 0. - CreateAppend SHOULD NOT return an error as the object exist.

  • Service SHOULD check and delete the object if exists.

This function will create a context by default.

func (*Storage) CreateAppendWithContext

func (s *Storage) CreateAppendWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error)

CreateAppendWithContext will create an append object.

## Behavior

- CreateAppend SHOULD create an appendable object with position 0 and size 0. - CreateAppend SHOULD NOT return an error as the object exist.

  • Service SHOULD check and delete the object if exists.

func (*Storage) CreateDir added in v3.1.0

func (s *Storage) CreateDir(path string, pairs ...Pair) (o *Object, err error)

CreateDir will create a new dir object.

This function will create a context by default.

func (*Storage) CreateDirWithContext added in v3.1.0

func (s *Storage) CreateDirWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error)

CreateDirWithContext will create a new dir object.

func (s *Storage) CreateLink(path string, target string, pairs ...Pair) (o *Object, err error)

CreateLink Will create a link object.

Behavior

- `path` and `target` COULD be relative or absolute path. - If `target` not exists, CreateLink will still create a link object to path. - If `path` exists:

  • If `path` is a symlink object, CreateLink will remove the symlink object and create a new link object to path.
  • If `path` is not a symlink object, CreateLink will return an ErrObjectModeInvalid error when the service does not support overwrite.

- A link object COULD be returned in `Stat` or `List`. - CreateLink COULD implement virtual_link feature when service without native support.

  • Users SHOULD enable this feature by themselves.

This function will create a context by default.

func (*Storage) CreateLinkWithContext added in v3.3.0

func (s *Storage) CreateLinkWithContext(ctx context.Context, path string, target string, pairs ...Pair) (o *Object, err error)

CreateLinkWithContext Will create a link object.

Behavior

- `path` and `target` COULD be relative or absolute path. - If `target` not exists, CreateLink will still create a link object to path. - If `path` exists:

  • If `path` is a symlink object, CreateLink will remove the symlink object and create a new link object to path.
  • If `path` is not a symlink object, CreateLink will return an ErrObjectModeInvalid error when the service does not support overwrite.

- A link object COULD be returned in `Stat` or `List`. - CreateLink COULD implement virtual_link feature when service without native support.

  • Users SHOULD enable this feature by themselves.

func (*Storage) CreateMultipart

func (s *Storage) CreateMultipart(path string, pairs ...Pair) (o *Object, err error)

CreateMultipart will create a new multipart.

## Behavior

- CreateMultipart SHOULD NOT return an error as the object exists.

This function will create a context by default.

func (*Storage) CreateMultipartWithContext

func (s *Storage) CreateMultipartWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error)

CreateMultipartWithContext will create a new multipart.

## Behavior

- CreateMultipart SHOULD NOT return an error as the object exists.

func (*Storage) Delete

func (s *Storage) Delete(path string, pairs ...Pair) (err error)

Delete will delete an object from service.

## Behavior

- Delete only delete one and only one object.

  • Service DON'T NEED to support remove all.
  • User NEED to implement remove_all by themself.

- Delete is idempotent.

  • Successful delete always return nil error.
  • Delete SHOULD never return `ObjectNotExist`
  • Delete DON'T NEED to check the object exist or not.

This function will create a context by default.

func (*Storage) DeleteWithContext

func (s *Storage) DeleteWithContext(ctx context.Context, path string, pairs ...Pair) (err error)

DeleteWithContext will delete an object from service.

## Behavior

- Delete only delete one and only one object.

  • Service DON'T NEED to support remove all.
  • User NEED to implement remove_all by themself.

- Delete is idempotent.

  • Successful delete always return nil error.
  • Delete SHOULD never return `ObjectNotExist`
  • Delete DON'T NEED to check the object exist or not.

func (*Storage) Fetch

func (s *Storage) Fetch(path string, url string, pairs ...Pair) (err error)

Fetch will fetch from a given url to path.

## Behavior

- Fetch SHOULD NOT return an error as the object exists. - A successful fetch operation should be complete, which means the object's content and metadata should be the same as requiring from the url.

This function will create a context by default.

func (*Storage) FetchWithContext

func (s *Storage) FetchWithContext(ctx context.Context, path string, url string, pairs ...Pair) (err error)

FetchWithContext will fetch from a given url to path.

## Behavior

- Fetch SHOULD NOT return an error as the object exists. - A successful fetch operation should be complete, which means the object's content and metadata should be the same as requiring from the url.

func (*Storage) List

func (s *Storage) List(path string, pairs ...Pair) (oi *ObjectIterator, err error)

List will return list a specific path.

## Behavior

- Service SHOULD support default `ListMode`. - Service SHOULD implement `ListModeDir` without the check for `VirtualDir`. - Service DON'T NEED to `Stat` while in `List`.

This function will create a context by default.

func (*Storage) ListMultipart

func (s *Storage) ListMultipart(o *Object, pairs ...Pair) (pi *PartIterator, err error)

ListMultipart will list parts belong to this multipart.

This function will create a context by default.

func (*Storage) ListMultipartWithContext

func (s *Storage) ListMultipartWithContext(ctx context.Context, o *Object, pairs ...Pair) (pi *PartIterator, err error)

ListMultipartWithContext will list parts belong to this multipart.

func (*Storage) ListWithContext

func (s *Storage) ListWithContext(ctx context.Context, path string, pairs ...Pair) (oi *ObjectIterator, err error)

ListWithContext will return list a specific path.

## Behavior

- Service SHOULD support default `ListMode`. - Service SHOULD implement `ListModeDir` without the check for `VirtualDir`. - Service DON'T NEED to `Stat` while in `List`.

func (*Storage) Metadata

func (s *Storage) Metadata(pairs ...Pair) (meta *StorageMeta)

Metadata will return current storager metadata.

This function will create a context by default.

func (*Storage) Move

func (s *Storage) Move(src string, dst string, pairs ...Pair) (err error)

Move will move an object in the service.

## Behavior

- Move only move one and only one object.

  • Service DON'T NEED to support move a non-empty directory.
  • User NEED to implement move a non-empty directory by themself.
  • Move a file to a directory SHOULD return `ErrObjectModeInvalid`.

- Move SHOULD NOT return an error as dst object exists.

  • Service that has native support for `overwrite` doesn't NEED to check the dst object exists or not.
  • Service that doesn't have native support for `overwrite` SHOULD check and delete the dst object if exists.

- A successful move operation SHOULD be complete, which means the dst object's content and metadata should be the same as src object.

This function will create a context by default.

func (*Storage) MoveWithContext

func (s *Storage) MoveWithContext(ctx context.Context, src string, dst string, pairs ...Pair) (err error)

MoveWithContext will move an object in the service.

## Behavior

- Move only move one and only one object.

  • Service DON'T NEED to support move a non-empty directory.
  • User NEED to implement move a non-empty directory by themself.
  • Move a file to a directory SHOULD return `ErrObjectModeInvalid`.

- Move SHOULD NOT return an error as dst object exists.

  • Service that has native support for `overwrite` doesn't NEED to check the dst object exists or not.
  • Service that doesn't have native support for `overwrite` SHOULD check and delete the dst object if exists.

- A successful move operation SHOULD be complete, which means the dst object's content and metadata should be the same as src object.

func (*Storage) QuerySignHTTPRead added in v3.3.0

func (s *Storage) QuerySignHTTPRead(path string, expire time.Duration, pairs ...Pair) (req *http.Request, err error)

QuerySignHTTPRead will read data from the file by using query parameters to authenticate requests.

This function will create a context by default.

func (*Storage) QuerySignHTTPReadWithContext added in v3.3.0

func (s *Storage) QuerySignHTTPReadWithContext(ctx context.Context, path string, expire time.Duration, pairs ...Pair) (req *http.Request, err error)

QuerySignHTTPReadWithContext will read data from the file by using query parameters to authenticate requests.

func (*Storage) QuerySignHTTPWrite added in v3.3.0

func (s *Storage) QuerySignHTTPWrite(path string, size int64, expire time.Duration, pairs ...Pair) (req *http.Request, err error)

QuerySignHTTPWrite will write data into a file by using query parameters to authenticate requests.

This function will create a context by default.

func (*Storage) QuerySignHTTPWriteWithContext added in v3.3.0

func (s *Storage) QuerySignHTTPWriteWithContext(ctx context.Context, path string, size int64, expire time.Duration, pairs ...Pair) (req *http.Request, err error)

QuerySignHTTPWriteWithContext will write data into a file by using query parameters to authenticate requests.

func (*Storage) Reach deprecated

func (s *Storage) Reach(path string, pairs ...Pair) (url string, err error)

Reach will provide a way, which can reach the object.

Deprecated: Use QuerySignHTTPRead instead.

This function will create a context by default.

func (*Storage) ReachWithContext deprecated

func (s *Storage) ReachWithContext(ctx context.Context, path string, pairs ...Pair) (url string, err error)

ReachWithContext will provide a way, which can reach the object.

Deprecated: Use QuerySignHTTPRead instead.

func (*Storage) Read

func (s *Storage) Read(path string, w io.Writer, pairs ...Pair) (n int64, err error)

Read will read the file's data.

This function will create a context by default.

func (*Storage) ReadWithContext

func (s *Storage) ReadWithContext(ctx context.Context, path string, w io.Writer, pairs ...Pair) (n int64, err error)

ReadWithContext will read the file's data.

func (*Storage) Stat

func (s *Storage) Stat(path string, pairs ...Pair) (o *Object, err error)

Stat will stat a path to get info of an object.

## Behavior

- Stat SHOULD accept ObjectMode pair as hints.

  • Service COULD have different implementations for different object mode.
  • Service SHOULD check if returning ObjectMode is match

This function will create a context by default.

func (*Storage) StatWithContext

func (s *Storage) StatWithContext(ctx context.Context, path string, pairs ...Pair) (o *Object, err error)

StatWithContext will stat a path to get info of an object.

## Behavior

- Stat SHOULD accept ObjectMode pair as hints.

  • Service COULD have different implementations for different object mode.
  • Service SHOULD check if returning ObjectMode is match

func (*Storage) String

func (s *Storage) String() string

String implements Storager.String

func (*Storage) Write

func (s *Storage) Write(path string, r io.Reader, size int64, pairs ...Pair) (n int64, err error)

Write will write data into a file.

## Behavior

- Write SHOULD NOT return an error as the object exist.

  • Service that has native support for `overwrite` doesn't NEED to check the object exists or not.
  • Service that doesn't have native support for `overwrite` SHOULD check and delete the object if exists.

- A successful write operation SHOULD be complete, which means the object's content and metadata should be the same as specified in write request.

This function will create a context by default.

func (*Storage) WriteAppend

func (s *Storage) WriteAppend(o *Object, r io.Reader, size int64, pairs ...Pair) (n int64, err error)

WriteAppend will append content to an append object.

This function will create a context by default.

func (*Storage) WriteAppendWithContext

func (s *Storage) WriteAppendWithContext(ctx context.Context, o *Object, r io.Reader, size int64, pairs ...Pair) (n int64, err error)

WriteAppendWithContext will append content to an append object.

func (*Storage) WriteMultipart

func (s *Storage) WriteMultipart(o *Object, r io.Reader, size int64, index int, pairs ...Pair) (n int64, part *Part, err error)

WriteMultipart will write content to a multipart.

This function will create a context by default.

func (*Storage) WriteMultipartWithContext

func (s *Storage) WriteMultipartWithContext(ctx context.Context, o *Object, r io.Reader, size int64, index int, pairs ...Pair) (n int64, part *Part, err error)

WriteMultipartWithContext will write content to a multipart.

func (*Storage) WriteWithContext

func (s *Storage) WriteWithContext(ctx context.Context, path string, r io.Reader, size int64, pairs ...Pair) (n int64, err error)

WriteWithContext will write data into a file.

## Behavior

- Write SHOULD NOT return an error as the object exist.

  • Service that has native support for `overwrite` doesn't NEED to check the object exists or not.
  • Service that doesn't have native support for `overwrite` SHOULD check and delete the object if exists.

- A successful write operation SHOULD be complete, which means the object's content and metadata should be the same as specified in write request.

type StorageFeatures added in v3.1.0

type StorageFeatures struct {
	// VirtualDir virtual_dir feature is designed for a service that doesn't have native dir support but wants to provide simulated operations.
	//
	// - If this feature is disabled (the default behavior), the service will behave like it doesn't have any dir support.
	// - If this feature is enabled, the service will support simulated dir behavior in create_dir, create, list, delete, and so on.
	//
	// This feature was introduced in GSP-109.
	VirtualDir bool
	// VirtualLink virtual_link feature is designed for a service that doesn't have native support for link.
	//
	// - If this feature is enabled, the service will run compatible mode: create link via native methods, but allow read link from old-style link object.
	// - If this feature is not enabled, the service will run in native as other service.
	//
	// This feature was introduced in GSP-86.
	VirtualLink bool
}

type StorageSystemMetadata added in v3.1.0

type StorageSystemMetadata struct {
}

StorageSystemMetadata stores system metadata for storage meta.

func GetStorageSystemMetadata added in v3.1.0

func GetStorageSystemMetadata(s *StorageMeta) StorageSystemMetadata

GetStorageSystemMetadata will get SystemMetadata from StorageMeta.

- The returning StorageSystemMetadata is read only and should not be modified.

Jump to

Keyboard shortcuts

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