stub

package
v0.9.12 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2022 License: BSD-3-Clause Imports: 17 Imported by: 0

README

STUB

This package provides a set of utilities and helper methods to call a REST or RPC (over websocket) By using this package many of the boilerplate codes are not necessary anymore.

REST example:

    package main

import (
	"context"
	"net/http"

	"github.com/clubpay/ronykit/kit/stub"
)

func main() {
	ctx := context.Background()
	s := stub.New("webhook.site", stub.Secure())
	httpCtx := s.REST().
		SetMethod(http.MethodGet).
		SetPath("/22fda9e7-1660-406e-b11e-993e070f175e").
		SetQuery("someKey", "someValue").
		Run(ctx)
	defer httpCtx.Release()
}

Documentation

Index

Constants

View Source
const (
	// TextMessage denotes a text data message. The text message payload is
	// interpreted as UTF-8 encoded text data.
	TextMessage = 1

	// BinaryMessage denotes a binary data message.
	BinaryMessage = 2
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Error

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

func NewError

func NewError(code int, item string) *Error

func NewErrorWithMsg

func NewErrorWithMsg(msg kit.Message) *Error

func WrapError

func WrapError(err error) *Error

func (Error) Code

func (err Error) Code() int

func (Error) Error

func (err Error) Error() string

func (Error) Is

func (err Error) Is(target error) bool

func (Error) Item

func (err Error) Item() string

func (Error) Msg

func (err Error) Msg() kit.Message

func (Error) Unwrap

func (err Error) Unwrap() error
type Header map[string]string

type OnConnectHandler

type OnConnectHandler func(ctx *WebsocketCtx)

type Option

type Option func(cfg *config)

func DumpTo

func DumpTo(w io.Writer) Option

func Name

func Name(name string) Option

func Secure

func Secure() Option

func SkipTLSVerify

func SkipTLSVerify() Option

func WithDialTimeout

func WithDialTimeout(timeout time.Duration) Option

func WithLogger

func WithLogger(l kit.Logger) Option

func WithReadTimeout

func WithReadTimeout(timeout time.Duration) Option

func WithTracePropagator added in v0.9.8

func WithTracePropagator(tp kit.TracePropagator) Option

func WithWriteTimeout

func WithWriteTimeout(timeout time.Duration) Option

type RESTCtx

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

func (*RESTCtx) AutoRun

func (hc *RESTCtx) AutoRun(
	ctx context.Context, route string, enc kit.Encoding, m kit.Message,
) *RESTCtx

AutoRun is a helper method, which fills the request based on the input arguments. It checks the route which is a path pattern, and fills the dynamic url params based on the `m`'s `tag` keys. Example:

type Request struct {
		ID int64 `json:"id"`
		Name string `json:"name"`
}

AutoRun(

	context.Background(),
  "/something/:id/:name",
  kit.JSON,
  &Request{ID: 10, Name: "customName"},

)

Is equivalent to:

SetPath("/something/10/customName"). Run(context.Background())

func (*RESTCtx) CopyBody

func (hc *RESTCtx) CopyBody(dst []byte) []byte

CopyBody copies the body to `dst`. It creates a new slice and returns it if dst is nil.

func (*RESTCtx) DefaultResponseHandler

func (hc *RESTCtx) DefaultResponseHandler(h RESTResponseHandler) *RESTCtx

func (*RESTCtx) DumpRequest

func (hc *RESTCtx) DumpRequest() string

func (*RESTCtx) DumpRequestTo

func (hc *RESTCtx) DumpRequestTo(w io.Writer) *RESTCtx

DumpRequestTo accepts a writer and will write the request dump to it when Run is executed.

Please refer to DumpResponseTo

func (*RESTCtx) DumpResponse

func (hc *RESTCtx) DumpResponse() string

func (*RESTCtx) DumpResponseTo

func (hc *RESTCtx) DumpResponseTo(w io.Writer) *RESTCtx

DumpResponseTo accepts a writer and will write the response dump to it when Run is executed. Example:

httpCtx := s.REST().
							DumpRequestTo(os.Stdout).
							DumpResponseTo(os.Stdout).
							GET("https//google.com").
							Run(ctx)
defer httpCtx.Release()

**YOU MUST NOT USE httpCtx after httpCtx.Release() is called.**

func (*RESTCtx) Err

func (hc *RESTCtx) Err() *Error

Err returns the error if any occurred during the execution.

func (*RESTCtx) Error

func (hc *RESTCtx) Error() error

Error returns the error if any occurred during the execution.

func (*RESTCtx) GET

func (hc *RESTCtx) GET(path string) *RESTCtx

func (*RESTCtx) GetBody

func (hc *RESTCtx) GetBody() []byte

GetBody returns the body, but please note that the returned slice is only valid until Release is called. If you need to use the body after releasing RESTCtx then use CopyBody method.

func (*RESTCtx) GetHeader

func (hc *RESTCtx) GetHeader(key string) string

GetHeader returns the header value for key in the response

func (*RESTCtx) OPTIONS

func (hc *RESTCtx) OPTIONS(path string) *RESTCtx

func (*RESTCtx) PATCH

func (hc *RESTCtx) PATCH(path string) *RESTCtx

func (*RESTCtx) POST

func (hc *RESTCtx) POST(path string) *RESTCtx

func (*RESTCtx) PUT

func (hc *RESTCtx) PUT(path string) *RESTCtx

func (*RESTCtx) Release

func (hc *RESTCtx) Release()

Release frees the allocates internal resources to be re-used. You MUST NOT refer to any method of this object after calling this method, if you call any method after Release has been called, the result is unpredictable.

func (*RESTCtx) Run

func (hc *RESTCtx) Run(ctx context.Context) *RESTCtx

func (*RESTCtx) SetBody

func (hc *RESTCtx) SetBody(body []byte) *RESTCtx

func (*RESTCtx) SetHeader

func (hc *RESTCtx) SetHeader(key, value string) *RESTCtx

func (*RESTCtx) SetMethod

func (hc *RESTCtx) SetMethod(method string) *RESTCtx

func (*RESTCtx) SetPath

func (hc *RESTCtx) SetPath(path string) *RESTCtx

func (*RESTCtx) SetQuery

func (hc *RESTCtx) SetQuery(key, value string) *RESTCtx

func (*RESTCtx) SetResponseHandler

func (hc *RESTCtx) SetResponseHandler(statusCode int, h RESTResponseHandler) *RESTCtx

func (*RESTCtx) StatusCode

func (hc *RESTCtx) StatusCode() int

StatusCode returns the status code of the response

type RESTOption

type RESTOption func(cfg *restConfig)

func WithPreflightREST

func WithPreflightREST(h ...RESTPreflightHandler) RESTOption

WithPreflightREST register one or many handlers to run in sequence before actually making requests.

type RESTPreflightHandler

type RESTPreflightHandler func(r *fasthttp.Request)

type RESTResponse

type RESTResponse interface {
	StatusCode() int
	GetBody() []byte
	GetHeader(key string) string
}

type RESTResponseHandler

type RESTResponseHandler func(ctx context.Context, r RESTResponse) *Error

type RPCContainerHandler

type RPCContainerHandler func(ctx context.Context, c kit.IncomingRPCContainer)

type RPCMessageHandler

type RPCMessageHandler func(ctx context.Context, msg kit.Message, hdr Header, err error)

type RPCPreflightHandler added in v0.9.5

type RPCPreflightHandler func(req *WebsocketRequest)

type Stub

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

func New

func New(hostPort string, opts ...Option) *Stub

func (*Stub) REST

func (s *Stub) REST(opt ...RESTOption) *RESTCtx

func (*Stub) Websocket

func (s *Stub) Websocket(opts ...WebsocketOption) *WebsocketCtx

type WebsocketCtx

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

func (*WebsocketCtx) BinaryMessage

func (wCtx *WebsocketCtx) BinaryMessage(
	ctx context.Context, predicate string, req, res kit.Message,
	cb RPCMessageHandler,
) error

func (*WebsocketCtx) Connect

func (wCtx *WebsocketCtx) Connect(ctx context.Context, path string) error

func (*WebsocketCtx) Disconnect

func (wCtx *WebsocketCtx) Disconnect() error

func (*WebsocketCtx) Do added in v0.9.2

func (wCtx *WebsocketCtx) Do(ctx context.Context, req WebsocketRequest) error

func (*WebsocketCtx) TextMessage

func (wCtx *WebsocketCtx) TextMessage(
	ctx context.Context, predicate string, req, res kit.Message,
	cb RPCMessageHandler,
) error

type WebsocketOption

type WebsocketOption func(cfg *wsConfig)

func WithAutoReconnect

func WithAutoReconnect(b bool) WebsocketOption

func WithCustomDialerBuilder

func WithCustomDialerBuilder(b func() *websocket.Dialer) WebsocketOption

func WithDefaultHandler

func WithDefaultHandler(h RPCContainerHandler) WebsocketOption

func WithHandler

func WithHandler(predicate string, h RPCContainerHandler) WebsocketOption

func WithOnConnectHandler

func WithOnConnectHandler(f OnConnectHandler) WebsocketOption

func WithPingTime

func WithPingTime(t time.Duration) WebsocketOption

func WithPredicateKey

func WithPredicateKey(key string) WebsocketOption

func WithPreflightRPC added in v0.9.5

func WithPreflightRPC(h ...RPCPreflightHandler) WebsocketOption

WithPreflightRPC register one or many handlers to run in sequence before actually making requests.

func WithUpgradeHeader

func WithUpgradeHeader(key string, values ...string) WebsocketOption

type WebsocketRequest added in v0.9.2

type WebsocketRequest struct {
	Predicate   string
	MessageType int
	ReqMsg      kit.Message
	ResMsg      kit.Message
	ReqHdr      Header
	Callback    RPCMessageHandler
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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