Documentation ¶
Index ¶
- Variables
- func BasicAuth(user, pass string) string
- func BearerAuth(token string) string
- func Contains[T comparable](haystack []T, needle T) bool
- func ContainsAll[T comparable](haystack []T, needles []T) bool
- func ContainsIP(haystack []netip.Prefix, needle netip.Addr) bool
- func DetectContentType(b []byte, filename string) (mimeType string, ext string)
- func FileExists(filename string) bool
- func FormatSize(b int64) string
- func FormatSizeHuman(b int64) string
- func Int(v int) *int
- func LastString(s []string, def string) string
- func Max[T int | int64 | rate.Limit](a, b T) T
- func MaybeMarshalJSON(v any) string
- func MinMax[T int | int64](value, min, max T) T
- func ParsePriority(priority string) (int, error)
- func ParseSize(s string) (int64, error)
- func PriorityString(priority int) (string, error)
- func QuoteCommand(command []string) string
- func RandomLowerStringPrefix(prefix string, length int) string
- func RandomString(length int) string
- func RandomStringPrefix(prefix string, length int) string
- func ReadPassword(in io.Reader) ([]byte, error)
- func Retry[T any](f func() (*T, error), after ...time.Duration) (t *T, err error)
- func ShortTopicURL(s string) string
- func SplitKV(s string, sep string) (key string, value string)
- func SplitNoEmpty(s string, sep string) []string
- func String(v string) *string
- func Time(v time.Time) *time.Time
- func UnmarshalJSON[T any](body io.ReadCloser) (*T, error)
- func UnmarshalJSONWithLimit[T any](r io.ReadCloser, limit int, allowEmpty bool) (*T, error)
- func ValidRandomString(s string, length int) bool
- type PeekedReadCloser
Constants ¶
This section is empty.
Variables ¶
var ( ErrUnmarshalJSON = errors.New("unmarshalling JSON failed") ErrTooLargeJSON = errors.New("too large JSON") )
Errors for UnmarshalJSON and UnmarshalJSONWithLimit functions
Functions ¶
func BearerAuth ¶
BearerAuth encodes the Authorization header value for a bearer/token auth
func Contains ¶
func Contains[T comparable](haystack []T, needle T) bool
Contains returns true if needle is contained in haystack
func ContainsAll ¶
func ContainsAll[T comparable](haystack []T, needles []T) bool
ContainsAll returns true if all needles are contained in haystack
func ContainsIP ¶
ContainsIP returns true if any one of the of prefixes contains the ip.
func DetectContentType ¶
DetectContentType probes the byte array b and returns mime type and file extension. The filename is only used to override certain special cases.
func FileExists ¶
FileExists checks if a file exists, and returns true if it does
func FormatSize ¶
FormatSize formats the size in a way that it can be parsed by ParseSize. It does not include decimal places. Uneven sizes are rounded down.
func FormatSizeHuman ¶
FormatSizeHuman formats bytes into a human-readable notation, e.g. 2.1 MB
func LastString ¶
LastString returns the last string in a slice, or def if s is empty
func MaybeMarshalJSON ¶
MaybeMarshalJSON returns a JSON string of the given object, or "<cannot serialize>" if serialization failed. This is useful for logging purposes where a failure doesn't matter that much.
func MinMax ¶
MinMax returns value if it is between min and max, or either min or max if it is out of range
func ParsePriority ¶
ParsePriority parses a priority string into its equivalent integer value
func ParseSize ¶
ParseSize parses a size string like 2K or 2M into bytes. If no unit is found, e.g. 123, bytes is assumed.
func PriorityString ¶
PriorityString converts a priority number to a string
func QuoteCommand ¶
QuoteCommand combines a command array to a string, quoting arguments that need quoting. This function is naive, and sometimes wrong. It is only meant for lo pretty-printing a command.
Warning: Never use this function with the intent to run the resulting command.
Example:
[]string{"ls", "-al", "Document Folder"} -> ls -al "Document Folder"
func RandomLowerStringPrefix ¶
RandomLowerStringPrefix returns a random lowercase-only string with a given length, with a prefix
func RandomString ¶
RandomString returns a random string with a given length
func RandomStringPrefix ¶
RandomStringPrefix returns a random string with a given length, with a prefix
func ReadPassword ¶
ReadPassword will read a password from STDIN. If the terminal supports it, it will not print the input characters to the screen. If not, it'll just read using normal readline semantics (useful for testing).
func Retry ¶
Retry executes function f until if succeeds, and then returns t. If f fails, it sleeps and tries again. The sleep durations are passed as the after params.
func ShortTopicURL ¶
ShortTopicURL shortens the topic URL to be human-friendly, removing the http:// or https://
func SplitKV ¶
SplitKV splits a string into a key/value pair using a separator, and trimming space. If the separator is not found, key is empty.
func SplitNoEmpty ¶
SplitNoEmpty splits a string using strings.Split, but filters out empty strings
func UnmarshalJSON ¶
func UnmarshalJSON[T any](body io.ReadCloser) (*T, error)
UnmarshalJSON reads the given io.ReadCloser into a struct
func UnmarshalJSONWithLimit ¶
UnmarshalJSONWithLimit reads the given io.ReadCloser into a struct, but only until limit is reached
func ValidRandomString ¶
ValidRandomString returns true if the given string matches the format created by RandomString
Types ¶
type PeekedReadCloser ¶
type PeekedReadCloser struct { PeekedBytes []byte LimitReached bool // contains filtered or unexported fields }
PeekedReadCloser is a ReadCloser that allows peeking into a stream and buffering it in memory. It can be instantiated using the Peek function. After a stream has been peeked, it can still be fully read by reading the PeekedReadCloser. It first drained from the memory buffer, and then from the remaining underlying reader.
func Peek ¶
func Peek(underlying io.ReadCloser, limit int) (*PeekedReadCloser, error)
Peek reads the underlying ReadCloser into memory up until the limit and returns a PeekedReadCloser. It does not return an error if limit is reached. Instead, LimitReached will be set to true.
func (*PeekedReadCloser) Close ¶
func (r *PeekedReadCloser) Close() error
Close closes the underlying stream