...

Package client

import "github.com/go-openapi/runtime/client"
Overview
Index

Overview ▾

Index ▾

Variables
func APIKeyAuth(name, in, value string) runtime.ClientAuthInfoWriter
func BasicAuth(username, password string) runtime.ClientAuthInfoWriter
func BearerToken(token string) runtime.ClientAuthInfoWriter
func Compose(auths ...runtime.ClientAuthInfoWriter) runtime.ClientAuthInfoWriter
func KeepAliveTransport(rt http.RoundTripper) http.RoundTripper
func TLSClient(opts TLSClientOptions) (*http.Client, error)
func TLSClientAuth(opts TLSClientOptions) (*tls.Config, error)
func TLSTransport(opts TLSClientOptions) (http.RoundTripper, error)
type ClientResponseFunc
type OpenTelemetryOpt
    func WithPropagators(ps propagation.TextMapPropagator) OpenTelemetryOpt
    func WithSpanNameFormatter(f func(op *runtime.ClientOperation) string) OpenTelemetryOpt
    func WithSpanOptions(opts ...trace.SpanStartOption) OpenTelemetryOpt
    func WithTracerProvider(provider trace.TracerProvider) OpenTelemetryOpt
type Runtime
    func New(host, basePath string, schemes []string) *Runtime
    func NewWithClient(host, basePath string, schemes []string, client *http.Client) *Runtime
    func (r *Runtime) CreateHttpRequest(operation *runtime.ClientOperation) (req *http.Request, err error)
    func (r *Runtime) EnableConnectionReuse()
    func (r *Runtime) SetDebug(debug bool)
    func (r *Runtime) SetLogger(logger logger.Logger)
    func (r *Runtime) SetResponseReader(f ClientResponseFunc)
    func (r *Runtime) Submit(operation *runtime.ClientOperation) (interface{}, error)
    func (r *Runtime) WithOpenTelemetry(opts ...OpenTelemetryOpt) runtime.ClientTransport
    func (r *Runtime) WithOpenTracing(opts ...opentracing.StartSpanOption) runtime.ClientTransport
type TLSClientOptions

Package files

auth_info.go keepalive.go opentelemetry.go opentracing.go request.go response.go runtime.go

Variables

DefaultTimeout the default request timeout

var DefaultTimeout = 30 * time.Second

PassThroughAuth never manipulates the request

var PassThroughAuth runtime.ClientAuthInfoWriter

func APIKeyAuth

func APIKeyAuth(name, in, value string) runtime.ClientAuthInfoWriter

APIKeyAuth provides an API key auth info writer

func BasicAuth

func BasicAuth(username, password string) runtime.ClientAuthInfoWriter

BasicAuth provides a basic auth info writer

func BearerToken

func BearerToken(token string) runtime.ClientAuthInfoWriter

BearerToken provides a header based oauth2 bearer access token auth info writer

func Compose

func Compose(auths ...runtime.ClientAuthInfoWriter) runtime.ClientAuthInfoWriter

Compose combines multiple ClientAuthInfoWriters into a single one. Useful when multiple auth headers are needed.

func KeepAliveTransport

func KeepAliveTransport(rt http.RoundTripper) http.RoundTripper

KeepAliveTransport drains the remaining body from a response so that go will reuse the TCP connections. This is not enabled by default because there are servers where the response never gets closed and that would make the code hang forever. So instead it's provided as a http client middleware that can be used to override any request.

func TLSClient

func TLSClient(opts TLSClientOptions) (*http.Client, error)

TLSClient creates a http.Client for mutual auth

func TLSClientAuth

func TLSClientAuth(opts TLSClientOptions) (*tls.Config, error)

TLSClientAuth creates a tls.Config for mutual auth

func TLSTransport

func TLSTransport(opts TLSClientOptions) (http.RoundTripper, error)

TLSTransport creates a http client transport suitable for mutual tls auth

type ClientResponseFunc

type ClientResponseFunc = func(*http.Response) runtime.ClientResponse //nolint:revive

type OpenTelemetryOpt

type OpenTelemetryOpt interface {
    // contains filtered or unexported methods
}

func WithPropagators

func WithPropagators(ps propagation.TextMapPropagator) OpenTelemetryOpt

WithPropagators configures specific propagators. If this option isn't specified, then the global TextMapPropagator is used.

func WithSpanNameFormatter

func WithSpanNameFormatter(f func(op *runtime.ClientOperation) string) OpenTelemetryOpt

WithSpanNameFormatter takes a function that will be called on every request and the returned string will become the Span Name.

func WithSpanOptions

func WithSpanOptions(opts ...trace.SpanStartOption) OpenTelemetryOpt

WithSpanOptions configures an additional set of trace.SpanOptions, which are applied to each new span.

func WithTracerProvider

func WithTracerProvider(provider trace.TracerProvider) OpenTelemetryOpt

WithTracerProvider specifies a tracer provider to use for creating a tracer. If none is specified, the global provider is used.

type Runtime

Runtime represents an API client that uses the transport to make http requests based on a swagger specification.

