httpx

package
v1.10.2 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2026 License: Apache-2.0 Imports: 46 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StreamHeaderType    = "X-Resterm-Stream-Type"
	StreamHeaderSummary = "X-Resterm-Stream-Summary"
)

Resterm adds these headers so streaming results can use the normal response, history, and rendering paths. They do not come from the server.

View Source
const (
	DefaultSSEMaxLineBytes  = 4 << 20
	DefaultSSEMaxEventBytes = 8 << 20
	DefaultSSESessionBytes  = 16 << 20
)
View Source
const DefaultMaxRedirects = 10
View Source
const DefaultMaxResponseBytes = 32 << 20
View Source
const DefaultWebSocketTranscriptBytes = 8 << 20

Variables

This section is empty.

Functions

func ApplyOptionSettings

func ApplyOptionSettings(opts *Options, settings map[string]string) error

ApplyOptionSettings applies the generic HTTP settings recognized by the client and reports the first value it cannot read.

func ParseForwardCredentials added in v1.5.0

func ParseForwardCredentials(val string) (origin.Set, error)

Types

type AttemptPlan added in v1.4.0

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

AttemptPlan stores one prepared request so it can be sent more than once. Templates and authentication are resolved only once.

func (*AttemptPlan) Execute added in v1.4.0

func (p *AttemptPlan) Execute(ctx context.Context) (*Response, error)

Execute sends a new copy of the prepared request.

type AuthPlacement

type AuthPlacement int
const (
	AuthInHeader AuthPlacement = iota
	AuthInQuery
)

type AuthPlan added in v1.5.0

type AuthPlan struct {
	Values  []AuthValue
	Targets []string
}

func ResolveAuth added in v1.5.0

func ResolveAuth(
	auth *restfile.AuthSpec,
	resolver *vars.Resolver,
	existing http.Header,
	component diag.Component,
) (AuthPlan, error)

type AuthValue

type AuthValue struct {
	Placement AuthPlacement
	Name      string
	Value     string
}

type Client

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

func NewClient

func NewClient(fs filelookup.FileSystem) *Client

func NewClientWithOptions

func NewClientWithOptions(opts ...ClientOption) *Client

func (*Client) BuildHTTPRequest

func (c *Client) BuildHTTPRequest(
	ctx context.Context,
	req *restfile.Request,
	resolver *vars.Resolver,
	opts Options,
) (*http.Request, Options, []byte, error)

BuildHTTPRequest prepares the request with expansions and returns the body bytes for reuse.

func (*Client) Clone

func (c *Client) Clone() *Client

Clone returns a snapshot of c's client configuration. Later field updates on c do not affect the clone.

func (*Client) CompleteWebSocket

func (c *Client) CompleteWebSocket(
	ctx context.Context,
	handle *WebSocketHandle,
	req *restfile.Request,
	opts Options,
) (*Response, error)

func (*Client) Execute

func (c *Client) Execute(
	ctx context.Context,
	req *restfile.Request,
	resolver *vars.Resolver,
	opts Options,
) (resp *Response, err error)

Wraps the HTTP roundtrip with telemetry spans and network tracing. Trace session hooks into http.Client's transport to capture timing info, while the defer ensures we always report metrics even on failure.

func (*Client) ExecuteSSE

func (c *Client) ExecuteSSE(
	ctx context.Context,
	req *restfile.Request,
	resolver *vars.Resolver,
	opts Options,
) (*Response, error)

func (*Client) ExecuteWebSocket

func (c *Client) ExecuteWebSocket(
	ctx context.Context,
	req *restfile.Request,
	resolver *vars.Resolver,
	opts Options,
) (*Response, error)

func (*Client) PrepareAttempts added in v1.4.0

func (c *Client) PrepareAttempts(
	ctx context.Context,
	req *restfile.Request,
	resolver *vars.Resolver,
	opts Options,
) (*AttemptPlan, error)

PrepareAttempts resolves a request once and buffers its body for reuse.

func (*Client) StartSSE

func (c *Client) StartSSE(
	ctx context.Context,
	req *restfile.Request,
	resolver *vars.Resolver,
	opts Options,
) (*StreamHandle, *Response, error)

func (*Client) StartWebSocket

func (c *Client) StartWebSocket(
	ctx context.Context,
	req *restfile.Request,
	resolver *vars.Resolver,
	opts Options,
) (*WebSocketHandle, *Response, error)

type ClientOption

type ClientOption func(*Client)

func WithFileSystem

func WithFileSystem(fs filelookup.FileSystem) ClientOption

func WithHTTPFactory

func WithHTTPFactory(factory HTTPClientFactory) ClientOption

func WithTelemetry

func WithTelemetry(instr telemetry.Instrumenter) ClientOption

func WithWebSocketDialer

func WithWebSocketDialer(dialer WebSocketDialer) ClientOption

type HTTPClientFactory

type HTTPClientFactory func(Options) (*http.Client, error)

type Options

type Options struct {
	Timeout            time.Duration
	MaxResponseBytes   bytesize.Budget
	SSEMaxLineBytes    int64
	SSEMaxEventBytes   int64
	WSMaxMessageBytes  int64
	BaseURL            string
	FollowRedirects    bool
	MaxRedirects       restfile.Opt[int]
	CredentialHeaders  []string
	ForwardCredentials origin.Set
	ConfineToOrigin    bool

	InsecureSkipVerify bool
	ProxyURL           string
	RootCAs            []string
	RootMode           tlsconfig.RootMode
	ClientCert         string
	ClientKey          string
	HTTPVersion        version.HTTP
	BaseDir            string
	FallbackBaseDirs   []string
	NoFallback         bool
	Trace              bool
	TraceBudget        *nettrace.Budget
	SSH                *ssh.Plan
	K8s                *k8s.Plan
	CookieJar          http.CookieJar
}

