utils

package
v1.7.0 Latest Latest
Warning

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

Go to latest
Published: Jul 15, 2026 License: Apache-2.0 Imports: 46 Imported by: 0

Documentation

Overview

code modified from golang std library src/internal/filepathlite/path.go to support path separator '/' for all platforms.

Index

Constants

View Source
const (
	HeaderAmzRequestID = "x-amz-request-id"
	HeaderAmzID2       = "x-amz-id-2"
)
View Source
const (
	// Standard S3 limiters
	LimiterTypeMaxKeys          = "max-keys"           // ListObjects, ListObjectVersions
	LimiterTypeMaxParts         = "max-parts"          // ListParts
	LimiterTypeMaxUploads       = "max-uploads"        // ListMultipartUploads
	LimiterTypePartNumberMarker = "part-number-marker" // ListParts(partNumberMarker)
	LimiterTypeVersionsMaxKeys  = "versions_max_keys"  // ListObjectVersions (internal alias mapped to max-keys)
	LimiterTypeMaxBuckets       = "max-buckets"        // ListBuckets
)

Variables

This section is empty.

Functions

func AbsSocketPaths added in v1.4.0

func AbsSocketPaths(addrs []string) ([]string, error)

AbsSocketPaths converts any relative UNIX socket paths in addrs to absolute paths using the current working directory. Non-socket addresses (TCP/IP) and abstract sockets ("@name") are returned unchanged. This should be called early in program startup — before any backend that calls os.Chdir — so that relative paths are resolved against the shell's working directory.

func AddCRCChecksum added in v1.0.15

func AddCRCChecksum(algo types.ChecksumAlgorithm, crc, partCrc string, partLen int64) (string, error)

AddCRCChecksum calculates the composite CRC checksum after adding the part crc. Only CRC32, CRC32C, and CRC64NVME are supported. The input checksums must be base64-encoded strings.

func ApplyOverride added in v1.0.18

func ApplyOverride(original, override *string) *string

ApplyOverride returns the override value if it exists and status is 200, otherwise returns original

func Base64SumString added in v1.0.11

func Base64SumString(b []byte) string

Base64SumString converts the hash bytes to the b64 encoded string checksum value

func CheckPresignedSignature

func CheckPresignedSignature(ctx fiber.Ctx, auth AuthData, secret string) error

CheckPresignedSignature validates presigned request signature

func CheckValidSignature

func CheckValidSignature(ctx fiber.Ctx, auth AuthData, secret, checksum string, tdate time.Time, contentLen int64) (string, error)

CheckValidSignature validates the ctx v4 auth signature

func ConvertPtrToStringPtr added in v1.0.17

func ConvertPtrToStringPtr[T any](val *T) *string

Converts any pointer to a string pointer

func ConvertTaggingXMLToQueryString added in v1.4.0

func ConvertTaggingXMLToQueryString(data []byte) (string, error)

ConvertTaggingXMLToQueryString parses object tagging XML and converts it into the x-amz-tagging query-string form expected by PutObject requests.

func ConvertToStringPtr added in v1.0.17

func ConvertToStringPtr[T any](val T) *string

Converts any type to a string pointer

func DetectResourceType added in v1.5.0

func DetectResourceType(ctx fiber.Ctx) s3err.ResourceType

func EnsureRequestIDs added in v1.5.0

func EnsureRequestIDs(ctx fiber.Ctx) (requestID, hostID string)

EnsureRequestIDs makes sure the request-local IDs exist and are present in the response headers. Existing local values are reused so headers and XML bodies stay consistent throughout the request.

func ExtractChecksumType added in v1.0.15

func ExtractChecksumType(ctx fiber.Ctx) (checksumType, error)

Extracts and validates the checksum type from the 'X-Amz-Trailer' header

func ExtractMetadataFromFields added in v1.4.0

func ExtractMetadataFromFields(fields map[string]string) (map[string]string, error)

func FormatDatePtrToString added in v1.0.17

func FormatDatePtrToString(date *time.Time, format string) *string

Formats the date with the given formatting and returns a string pointer

func FromSlash added in v1.0.15

func FromSlash(path string) string

func GenerateObjectLocation added in v1.1.0

func GenerateObjectLocation(ctx fiber.Ctx, virtualDomain, bucket, object string) string