type Runtime struct {
    DefaultMediaType      string
    DefaultAuthentication runtime.ClientAuthInfoWriter
    Consumers             map[string]runtime.Consumer
    Producers             map[string]runtime.Producer

    Transport http.RoundTripper
    Jar       http.CookieJar
    // Spec      *spec.Document
    Host     string
    BasePath string
    Formats  strfmt.Registry
    Context  context.Context //nolint:containedctx  // we precisely want this type to contain the request context

    Debug bool
    // contains filtered or unexported fields
}

func New

func New(host, basePath string, schemes []string) *Runtime

New creates a new default runtime for a swagger api runtime.Client

func NewWithClient

func NewWithClient(host, basePath string, schemes []string, client *http.Client) *Runtime

NewWithClient allows you to create a new transport with a configured http.Client

func (*Runtime) CreateHttpRequest

func (r *Runtime) CreateHttpRequest(operation *runtime.ClientOperation) (req *http.Request, err error)

func (*Runtime) EnableConnectionReuse

func (r *Runtime) EnableConnectionReuse()

EnableConnectionReuse drains the remaining body from a response so that go will reuse the TCP connections.

This is not enabled by default because there are servers where the response never gets closed and that would make the code hang forever. So instead it's provided as a http client middleware that can be used to override any request.

func (*Runtime) SetDebug

func (r *Runtime) SetDebug(debug bool)

SetDebug changes the debug flag. It ensures that client and middlewares have the set debug level.

func (*Runtime) SetLogger

func (r *Runtime) SetLogger(logger logger.Logger)

SetLogger changes the logger stream. It ensures that client and middlewares use the same logger.

func (*Runtime) SetResponseReader

func (r *Runtime) SetResponseReader(f ClientResponseFunc)

SetResponseReader changes the response reader implementation.

func (*Runtime) Submit

func (r *Runtime) Submit(operation *runtime.ClientOperation) (interface{}, error)

Submit a request and when there is a body on success it will turn that into the result all other things are turned into an api error for swagger which retains the status code

func (*Runtime) WithOpenTelemetry

func (r *Runtime) WithOpenTelemetry(opts ...OpenTelemetryOpt) runtime.ClientTransport

WithOpenTelemetry adds opentelemetry support to the provided runtime. A new client span is created for each request. If the context of the client operation does not contain an active span, no span is created. The provided opts are applied to each spans - for example to add global tags.

func (*Runtime) WithOpenTracing

func (r *Runtime) WithOpenTracing(opts ...opentracing.StartSpanOption) runtime.ClientTransport

WithOpenTracing adds opentracing support to the provided runtime. A new client span is created for each request. If the context of the client operation does not contain an active span, no span is created. The provided opts are applied to each spans - for example to add global tags.

type TLSClientOptions

TLSClientOptions to configure client authentication with mutual TLS

type TLSClientOptions struct {
    // Certificate is the path to a PEM-encoded certificate to be used for
    // client authentication. If set then Key must also be set.
    Certificate string

    // LoadedCertificate is the certificate to be used for client authentication.
    // This field is ignored if Certificate is set. If this field is set, LoadedKey
    // is also required.
    LoadedCertificate *x509.Certificate

    // Key is the path to an unencrypted PEM-encoded private key for client
    // authentication. This field is required if Certificate is set.
    Key string

    // LoadedKey is the key for client authentication. This field is required if
    // LoadedCertificate is set.
    LoadedKey crypto.PrivateKey

    // CA is a path to a PEM-encoded certificate that specifies the root certificate
    // to use when validating the TLS certificate presented by the server. If this field
    // (and LoadedCA) is not set, the system certificate pool is used. This field is ignored if LoadedCA
    // is set.
    CA string

    // LoadedCA specifies the root certificate to use when validating the server's TLS certificate.
    // If this field (and CA) is not set, the system certificate pool is used.
    LoadedCA *x509.Certificate

    // LoadedCAPool specifies a pool of RootCAs to use when validating the server's TLS certificate.
    // If set, it will be combined with the other loaded certificates (see LoadedCA and CA).
    // If neither LoadedCA or CA is set, the provided pool with override the system
    // certificate pool.
    // The caller must not use the supplied pool after calling TLSClientAuth.
    LoadedCAPool *x509.CertPool

    // ServerName specifies the hostname to use when verifying the server certificate.
    // If this field is set then InsecureSkipVerify will be ignored and treated as
    // false.
    ServerName string

    // InsecureSkipVerify controls whether the certificate chain and hostname presented
    // by the server are validated. If true, any certificate is accepted.
    InsecureSkipVerify bool

    // VerifyPeerCertificate, if not nil, is called after normal
    // certificate verification. It receives the raw ASN.1 certificates
    // provided by the peer and also any verified chains that normal processing found.
    // If it returns a non-nil error, the handshake is aborted and that error results.
    //
    // If normal verification fails then the handshake will abort before
    // considering this callback. If normal verification is disabled by
    // setting InsecureSkipVerify then this callback will be considered but
    // the verifiedChains argument will always be nil.
    VerifyPeerCertificate func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error

    // SessionTicketsDisabled may be set to true to disable session ticket and
    // PSK (resumption) support. Note that on clients, session ticket support is
    // also disabled if ClientSessionCache is nil.
    SessionTicketsDisabled bool

    // ClientSessionCache is a cache of ClientSessionState entries for TLS
    // session resumption. It is only used by clients.
    ClientSessionCache tls.ClientSessionCache
    // contains filtered or unexported fields
}