controller

package
v4.2.2 Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2026 License: AGPL-3.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const MaxRetries = 10
View Source
const RetrySleepTimeS = 30

Variables

View Source
var ClickhousePushV2 = PushV2
View Source
var Config = Build(withOkStatusAndBody(200, []byte("Not supported")))
View Source
var HealthInflux = Build(withOkStatusAndBody(200, nil))
View Source
var PromHealthStub = Build(withOkStatusAndBody(200, nil))
View Source
var Ready = Build(withOkStatusAndBody(200, []byte("ok")))
View Source
var WithExtraMiddlewareDefault = []BuildOption{
	WithOverallContextMiddleware,
}
View Source
var WithExtraMiddlewareTempo = []BuildOption{
	WithOverallContextMiddleware,
}
View Source
var WithOverallContextMiddleware = WithPreRequest(func(w http.ResponseWriter, r *http.Request) error {
	dsn := strings.Clone(r.Header.Get("X-CH-DSN"))
	meta := strings.Clone(r.Header.Get("X-Scope-Meta"))
	strTTLDays := strings.Clone(r.Header.Get("X-Ttl-Days"))
	async := getAsyncMode(r)
	TTLDays := uint16(0)
	if strTTLDays != "" {
		iTTLDays, err := strconv.ParseUint(strTTLDays, 10, 16)
		if err == nil {
			TTLDays = uint16(iTTLDays)
		}
	}

	switch r.Header.Get("Content-Encoding") {
	case "":

	case "gzip":
		reader, err := gzip.NewReader(r.Body)
		if err != nil {
			return err
		}
		r.Body = readColser{reader}
	case "snappy":
		bBody, err := io.ReadAll(r.Body)
		if err != nil {
			return err
		}
		uncompressed, err := snappy.Decode(nil, bBody)
		if err != nil {

			uncompressed = bBody
		}
		reader := bytes.NewReader(uncompressed)
		r.Body = readColser{reader}
	default:
		return errors.New400Error(fmt.Sprintf("%s encoding not supported", r.Header.Get("Content-Encoding")))
	}
	ctx := r.Context()

	ctx = context.WithValue(ctx, utils.ContextKeyDSN, dsn)

	ctx = context.WithValue(ctx, utils.ContextKeyMeta, meta)
	ctx = context.WithValue(ctx, utils.ContextKeyTTLDays, TTLDays)
	ctx = context.WithValue(ctx, utils.ContextKeyAsync, async)

	*r = *r.WithContext(ctx)
	return nil
})

Functions

func Build

func Build(options ...BuildOption) func(w http.ResponseWriter, r *http.Request)

func ErrorHandler

func ErrorHandler(w http.ResponseWriter, r *http.Request, err error)

func OTLPLogsV2

func OTLPLogsV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func OTLPPushV2

func OTLPPushV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func PushCfDatadogV2

func PushCfDatadogV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func PushDatadogMetricsV2

func PushDatadogMetricsV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func PushDatadogV2

func PushDatadogV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func PushInfluxV2

func PushInfluxV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func PushProfileV2

func PushProfileV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func PushStreamV2

func PushStreamV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func PushV2

func PushV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func TargetBulkV2

func TargetBulkV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func TargetDocV2

func TargetDocV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

func WriteStreamProbeV2

func WriteStreamProbeV2(w http.ResponseWriter, r *http.Request)

func WriteStreamV2

func WriteStreamV2(cfg MiddlewareConfig) func(w http.ResponseWriter, r *http.Request)

Types

type BuildOption

type BuildOption func(ctx *PusherCtx) *PusherCtx

func WithPreRequest

func WithPreRequest(preRequest Requester) BuildOption

type MiddlewareConfig

type MiddlewareConfig struct {
	ExtraMiddleware []BuildOption
}

func NewMiddlewareConfig

func NewMiddlewareConfig(middlewares ...BuildOption) MiddlewareConfig

NewMiddlewareConfig generates a MiddlewareConfig from given middleware constructors.

type Parser

type Parser func(ctx context.Context, body io.Reader, fpCache numbercache.ICache[uint64]) chan *model.ParserResponse

type PusherCtx

type PusherCtx struct {
	PreRequest   []Requester
	PostRequest  []Requester
	Parser       map[string]Requester
	ResponseBody []byte
}

func (*PusherCtx) Do

func (pusherCtx *PusherCtx) Do(w http.ResponseWriter, r *http.Request) error

func (*PusherCtx) DoParse

func (pusherCtx *PusherCtx) DoParse(r *http.Request, w http.ResponseWriter) error

type Requester

type Requester func(w http.ResponseWriter, r *http.Request) error

type TempoController

type TempoController struct {
}

Jump to

Keyboard shortcuts

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