GenerateObjectLocation generates the object location path-styled or host-styled depending on the gateway configuration

func GetInt64 added in v1.0.17

func GetInt64(n *int64) int64

GetInt64 returns the value of int64 pointer

func GetQueryParam added in v1.0.18

func GetQueryParam(ctx fiber.Ctx, key string) *string

GetQueryParam returns a pointer to the query parameter value if it exists

func GetStringPtr added in v1.0.17

func GetStringPtr(str string) *string

Returns the provided string pointer

func GetUserMetaData

func GetUserMetaData(headers *fasthttp.RequestHeader) (map[string]string, error)

GetUserMetaData extracts user metadata from headers with the "x-amz-meta-" prefix. Keys are normalized to lowercase and duplicate headers are merged as comma-separated values. The total metadata size is validated against the 2 KB S3 limit.

func HexBytes added in v1.5.0

func HexBytes(s string) string

func HostID added in v1.5.0

func HostID(ctx fiber.Ctx) string

func IsAnonymousPayloadHashSupported added in v1.0.19

func IsAnonymousPayloadHashSupported(hash string) error

IsAnonymousPayloadHashSupported returns error if payload hash is streaming signed. e.g. "STREAMING-AWS4-HMAC-SHA256-PAYLOAD", "STREAMING-AWS4-ECDSA-P256-SHA256-PAYLOAD" ...

func IsChecksumAlgorithmValid added in v1.0.11

func IsChecksumAlgorithmValid(alg types.ChecksumAlgorithm) error

func IsChecksumComposable added in v1.0.15

func IsChecksumComposable(algo types.ChecksumAlgorithm) bool

IsChecksumComposable tests if the final full-object crc can be calculated from the part crc values.

func IsChecksumTypeValid added in v1.0.11

func IsChecksumTypeValid(t types.ChecksumType) error

Validates the provided checksum type

func IsObjectNameValid added in v1.0.15

func IsObjectNameValid(name string) bool

func IsPresignedURLAuth added in v1.0.19

func IsPresignedURLAuth(ctx fiber.Ctx) bool

IsPresignedURLAuth determines if the request is presigned: which is authorization with query params

func IsPresignedURLAuthV2 added in v1.5.0

func IsPresignedURLAuthV2(ctx fiber.Ctx) bool

IsPresignedURLAuthV2 determines if the request is query-string signed with aws v2 signer

func IsSpecialPayload

func IsSpecialPayload(str string) bool

IsSpecialPayload checks for special authorization types

func IsStreamingPayload added in v1.0.11

func IsStreamingPayload(str string) bool

IsStreamingPayload checks for streaming/unsigned authorization types

func IsUnixSocketPath added in v1.4.0

func IsUnixSocketPath(addr string) bool

IsUnixSocketPath reports whether addr should be treated as a UNIX domain socket path rather than a TCP/IP address. It does so by attempting to parse addr as a host:port spec using net.SplitHostPort; anything that cannot be parsed that way (e.g. "/path/to/socket", "./rel/socket", "@abstract") is considered a socket path.

func IsUnsignedPaylod added in v1.0.19

func IsUnsignedPaylod(hash string) bool

IsUnsignedPaylod checks if the provided payload hash type is "UNSIGNED-PAYLOAD"

func IsUnsignedStreamingPayload added in v1.0.15

func IsUnsignedStreamingPayload(str string) bool

Checks if the provided string is unsigned payload trailer type

func IsValidBucketName

func IsValidBucketName(bucket string) bool

func IsValidChecksum added in v1.0.11

func IsValidChecksum(checksum string, algorithm types.ChecksumAlgorithm) bool

func IsValidOwnership added in v1.0.3

func IsValidOwnership(val types.ObjectOwnership) bool

func IsValidSha256PayloadHeader added in v1.5.0

func IsValidSha256PayloadHeader(value string) bool

IsValidSha256PayloadHeader checks if the provided x-amz-content-sha256 payload header is valid special payload type or a valid sh256 hash

func NewChunkReader

func NewChunkReader(ctx fiber.Ctx, r io.Reader, authdata AuthData, canonicalString, secret string, date time.Time) (io.Reader, error)

func NewMultiAddrListener added in v1.3.0

func NewMultiAddrListener(network, address string, opts ListenerOptions) (net.Listener, error)

