lib

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Feb 4, 2022 License: GPL-3.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MajorUnknown      = "unk"
	MajorChannels     = "channels"
	MajorGuilds       = "guilds"
	MajorWebhooks     = "webhooks"
	MajorInvites      = "invites"
	MajorInteractions = "interactions"
)
View Source
const EpochDiscord = 1420070400000

Variables

View Source
var (
	ErrorCounter = promauto.NewCounter(prometheus.CounterOpts{
		Name: "nirn_proxy_error",
		Help: "The total number of errors when processing requests",
	})

	RequestHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    "nirn_proxy_requests",
		Help:    "Request histogram",
		Buckets: []float64{.1, .25, 1, 2.5, 5, 20},
	}, []string{"method", "status", "route", "clientId"})

	ConnectionsOpen = promauto.NewGauge(prometheus.GaugeOpts{
		Name: "nirn_proxy_open_connections",
		Help: "Gauge for client connections currently open with the proxy",
	})
)

Functions

func ConfigureDiscordHTTPClient

func ConfigureDiscordHTTPClient(ip string, timeout time.Duration)

func EnvGet

func EnvGet(name string, defaultVal string) string

func EnvGetInt

func EnvGetInt(name string, defaultVal int) int

func EnvMustGet

func EnvMustGet(name string) string

func GetBotGlobalLimit

func GetBotGlobalLimit(token string) (uint, error)

func GetBotId

func GetBotId(token string) string

func GetMetricsPath

func GetMetricsPath(route string) string

func GetOptimisticBucketPath

func GetOptimisticBucketPath(url string, method string) string

func GetSnowflakeCreatedAt

func GetSnowflakeCreatedAt(snowflake string) (time.Time, error)

func HashCRC64

func HashCRC64(data string) uint64

func IsNumericInput

func IsNumericInput(str string) bool

func IsSnowflake

func IsSnowflake(str string) bool

func ProcessRequest

func ProcessRequest(ctx context.Context, item *QueueItem) (*http.Response, error)

func SetLogger

func SetLogger(l *logrus.Logger)

func StartMetrics

func StartMetrics(addr string)

func StartProfileServer

func StartProfileServer()

Types

type BotGatewayResponse

type BotGatewayResponse struct {
	SessionStartLimit map[string]int `json:"session_start_limit"`
}

type BotUserResponse

type BotUserResponse struct {
	Id       string `json:"id"`
	Username string `json:"username"`
	Discrim  string `json:"discriminator"`
}

func GetBotUser

func GetBotUser(token string) (*BotUserResponse, error)

type QueueChannel

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

type QueueItem

type QueueItem struct {
	Req *http.Request
	Res *http.ResponseWriter
	// contains filtered or unexported fields
}

type RequestQueue

type RequestQueue struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewRequestQueue

func NewRequestQueue(processor func(ctx context.Context, item *QueueItem) (*http.Response, error), globalLimit uint, bufferSize int, user *BotUserResponse) *RequestQueue

func (*RequestQueue) Queue

func (q *RequestQueue) Queue(req *http.Request, res *http.ResponseWriter) (string, *http.Response, error)

Jump to

Keyboard shortcuts

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