type Response

type Response struct {
	Status         string
	StatusCode     int
	Proto          string
	Headers        http.Header
	ReqMethod      string
	RequestHeaders http.Header
	ReqHost        string
	ReqLen         int64
	ReqTE          []string
	Body           []byte
	Duration       time.Duration
	EffectiveURL   string
	Request        *restfile.Request
	Timeline       *nettrace.Timeline
	TraceReport    *nettrace.Report
}

func CompleteSSE

func CompleteSSE(handle *StreamHandle) (*Response, error)

func StreamingWebSocketResponse

func StreamingWebSocketResponse(meta StreamMeta) *Response

This temporary response lets the UI show an interactive WebSocket before the session closes and its final transcript is available.

type ResponseTooLargeError added in v1.5.0

type ResponseTooLargeError struct {
	Limit int64
}

func (*ResponseTooLargeError) Error added in v1.5.0

func (e *ResponseTooLargeError) Error() string

type SSEEvent

type SSEEvent struct {
	Index     int       `json:"index"`
	ID        string    `json:"id,omitempty"`
	Event     string    `json:"event,omitempty"`
	Data      string    `json:"data,omitempty"`
	Comment   string    `json:"comment,omitempty"`
	Retry     int       `json:"retry,omitempty"`
	Timestamp time.Time `json:"timestamp"`
}

type SSESummary

type SSESummary struct {
	EventCount int           `json:"eventCount"`
	ByteCount  int64         `json:"byteCount"`
	Duration   time.Duration `json:"duration"`
	Reason     string        `json:"reason"`
	Dropped    int64         `json:"dropped,omitempty"`
	Error      string        `json:"error,omitempty"`
	ErrorClass diag.Class    `json:"errorClass,omitempty"`
}

func (SSESummary) Err added in v1.5.0

func (s SSESummary) Err() error

Err reports an error when the stream fails, is canceled, or exceeds a caller deadline. Configured stream limits are normal endings.

type SSETranscript

type SSETranscript struct {
	Events  []SSEEvent `json:"events"`
	Summary SSESummary `json:"summary"`
}

func DecodeSSETranscript

func DecodeSSETranscript(data []byte) (*SSETranscript, error)

type StreamHandle

type StreamHandle struct {
	Session *stream.Session
	Meta    StreamMeta
}

type StreamMeta

type StreamMeta struct {
	Status         string
	StatusCode     int
	Proto          string
	Headers        http.Header
	RequestHeaders http.Header
	RequestMethod  string
	RequestHost    string
	RequestLength  int64
	RequestTE      []string
	EffectiveURL   string
	ConnectedAt    time.Time
	Request        *restfile.Request
	BaseDir        string
}

type WebSocketEvent

type WebSocketEvent struct {
	Step      string    `json:"step,omitempty"`
	Direction string    `json:"direction"`
	Type      string    `json:"type"`
	Size      int       `json:"size"`
	Text      string    `json:"text,omitempty"`
	Base64    string    `json:"base64,omitempty"`
	Timestamp time.Time `json:"timestamp"`
	Code      int       `json:"code,omitempty"`
	Reason    string    `json:"reason,omitempty"`
}

type WebSocketHandle

type WebSocketHandle struct {
	Session *stream.Session
	Meta    StreamMeta
	Sender  *WebSocketSender
}

type WebSocketSender

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

func (*WebSocketSender) Close

func (s *WebSocketSender) Close(
	ctx context.Context,
	code websocket.StatusCode,
	reason string,
	meta map[string]string,
) error

func (*WebSocketSender) Ping

func (s *WebSocketSender) Ping(ctx context.Context, payload string, meta map[string]string) error

func (*WebSocketSender) Pong

func (s *WebSocketSender) Pong(ctx context.Context, payload string, meta map[string]string) error

func (*WebSocketSender) SendBase64

func (s *WebSocketSender) SendBase64(
	ctx context.Context,
	data string,
	meta map[string]string,
) error

func (*WebSocketSender) SendBinary

func (s *WebSocketSender) SendBinary(
	ctx context.Context,
	data []byte,
	meta map[string]string,
) error

func (*WebSocketSender) SendJSON

func (s *WebSocketSender) SendJSON(
	ctx context.Context,
	jsonPayload string,
	meta map[string]string,
) error

func (*WebSocketSender) SendText

func (s *WebSocketSender) SendText(ctx context.Context, text string, meta map[string]string) error

type WebSocketSummary

type WebSocketSummary struct {
	SentCount     int           `json:"sentCount"`
	ReceivedCount int           `json:"receivedCount"`
	Duration      time.Duration `json:"duration"`
	ClosedBy      string        `json:"closedBy"`
	CloseCode     int           `json:"closeCode,omitempty"`
	CloseReason   string        `json:"closeReason,omitempty"`
	Dropped       int64         `json:"dropped,omitempty"`
	ErrorClass    diag.Class    `json:"errorClass,omitempty"`
}

func (WebSocketSummary) Err added in v1.5.0

func (s WebSocketSummary) Err() error

Err reports an error when the session fails, is canceled, or exceeds a caller deadline. A close from either side and an idle timeout are normal endings.

type WebSocketTranscript

type WebSocketTranscript struct {
	Events  []WebSocketEvent `json:"events"`
	Summary WebSocketSummary `json:"summary"`
}

func DecodeWebSocketTranscript

func DecodeWebSocketTranscript(data []byte) (*WebSocketTranscript, error)

Jump to

Keyboard shortcuts

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