NewMultiAddrListener creates listeners for all IP addresses that the hostname in the address resolves to. If the address is already an IP, it creates a single listener. Returns a MultiListener if multiple addresses are resolved, or a single listener if only one address is found.

UNIX domain socket forms are also supported:

  • "/path/to/socket" or "./rel/socket" — file-backed socket; any stale socket file is removed before binding.
  • "@name" — Linux abstract namespace socket; no file is created or removed.

opts.SocketPerm, when non-zero, sets the file-mode permissions on file-backed sockets after binding. It is ignored for TCP/IP addresses and abstract sockets.

func NewMultiAddrTLSListener added in v1.3.0

func NewMultiAddrTLSListener(network, address string, getCertificateFunc func(*tls.ClientHelloInfo) (*tls.Certificate, error), opts ListenerOptions) (net.Listener, error)

NewMultiAddrTLSListener creates TLS listeners for all IP addresses that the hostname in the address resolves to. Similar to NewMultiAddrListener but with TLS.

UNIX domain socket forms are also supported:

  • "/path/to/socket" or "./rel/socket" — file-backed socket; any stale socket file is removed before binding.
  • "@name" — Linux abstract namespace socket; no file is created or removed.

opts.SocketPerm, when non-zero, sets the file-mode permissions on file-backed sockets after binding. It is ignored for TCP/IP addresses and abstract sockets.

func NewS3HostID added in v1.5.0

func NewS3HostID() string

NewS3HostID generates a new s3-style host ID

func NewS3RequestID added in v1.5.0

func NewS3RequestID() string

NewS3RequestID returns a request ID, for example "5MRQJ97RHWJ4FMX9".

func NewSignedChunkReader added in v1.0.10

func NewSignedChunkReader(r io.Reader, authdata AuthData, canonicalString, secret string, date time.Time, chType checksumType, requireTrailer bool, cLength int64) (io.Reader, error)

NewChunkReader reads from request body io.Reader and parses out the chunk metadata in stream. The headers are validated for proper signatures. Reading from the chunk reader will read only the object data stream without the chunk headers/trailers.

func NewTLSListener added in v1.2.0

func NewTLSListener(network string, address string, getCertificateFunc func(*tls.ClientHelloInfo) (*tls.Certificate, error)) (net.Listener, error)

func ParsObjectLockHdrs

func ParsObjectLockHdrs(ctx fiber.Ctx) (*objLockCfg, error)

func ParseCreateMpChecksumHeaders added in v1.0.11

func ParseCreateMpChecksumHeaders(ctx fiber.Ctx) (types.ChecksumAlgorithm, types.ChecksumType, error)

Parses and validates the x-amz-checksum-algorithm and x-amz-checksum-type headers

func ParseDecodedContentLength added in v1.0.20

func ParseDecodedContentLength(ctx fiber.Ctx) (int64, error)

ParseDecodedContentLength extracts and validates the 'x-amz-decoded-content-length' from fiber context

func ParseDeleteObjects

func ParseDeleteObjects(objs []types.ObjectIdentifier) (result []string)

func ParseIfMatchSize added in v1.0.18

func ParseIfMatchSize(ctx fiber.Ctx) *int64

ParseIfMatchSize parses the 'x-amz-if-match-size' to *int64 if parsing fails, returns nil

func ParseMaxLimiter added in v1.2.0

func ParseMaxLimiter(limiter string, lt LimiterType) (int32, error)

ParseMaxLimiter parses and validates the pagination limiter

  • Empty value → return default depending on limiter type.
  • Non-numeric or out-of-range → return the corresponding InvalidArgument error.
  • Negative values → return specific negative-value errors per limiter type.
  • Values above defaultMaxLimiter are clamped.
  • The versions_max_keys limiter is normalized to max-keys for validation.

func ParseObjectAttributes

func ParseObjectAttributes(ctx fiber.Ctx) (map[s3response.ObjectAttributes]struct{}, error)

func ParsePreconditionDateHeader added in v1.0.18

func ParsePreconditionDateHeader(date string) *time.Time

ParsePreconditionDateHeader tries to parse the given date string as - RFC1123 - RFC3339 both are valid

func ParsePreconditionDateHeaders added in v1.0.18

func ParsePreconditionDateHeaders(ctx fiber.Ctx, opts ...preconditionOpt) (*time.Time, *time.Time)

