Documentation
¶
Index ¶
- Constants
- Variables
- func HTTPClient(ctx context.Context, opts ...RoundTripperOption) *http.Client
- func RedactHeaders(headers map[string][]string, redactList []string) map[string][]string
- func RedactJSON(data []byte, redactList []string) []byte
- func ReportError(ctx context.Context, err error)
- type ATError
- type Client
- func (c *Client) BuildFastHTTPPayload(SDKType string, trackingStart time.Time, req *fasthttp.RequestCtx, ...) Payload
- func (c *Client) BuildPayload(SDKType string, trackingStart time.Time, req *http.Request, statusCode int, ...) Payload
- func (c *Client) Close() error
- func (c *Client) GetConfig() *Config
- func (c *Client) GetMetadata() *ClientMetadata
- func (c *Client) ReportError(ctx context.Context, err error)
- func (c *Client) SetConfig(cfg *Config)
- func (c *Client) WrapRoundTripper(ctx context.Context, rt http.RoundTripper, opts ...RoundTripperOption) http.RoundTripper
- type ClientMetadata
- type Config
- type Payload
- type RoundTripperOption
Constants ¶
const ( GoDefaultSDKType = "GoBuiltIn" GoGinSDKType = "GoGin" GoGorillaMux = "GoGorillaMux" GoOutgoing = "GoOutgoing" GoFiberSDKType = "GoFiber" )
Variables ¶
var ( ErrorListCtxKey = ctxKey("error-list") CurrentRequestMessageID = ctxKey("current-req-msg-id") CurrentClient = ctxKey("current=apitoolkit-client") )
Functions ¶
func HTTPClient ¶
func HTTPClient(ctx context.Context, opts ...RoundTripperOption) *http.Client
func RedactHeaders ¶
func RedactJSON ¶
func ReportError ¶
ReportError Allows you to report an error from your server to APIToolkit. This error would be associated with a given request, and helps give a request more context especially when investigating incidents
Types ¶
type ATError ¶
type ATError struct { When time.Time `json:"when,omitempty"` ErrorType string `json:"error_type,omitempty"` RootErrorType string `json:"root_error_type,omitempty"` Message string `json:"message,omitempty"` RootErrorMessage string `json:"root_error_message,omitempty"` StackTrace string `json:"stack_trace,omitempty"` }
ATError is the Apitoolkit error type/object
func BuildError ¶ added in v1.0.2
type Client ¶
type Client struct { PublishMessage func(ctx context.Context, payload Payload) error // contains filtered or unexported fields }
func NewClient ¶
NewClient would initialize an APIToolkit client which we can use to push data to apitoolkit.
func (*Client) BuildFastHTTPPayload ¶ added in v1.0.4
func (c *Client) BuildFastHTTPPayload(SDKType string, trackingStart time.Time, req *fasthttp.RequestCtx, statusCode int, reqBody []byte, respBody []byte, respHeader map[string][]string, pathParams map[string]string, urlPath string, redactHeadersList, redactRequestBodyList, redactResponseBodyList []string, errorList []ATError, msgID uuid.UUID, parentID *uuid.UUID, referer string, ) Payload
func (*Client) BuildPayload ¶ added in v1.0.4
func (c *Client) BuildPayload(SDKType string, trackingStart time.Time, req *http.Request, statusCode int, reqBody []byte, respBody []byte, respHeader map[string][]string, pathParams map[string]string, urlPath string, redactHeadersList, redactRequestBodyList, redactResponseBodyList []string, errorList []ATError, msgID uuid.UUID, parentID *uuid.UUID, ) Payload
func (*Client) Close ¶
Close cleans up the apitoolkit client. It should be called before the app shorts down, ideally as a defer call.
func (*Client) GetMetadata ¶ added in v1.0.1
func (c *Client) GetMetadata() *ClientMetadata
func (*Client) ReportError ¶ added in v1.0.2
func (*Client) WrapRoundTripper ¶
func (c *Client) WrapRoundTripper(ctx context.Context, rt http.RoundTripper, opts ...RoundTripperOption) http.RoundTripper
WrapRoundTripper returns a new RoundTripper which traces all requests sent over the transport.
type ClientMetadata ¶
type ClientMetadata struct { ProjectId string `json:"project_id"` PubsubProjectId string `json:"pubsub_project_id"` TopicID string `json:"topic_id"` PubsubPushServiceAccount json.RawMessage `json:"pubsub_push_service_account"` }
type Config ¶
type Config struct { Debug bool // VerboseDebug should never be enabled in production // and logs entire message body which gets sent to APIToolkit VerboseDebug bool RootURL string APIKey string ProjectID string // ServiceVersion is an identifier to help you track deployments. This could be a semver version or a git hash or anything you like. ServiceVersion string // A list of field headers whose values should never be sent to apitoolkit RedactHeaders []string RedactRequestBody []string RedactResponseBody []string // Tags are arbitrary identifiers for service being tracked, and can be used as filters on apitoolkit. Tags []string `json:"tags"` }
type Payload ¶
type Payload struct { Timestamp time.Time `json:"timestamp"` RequestHeaders map[string][]string `json:"request_headers"` QueryParams map[string][]string `json:"query_params"` PathParams map[string]string `json:"path_params"` ResponseHeaders map[string][]string `json:"response_headers"` Method string `json:"method"` SdkType string `json:"sdk_type"` Host string `json:"host"` RawURL string `json:"raw_url"` Referer string `json:"referer"` ProjectID string `json:"project_id"` URLPath string `json:"url_path"` ResponseBody []byte `json:"response_body"` RequestBody []byte `json:"request_body"` ProtoMinor int `json:"proto_minor"` StatusCode int `json:"status_code"` ProtoMajor int `json:"proto_major"` Duration time.Duration `json:"duration"` Errors []ATError `json:"errors"` ServiceVersion *string `json:"service_version"` Tags []string `json:"tags"` MsgID string `json:"msg_id"` ParentID *string `json:"parent_id"` }
Payload represents request and response details FIXME: How would we handle errors from background processes (Not web requests)
type RoundTripperOption ¶
type RoundTripperOption func(*roundTripperConfig)
func WithHTTPClient ¶
func WithHTTPClient(httpClient *http.Client) RoundTripperOption
WithHTTPClient allows you supply your own custom http client
func WithRedactHeaders ¶
func WithRedactHeaders(headers ...string) RoundTripperOption
func WithRedactRequestBody ¶
func WithRedactRequestBody(fields ...string) RoundTripperOption
func WithRedactResponseBody ¶
func WithRedactResponseBody(fields ...string) RoundTripperOption