util

package
v8.9.1 Latest Latest
Warning

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

Go to latest
Published: Aug 5, 2024 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package util provides general helpers used by Relay code.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DecompressGzipData added in v8.9.0

func DecompressGzipData(data []byte) ([]byte, error)

func ErrorJSONMsg

func ErrorJSONMsg(msg string) (j []byte)

ErrorJSONMsg returns a json-encoded error message

func ErrorJSONMsgf

func ErrorJSONMsgf(fmtStr string, args ...interface{}) []byte

ErrorJSONMsgf returns a json-encoded error message using the printf formatter

func NewReader added in v8.9.0

func NewReader(r io.ReadCloser, isGzipped bool, maxInboundPayloadSize ct.OptBase2Bytes) (io.ReadCloser, error)

NewReader creates a new reader

func RedactURL

func RedactURL(inputURL string) string

RedactURL is equivalent to parsing a URL string and then calling Redacted() to replace passwords, if any, with xxxxx. We still support Go 1.14 so we can't use the actual URL.Redacted().

Types

type CleanupTasks

type CleanupTasks []func()

CleanupTasks accumulates a list of things which should be done at the end of a method unless Clear() is called. Intended usage:

var cleanup CleanupTasks
defer cleanup.Run()

thing1 := createThing1()
cleanup.AddCloser(thing1)

err := doSomethingElse()
if err != nil {
	return err // thing1 will be disposed of automatically
}

cleanup.Clear() // everything succeeded so we don't want thing1 to be disposed of

func (*CleanupTasks) AddCloser

func (t *CleanupTasks) AddCloser(c io.Closer)

AddCloser adds a task for calling Close on an object

func (*CleanupTasks) AddFunc

func (t *CleanupTasks) AddFunc(f func())

AddFunc adds a task.

func (*CleanupTasks) Clear

func (t *CleanupTasks) Clear()

Clear clears all tasks that were added.

func (*CleanupTasks) Run

func (t *CleanupTasks) Run()

Run runs all of the tasks.

type PayloadReader added in v8.9.0

type PayloadReader struct {
	IsGzipped bool
	MaxBytes  int64
	// contains filtered or unexported fields
}

PayloadReader is an implementation of io.Reader that reads bytes off the request body optionally decompresses them, and has a limit attached. If the limit is reached, an error will be returned and the underlying stream will be closed.

Note: limit is applied to *both* compressed and uncompressed number of bytes. This protects us from potential zipbombs

func (*PayloadReader) Close added in v8.9.0

func (pr *PayloadReader) Close() error

func (*PayloadReader) GetBytesRead added in v8.9.0

func (pr *PayloadReader) GetBytesRead() int64

GetBytesRead returns the total number of bytes read off the original stream

func (*PayloadReader) GetUncompressedBytesRead added in v8.9.0

func (pr *PayloadReader) GetUncompressedBytesRead() int64

GetUncompressedBytesRead Total number of Bytes in the uncompressed stream.

GetBytesRead and  GetUncompressedBytesRead will return the same value if the stream is uncompressed.

func (*PayloadReader) Read added in v8.9.0

func (pr *PayloadReader) Read(p []byte) (int, error)

type StringMemoizer

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

StringMemoizer is a simple encapsulation of a lazily evaluated-only-once string function.

func NewStringMemoizer

func NewStringMemoizer(computeFn func() string) *StringMemoizer

NewStringMemoizer creates a new uninitialized StringMemoizer.

func (*StringMemoizer) Get

func (m *StringMemoizer) Get() string

Get returns the result of the computeFn, calling it only if it has not already been called.

Jump to

Keyboard shortcuts

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