ParsePreconditionDateHeaders parses the "If-Modified-Since" and "If-Unmodified-Since" headers from fiber context to *time.Time

func ParsePreconditionMatchHeaders added in v1.0.18

func ParsePreconditionMatchHeaders(ctx fiber.Ctx, opts ...preconditionOpt) (*string, *string)

ParsePreconditionMatchHeaders extracts "If-Match" and "If-None-Match" headers from fiber Ctx

func ParseTagging added in v1.0.13

func ParseTagging(data []byte, limit TagLimit) (map[string]string, error)

Parses and validates tagging

func RequestID added in v1.5.0

func RequestID(ctx fiber.Ctx) string

func ResolveHostnameIPs added in v1.3.0

func ResolveHostnameIPs(address string) ([]string, error)

ResolveHostnameIPs resolves a hostname to all its IP addresses (IPv4 and IPv6). If the input is already an IP address or empty, it returns it as-is. This is useful for determining all addresses a server will listen on.

func SetBucketNameValidationStrict added in v1.0.19

func SetBucketNameValidationStrict(strict bool)

func SetMetaHeaders

func SetMetaHeaders(ctx fiber.Ctx, meta map[string]string)

func SetResponseHeaders

func SetResponseHeaders(ctx fiber.Ctx, headers []CustomHeader)

func SignPostPolicy added in v1.4.0

func SignPostPolicy(base64Policy, yyyymmdd, region, secretKey string) (string, error)

func StreamResponseBody added in v1.0.10

func StreamResponseBody(ctx fiber.Ctx, rdr io.ReadCloser, bodysize int)

Streams the response body by chunks

func TrimQuotes added in v1.3.0

func TrimQuotes(str string) string

func ValidateCopySource added in v1.0.17

func ValidateCopySource(input string) error

ValidateCopySource parses and validates the copy-source

func ValidateDate

func ValidateDate(date time.Time) error

func ValidateWebsiteRedirectLocation added in v1.6.0

func ValidateWebsiteRedirectLocation(location string) error

func WithCopySource added in v1.0.18

func WithCopySource() preconditionOpt

Types

type AuthData

type AuthData struct {
	Algorithm     string
	Access        string
	Region        string
	SignedHeaders string
	Signature     string
	Date          string
}

AuthData is the parsed authorization data from the header

func ParseAuthorization

func ParseAuthorization(authorization string) (AuthData, error)

ParseAuthorization returns the parsed fields for the aws v4 auth header example authorization string from aws docs: Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

func ParsePresignedURIParts

func ParsePresignedURIParts(ctx fiber.Ctx, region string) (AuthData, error)

https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

ParsePresignedURIParts parses and validates request URL query parameters

?X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=access-key-id/20130721/us-east-1/s3/aws4_request &X-Amz-Date=20130721T201207Z &X-Amz-Expires=86400 &X-Amz-SignedHeaders=host &X-Amz-Signature=1e68ad45c1db540284a4a1eca3884c293ba1a0ff63ab9db9a15b5b29dfa02cd8

type CertStorage added in v1.2.0

type CertStorage struct {
	// contains filtered or unexported fields
}

func NewCertStorage added in v1.2.0

func NewCertStorage() *CertStorage

func (*CertStorage) GetCertificate added in v1.2.0

func (cs *CertStorage) GetCertificate(_ *tls.ClientHelloInfo) (*tls.Certificate, error)

func (*CertStorage) SetCertificate added in v1.2.0

func (cs *CertStorage) SetCertificate(certFile string, keyFile string) error

type ChecksumValues added in v1.0.13

type ChecksumValues map[types.ChecksumAlgorithm]string

func ParseCalculatedChecksumFields added in v1.4.0

func ParseCalculatedChecksumFields(fields map[string]string) (ChecksumValues, error)

ParseCalculatedChecksumFields parses and validates object POST checksum fields

func ParseCalculatedChecksumHeaders added in v1.0.17

func ParseCalculatedChecksumHeaders(ctx fiber.Ctx) (ChecksumValues, error)

ParseCalculatedChecksumHeaders parses and validates x-amz-checksum-x header keys e.g x-amz-checksum-crc32, x-amz-checksum-sha256 ...

func ParseChecksumHeadersAndSdkAlgo added in v1.0.17

