webhook

package
v0.0.0-...-e8da0a6 Latest Latest
Warning

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

Go to latest
Published: Jul 19, 2023 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	SetContentEncoding_GZIP = setHeader(http.Header{"Content-Encoding": []string{"gzip"}})
	SetContentType_Json     = setHeader(http.Header{"Content-Type": []string{"application/json"}})
	SetAccept_Json          = setHeader(http.Header{"Accept": []string{"application/json"}})
	SetAccept_Plain         = setHeader(http.Header{"Accept": []string{"text/plain"}})
)
View Source
var DefaultClient = func() func() *http.Client {
	client := http.DefaultClient

	SetTransport(client, func(t *http.Transport) {
		t.Proxy = http.ProxyFromEnvironment
		t.DialContext = (&net.Dialer{
			Timeout:   30 * time.Second,
			KeepAlive: 30 * time.Second,
			DualStack: true,
		}).DialContext
		t.MaxIdleConns = 100
		t.IdleConnTimeout = 90 * time.Second
		t.TLSHandshakeTimeout = 10 * time.Second
		t.ExpectContinueTimeout = 1 * time.Second
		t.MaxIdleConnsPerHost = runtime.GOMAXPROCS(0) + 1
		t.TLSClientConfig.InsecureSkipVerify = true
	})
	return func() *http.Client {
		return client
	}
}()
View Source
var GZipWriter = NewPool(func() *gzip.Writer {
	w, _ := gzip.NewWriterLevel(nil, gzip.BestCompression)
	return w
})

Functions

func CheckCondition

func CheckCondition(validator model.WebhookConditionValidator, filter string) func(ctx context.Context, payload interface{}) (bool, error)

func CheckConditionFilter

func CheckConditionFilter(validator model.WebhookConditionValidator, filter string) error

func ComposeMiddleware

func ComposeMiddleware[A any](handler func(A) error, middleware ...func(next func(A) error) func(A) error) func(A) error

func Do

func Do(client *http.Client, req *http.Request, ops ...OpResponseMiddleware) error

func FromJson

func FromJson[T any](out *T) func(next OpResponse) OpResponse

func GetBody

func GetBody(w io.Writer) func(next OpResponse) OpResponse

func NewClient

func NewClient() *http.Client

func NewRequest

func NewRequest(ctx context.Context, method string, url string, ops ...OpRequestMiddleware) (*http.Request, error)

func SetBody

func SetBody(r_ io.Reader) func(next OpRequest) OpRequest

func SetHeader

func SetHeader(header http.Header) func(next OpRequest) OpRequest

func SetQuery

func SetQuery(query url.Values) func(next OpRequest) OpRequest

func SetTransport

func SetTransport(client *http.Client, opts ...OpTransport) *http.Client

func ToJson

func ToJson[T any](in T) func(next OpRequest) OpRequest

Types

type Config

type Config struct {
	URL                string
	Method             string
	Headers            http.Header
	ConditionValidator model.WebhookConditionValidator
	ConditionFilter    string
	Timeout            time.Duration
}

func (Config) Publish

func (config Config) Publish(ctx context.Context, payload interface{}) error

type OpRequest

type OpRequest = func(*http.Request) error

func Compress_GZip

func Compress_GZip(next OpRequest) OpRequest

type OpRequestMiddleware

type OpRequestMiddleware = func(next OpRequest) OpRequest

type OpResponse

type OpResponse = func(resp *http.Response) error

func CheckStatus

func CheckStatus(next OpResponse) OpResponse

type OpResponseMiddleware

type OpResponseMiddleware = func(next OpResponse) OpResponse

type OpTransport

type OpTransport func(*http.Transport)

type Pool

type Pool[T any] struct {
	// contains filtered or unexported fields
}

func NewPool

func NewPool[T any](new_ func() *T) *Pool[T]

func (Pool[T]) Get

func (pool Pool[T]) Get() *T

func (Pool[T]) Put

func (pool Pool[T]) Put(x *T)

Jump to

Keyboard shortcuts

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