httpx

package
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2026 License: Apache-2.0 Imports: 41 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.

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.

Types

type AuthPlacement

type AuthPlacement int

AuthPlacement identifies where a resolved auth value belongs on the wire.

const (
	AuthInHeader AuthPlacement = iota
	AuthInQuery
)

type AuthValue

type AuthValue struct {
	Placement AuthPlacement
	Name      string
	Value     string
}

func AuthValues

func AuthValues(
	auth *restfile.AuthSpec,
	resolver *vars.Resolver,
	existing http.Header,
	component diag.Component,
) ([]AuthValue, error)

AuthValues resolves auth without mutating a request. This lets HTTP and gRPC share expansion while the engine still registers the values for redaction. Existing headers are never overwritten.

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) 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
	FollowRedirects    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 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"`
}

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"`
}

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