func ParseChecksumHeadersAndSdkAlgo(ctx fiber.Ctx) (types.ChecksumAlgorithm, ChecksumValues, error)

ParseChecksumHeadersAndSdkAlgo parses/validates 'x-amz-sdk-checksum-algorithm' and 'x-amz-checksum-x' precalculated request headers

func ParseCompleteMpChecksumHeaders added in v1.0.19

func ParseCompleteMpChecksumHeaders(ctx fiber.Ctx) (ChecksumValues, error)

ParseCompleteMpChecksumHeaders parses and validates the 'CompleteMultipartUpload' x-amz-checksum-x headers by supporting both 'checksum' and 'checksum-<part_length>' formats

func (ChecksumValues) Headers added in v1.0.13

func (cv ChecksumValues) Headers() string

Headers concatinates checksum algorithm by prefixing each with 'x-amz-checksum-' e.g. "x-amz-checksum-crc64nvme, x-amz-checksum-sha1"

type ChunkReader

type ChunkReader struct {
	// contains filtered or unexported fields
}

ChunkReader reads from chunked upload request body, and returns object data stream

func (*ChunkReader) Algorithm added in v1.1.0

func (cr *ChunkReader) Algorithm() string

Algorithm returns the checksum algorithm

func (*ChunkReader) Checksum added in v1.1.0

func (cr *ChunkReader) Checksum() string

Checksum returns the parsed trailing checksum

func (*ChunkReader) Read

func (cr *ChunkReader) Read(p []byte) (int, error)

Read satisfies the io.Reader for this type

type CompositeChecksumReader added in v1.0.11

type CompositeChecksumReader struct {
	// contains filtered or unexported fields
}

func NewCompositeChecksumReader added in v1.0.11

func NewCompositeChecksumReader(ht HashType) (*CompositeChecksumReader, error)

NewCompositeChecksumReader initializes a composite checksum processor, which decodes and validates the provided checksums and returns the final checksum based on the previous processings.

The supported checksum types are: - CRC32 - CRC32C - SHA1 - SHA256 - SHA512 - MD5 - XXHASH64 - XXHASH3 - XXHASH128

func (*CompositeChecksumReader) Process added in v1.0.11

func (ccr *CompositeChecksumReader) Process(checksum string) error

Decodes and writes the checksum in the hasher

func (*CompositeChecksumReader) Sum added in v1.0.11

func (ccr *CompositeChecksumReader) Sum() string

Returns the base64 encoded composite checksum

type ConditionalHeaders added in v1.0.18

type ConditionalHeaders struct {
	IfMatch       *string
	IfNoneMatch   *string
	IfModSince    *time.Time
	IfUnmodeSince *time.Time
}

ConditionalHeaders holds the conditional header values

func ParsePreconditionHeaders added in v1.0.18

func ParsePreconditionHeaders(ctx fiber.Ctx, opts ...preconditionOpt) ConditionalHeaders

ParsePreconditionHeaders parses the precondition headers: - If-Match - If-None-Match - If-Modified-Since - If-Unmodified-Since

type ContextKey added in v1.0.15

type ContextKey string

Region, StartTime, IsRoot, Account, AccessKey context locals are set to default values in middlewares.SetDefaultValues to avoid the nil interface conversions

const (
	ContextKeyRegion           ContextKey = "region"
	ContextKeyStartTime        ContextKey = "start-time"
	ContextKeyIsRoot           ContextKey = "is-root"
	ContextKeyRootAccessKey    ContextKey = "root-access-key"
	ContextKeyAccount          ContextKey = "account"
	ContextKeyAuthenticated    ContextKey = "authenticated"
	ContextKeyPublicBucket     ContextKey = "public-bucket"
	ContextKeyParsedAcl        ContextKey = "parsed-acl"
	ContextKeySkipResBodyLog   ContextKey = "skip-res-body-log"
	ContextKeyBodyReader       ContextKey = "body-reader"
	ContextKeySkip             ContextKey = "__skip"
	ContextKeyStack            ContextKey = "stack"
	ContextKeyBucketOwner      ContextKey = "bucket-owner"
	ContextKeyObjectPostResult ContextKey = "object-post-result"
	ContextKeyRequestID        ContextKey = "request-id"
	ContextKeyHostID           ContextKey = "host-id"
	ContextKeyWebsiteConfig    ContextKey = "website-config"
)

