common

package
v0.0.0-...-90df38b Latest Latest
Warning

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

Go to latest
Published: May 1, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultSlidingWindow time.Duration = 2 * week
	DefaultQuota         int           = 100
)

Variables

View Source
var (
	// Git SHA commit (first 4 characters)
	BuildCommit string

	// Build date and time
	BuildTime string

	// BuildGoVersion carries Go version the binary was built with
	BuildGoVersion string
)

Functions

func CheckQuota

func CheckQuota(ctx context.Context, orgID string, dB db.DB, quotaFile string) (bool, error)

Returns true if the number of requests made by OrgID during a sliding window is below a threshold. The duration of the sliding window and the value of the threshold must be set in a file pointed by the QUOTA_FILE environment variable. If the variable is unset (or an empty string), the check is disabled and always returns true.

func FromPtr

func FromPtr[T any](ref *T) (value T)

func ToPtr

func ToPtr[T any](x T) *T

Types

type AllowList

type AllowList map[string][]string

func LoadAllowList

func LoadAllowList(allowFile string) (AllowList, error)

Loads the allow list from an allowFile and returns an AllowList. If an empty string is given as the argument, returns an empty AllowList.

The allow file must conform to the following json schema:

{
  "000000": ["fedora-*"],
  "000001": ["fedora-34", "fedora-35", "fedora-36"],
  "000002": [],
  "*":      ["rhel-*"]
}

func (AllowList) IsAllowed

func (a AllowList) IsAllowed(orgId, distro string) (bool, error)

type EchoLogrusLogger

type EchoLogrusLogger struct {
	*logrus.Logger
	Ctx context.Context
}

EchoLogrusLogger extend logrus.Logger

func Logger

func Logger() *EchoLogrusLogger

func (*EchoLogrusLogger) Debug

func (l *EchoLogrusLogger) Debug(i ...interface{})

func (*EchoLogrusLogger) Debugf

func (l *EchoLogrusLogger) Debugf(format string, args ...interface{})

func (*EchoLogrusLogger) Debugj

func (l *EchoLogrusLogger) Debugj(j log.JSON)

func (*EchoLogrusLogger) Error

func (l *EchoLogrusLogger) Error(i ...interface{})

func (*EchoLogrusLogger) Errorf

func (l *EchoLogrusLogger) Errorf(format string, args ...interface{})

func (*EchoLogrusLogger) Errorj

func (l *EchoLogrusLogger) Errorj(j log.JSON)

func (*EchoLogrusLogger) Fatal

func (l *EchoLogrusLogger) Fatal(i ...interface{})

func (*EchoLogrusLogger) Fatalf

func (l *EchoLogrusLogger) Fatalf(format string, args ...interface{})

func (*EchoLogrusLogger) Fatalj

func (l *EchoLogrusLogger) Fatalj(j log.JSON)

func (*EchoLogrusLogger) Info

func (l *EchoLogrusLogger) Info(i ...interface{})

func (*EchoLogrusLogger) Infof

func (l *EchoLogrusLogger) Infof(format string, args ...interface{})

func (*EchoLogrusLogger) Infoj

func (l *EchoLogrusLogger) Infoj(j log.JSON)

func (*EchoLogrusLogger) Level

func (l *EchoLogrusLogger) Level() log.Lvl

func (*EchoLogrusLogger) Output

func (l *EchoLogrusLogger) Output() io.Writer

func (*EchoLogrusLogger) Panic

func (l *EchoLogrusLogger) Panic(i ...interface{})

func (*EchoLogrusLogger) Panicf

func (l *EchoLogrusLogger) Panicf(format string, args ...interface{})

func (*EchoLogrusLogger) Panicj

func (l *EchoLogrusLogger) Panicj(j log.JSON)

func (*EchoLogrusLogger) Prefix

func (l *EchoLogrusLogger) Prefix() string

func (*EchoLogrusLogger) Print

func (l *EchoLogrusLogger) Print(i ...interface{})

func (*EchoLogrusLogger) Printf

func (l *EchoLogrusLogger) Printf(format string, args ...interface{})

func (*EchoLogrusLogger) Printj

func (l *EchoLogrusLogger) Printj(j log.JSON)

func (*EchoLogrusLogger) SetHeader

func (l *EchoLogrusLogger) SetHeader(h string)

func (*EchoLogrusLogger) SetLevel

func (l *EchoLogrusLogger) SetLevel(v log.Lvl)

func (*EchoLogrusLogger) SetOutput

func (l *EchoLogrusLogger) SetOutput(w io.Writer)

func (*EchoLogrusLogger) SetPrefix

func (l *EchoLogrusLogger) SetPrefix(p string)

func (*EchoLogrusLogger) Warn

func (l *EchoLogrusLogger) Warn(i ...interface{})

func (*EchoLogrusLogger) Warnf

func (l *EchoLogrusLogger) Warnf(format string, args ...interface{})

func (*EchoLogrusLogger) Warnj

func (l *EchoLogrusLogger) Warnj(j log.JSON)

type Quota

type Quota struct {
	Quota         int           `json:"quota"`
	SlidingWindow time.Duration `json:"slidingWindow"`
}

the QUOTA_FILE needs to contain data arranged as such:

{
    "000000":{
        "quota":2,
        "slidingWindow":1209600000000000
    },
    "000001":{
        "quota":0,
        "slidingWindow":1209600000000000
    },
    "default":{
        "quota":100,
        "slidingWindow":1209600000000000
    }
}

The unit for the sliding window is the nanosecond.

Jump to

Keyboard shortcuts

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