func (ContextKey) Delete added in v1.0.17

func (ck ContextKey) Delete(ctx fiber.Ctx)

func (ContextKey) Get added in v1.0.15

func (ck ContextKey) Get(ctx fiber.Ctx) any

func (ContextKey) IsSet added in v1.0.15

func (ck ContextKey) IsSet(ctx fiber.Ctx) bool

func (ContextKey) Set added in v1.0.15

func (ck ContextKey) Set(ctx fiber.Ctx, val any)

type CredentialsScope added in v1.4.0

type CredentialsScope struct {
	Access string
	Date   string
	Region string
}

func ParseCredentials added in v1.4.0

func ParseCredentials(input string, errHandler CredsError) (*CredentialsScope, error)

type CredsError added in v1.4.0

type CredsError interface {
	MalformedCredential(string) s3err.S3Error
	IncorrectService(string, string) s3err.S3Error
	IncorrectTerminal(string, string) s3err.S3Error
	InvalidDateFormat(string, string) s3err.S3Error
}

type CustomHeader

type CustomHeader struct {
	Key   string
	Value string
}

type HashReader

type HashReader struct {
	// contains filtered or unexported fields
}

HashReader is an io.Reader that calculates the checksum as the data is read

func NewHashReader

func NewHashReader(r io.Reader, expectedSum string, ht HashType) (*HashReader, error)

NewHashReader intializes an io.Reader from an underlying io.Reader that calculates the checksum while the reader is being read from. If the sum provided is not "", the reader will return an error when the underlying reader returns io.EOF if the checksum does not match the provided expected checksum. If the provided sum is "", then the Sum() method can still be used to get the current checksum for the data read so far.

func (*HashReader) Read

func (hr *HashReader) Read(p []byte) (int, error)

Read allows *HashReader to be used as an io.Reader

func (*HashReader) SetReader added in v1.0.11

func (hr *HashReader) SetReader(r io.Reader)

func (*HashReader) Sum

func (hr *HashReader) Sum() string

Sum returns the checksum hash of the data read so far

func (*HashReader) Type added in v1.0.11

func (hr *HashReader) Type() HashType

type HashType

type HashType string

HashType identifies the checksum algorithm to be used

const (
	// HashTypeContentMD5 generates MD5 checksum for the Content-MD5 header.
	HashTypeContentMD5 HashType = "content-md5"
	// HashTypeMd5 generates MD5 Base64-Encoded checksum for the data stream
	HashTypeMd5 HashType = "md5"
	// HashTypeSha256 generates SHA256 Base64-Encoded checksum for the data stream
	HashTypeSha256 HashType = "sha256"
	// HashTypeSha256Hex generates SHA256 hex encoded checksum for the data stream
	HashTypeSha256Hex HashType = "sha256-hex"
	// HashTypeSha1 generates SHA1 Base64-Encoded checksum for the data stream
	HashTypeSha1 HashType = "sha1"
	// HashTypeSha512 generates SHA512 Base64-Encoded checksum for the data stream
	HashTypeSha512 HashType = "sha512"
	// HashTypeCRC32 generates CRC32 Base64-Encoded checksum for the data stream
	HashTypeCRC32 HashType = "crc32"
	// HashTypeCRC32C generates CRC32C Base64-Encoded checksum for the data stream
	HashTypeCRC32C HashType = "crc32c"
	// HashTypeCRC64NVME generates CRC64NVME Base64-Encoded checksum for the data stream
	HashTypeCRC64NVME HashType = "crc64nvme"
	// HashTypeXXHASH64 generates XXHASH64 Base64-Encoded checksum for the data stream
	HashTypeXXHASH64 HashType = "xxhash64"
	// HashTypeXXHASH3 generates XXHASH3 Base64-Encoded checksum for the data stream
	HashTypeXXHASH3 HashType = "xxhash3"
	// HashTypeXXHASH128 generates XXHASH128 Base64-Encoded checksum for the data stream
	HashTypeXXHASH128 HashType = "xxhash128"
	// HashTypeNone is a no-op checksum for the data stream
	HashTypeNone HashType = "none"
)

type LimiterType added in v1.2.0

type LimiterType string

LimiterType represents the name of a pagination limiter parameter.

type ListenerOptions added in v1.4.1

type ListenerOptions struct {
	// SocketPerm, when non-zero, sets the file-mode permissions on file-backed
	// UNIX sockets after binding. It is ignored for TCP/IP addresses and
	// abstract namespace sockets.
	SocketPerm os.FileMode
}

ListenerOptions configures optional behaviour for NewMultiAddrListener and NewMultiAddrTLSListener.

type MpFileReader added in v1.4.0

type MpFileReader interface {
	io.Reader
	Length() int64
}

MpFileReader is the streaming interface for the file part of a multipart POST. It extends io.Reader with a Length method that returns the number of file-content bytes actually delivered to callers (boundary and delimiter bytes are not counted).

type MpParseResult added in v1.4.0

type MpParseResult struct {
	// Fields contains all non-file form fields collected before the file part.
	Fields map[string]string
	// FileRdr streams the file payload without buffering the entire part in memory.
	FileRdr MpFileReader
	// ContentLength is the expected byte length of the file payload only.
	ContentLength int64
}

type MultiListener added in v1.3.0

type MultiListener struct {
	// contains filtered or unexported fields
}

MultiListener implements net.Listener and accepts connections from multiple underlying listeners. This is useful for listening on multiple IP addresses that a hostname resolves to (e.g., both IPv4 and IPv6 for "localhost").

func NewMultiListener added in v1.3.0

func NewMultiListener(listeners ...net.Listener) *MultiListener

NewMultiListener creates a new MultiListener that accepts connections from all provided listeners.

func (*MultiListener) Accept added in v1.3.0

func (ml *MultiListener) Accept() (net.Conn, error)

Accept waits for and returns the next connection from any of the listeners

func (*MultiListener) Addr added in v1.3.0

func (ml *MultiListener) Addr() net.Addr

Addr returns the address of the first listener

func (*MultiListener) Close added in v1.3.0

func (ml *MultiListener) Close() error

Close closes all underlying listeners

type MultipartParser added in v1.4.0

type MultipartParser struct {
	// contains filtered or unexported fields
}

MultipartParser parses S3 browser-based POST multipart/form-data in a streaming way. It buffers regular form fields, but it does not buffer the file part.

func NewMultipartParser added in v1.4.0

func NewMultipartParser(body io.Reader, boundary string, requestContentLength int64) (*MultipartParser, error)

NewMultipartParser creates a new streaming multipart parser. boundary should be the raw boundary value from Content-Type,

func (*MultipartParser) Parse added in v1.4.0

func (mp *MultipartParser) Parse() (*MpParseResult, error)

Parse parses all non-file fields and returns:

  • form values
  • a streaming file reader
  • file content length

The returned file reader MUST be read until EOF, otherwise final-boundary validation is not triggered.

type TagLimit added in v1.0.13

type TagLimit int

TagLimit specifies the allowed tag count in a tag set

const (
	// Tag limit for bucket tagging
	TagLimitBucket TagLimit = 50
	// Tag limit for object tagging
	TagLimitObject TagLimit = 10
)

type UnsignedChunkReader added in v1.0.10

type UnsignedChunkReader struct {
	// contains filtered or unexported fields
}

UnsignedChunkReader decodes AWS aws-chunked unsigned streaming request bodies. It strips chunk headers/trailers, validates chunk framing and trailing checksums, and exposes only object payload bytes through Read.

The reader is intentionally streaming: chunk payload bytes are read directly into the caller's buffer. It only keeps bounded header/trailer parsing state and a few counters, so a large client-declared chunk does not become a large allocation in the gateway.

func NewUnsignedChunkReader added in v1.0.10

func NewUnsignedChunkReader(r io.Reader, ct checksumType, decContentLength int64) (*UnsignedChunkReader, error)

func (*UnsignedChunkReader) Algorithm added in v1.0.20

func (ucr *UnsignedChunkReader) Algorithm() string

Algorithm returns the checksum algorithm

func (*UnsignedChunkReader) Checksum added in v1.0.20

func (ucr *UnsignedChunkReader) Checksum() string

Checksum returns the parsed trailing checksum

func (*UnsignedChunkReader) Read added in v1.0.10

func (ucr *UnsignedChunkReader) Read(p []byte) (int, error)

Jump to

Keyboard shortcuts

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