pkg

package module
v0.0.0-...-bdbce63 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2024 License: MIT Imports: 21 Imported by: 0

README

rawhttp

License Go version Release Checks GoDoc

rawhttp is a Go package for making HTTP requests in a raw way.

Library Usage

A simple example to get started with rawhttp is available at examples. For documentation, please refer godoc

Note

rawhttp internally uses fastdialer to dial connections and fastdialer has a disk cache for DNS lookups. While using rawhttp .Close() method should be called at end of the program to remove temporary files created by fastdialer.

License

rawhttp is distributed under MIT License

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultClient = Client{

	Options: DefaultOptions,
	// contains filtered or unexported fields
}

DefaultClient is the default HTTP client for doing raw requests

View Source
var DefaultOptions = &Options{
	Timeout:                30 * time.Second,
	FollowRedirects:        true,
	MaxRedirects:           10,
	AutomaticHostHeader:    true,
	AutomaticContentLength: true,
}

DefaultOptions is the default configuration options for the client

View Source
var DefaultPipelineOptions = PipelineOptions{
	Timeout:                30 * time.Second,
	MaxConnections:         5,
	MaxPendingRequests:     100,
	AutomaticHostHeader:    true,
	AutomaticContentLength: true,
}

DefaultPipelineOptions is the default options for pipelined http client

Functions

func AutomaticContentLength

func AutomaticContentLength(enable bool)

AutomaticContentLength performs automatic calculation of request content length.

func AutomaticHostHeader

func AutomaticHostHeader(enable bool)

AutomaticHostHeader sets Host header for requests automatically

func Do

func Do(conn Conn, req *http.Request) (*client.Request, *http.Response, error)

Do sends a http request and returns a response

func DoRaw

func DoRaw(conn Conn, method, url, uripath string, headers map[string][]string, body io.Reader, rawBuffer []byte) (*client.Request, *http.Response, error)

DoRaw does a raw request with some configuration

func DoRawWithOptions

func DoRawWithOptions(conn Conn, method, url, uripath string, headers map[string][]string, body io.Reader, rawBuffer []byte, options *Options) (*client.Request, *http.Response, error)

DoRawWithOptions does a raw request with some configuration

func Dor

func Dor(conn Conn, req *retryablehttp.Request) (*client.Request, *http.Response, error)

Dor sends a retryablehttp request and returns a response

func DumpRequestRaw

func DumpRequestRaw(method, url, uripath string, headers map[string][]string, body io.Reader, rawBuffer []byte, options *Options) ([]byte, error)

DumpRequestRaw to string

func Get

func Get(conn Conn, url string) (*client.Request, *http.Response, error)

Get makes a GET request to a given URL

func Post

func Post(conn Conn, url string, mimetype string, r io.Reader) (*client.Request, *http.Response, error)

Post makes a POST request to a given URL

func TlsHandshake

func TlsHandshake(conn net.Conn, addr string, timeout time.Duration) (net.Conn, error)

TlsHandshake tls handshake on a plain connection

Types

type Client

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

Client is a client for making raw http requests with go

func NewClient

func NewClient(options *Options) *Client

NewClient creates a new rawhttp client with provided options

func (*Client) Close

func (c *Client) Close()

Close closes client and any resources it holds

func (*Client) CreateConnection

func (c *Client) CreateConnection(url string, options *Options) (Conn, error)

func (*Client) Do

func (c *Client) Do(conn Conn, req *http.Request) (*client.Request, *http.Response, error)

Do sends a http request and returns a response

func (*Client) DoRaw

func (c *Client) DoRaw(conn Conn, method, url, uripath string, headers map[string][]string, body io.Reader, rawBuffer []byte) (*client.Request, *http.Response, error)

DoRaw does a raw request with some configuration

func (*Client) DoRawWithOptions

func (c *Client) DoRawWithOptions(conn Conn, method, url, uripath string,
	headers map[string][]string, body io.Reader, rawBuffer []byte, options *Options) (*client.Request, *http.Response, error)

DoRawWithOptions performs a raw request with additional options

func (*Client) Dor

func (c *Client) Dor(conn Conn, req *retryablehttp.Request) (*client.Request, *http.Response, error)

Dor sends a retryablehttp request and returns the response

func (*Client) Get

func (c *Client) Get(conn Conn, url string) (*client.Request, *http.Response, error)

Get makes a GET request to a given URL

func (*Client) Head

func (c *Client) Head(conn Conn, url string) (*client.Request, *http.Response, error)

Head makes a HEAD request to a given URL

func (*Client) Post

func (c *Client) Post(conn Conn, url string, mimetype string, body io.Reader) (*client.Request, *http.Response, error)

Post makes a POST request to a given URL

type Conn

type Conn interface {
	client.Client
	io.Closer

	SetTimeout(duration time.Duration)
	Release()
	Stop() error
}

Conn is an interface implemented by a connection

type Dialer

type Dialer interface {
	Dial(protocol, addr string, options *Options) (Conn, error) // Dial dials a remote http server returning a Conn.
	DialWithProxy(protocol, addr, proxyURL string, timeout time.Duration, options *Options) (Conn, error)
	DialTimeout(protocol, addr string, timeout time.Duration, options *Options) (Conn, error) // Dial dials a remote http server with timeout returning a Conn.
}

Dialer can dial a remote HTTP server.

type Options

type Options struct {
	Timeout                time.Duration
	FollowRedirects        bool
	MaxRedirects           int
	AutomaticHostHeader    bool
	AutomaticContentLength bool
	CustomHeaders          client.Headers
	ForceReadAllBody       bool // ignores content length and reads all body
	CustomRawBytes         []byte
	Proxy                  string
	ProxyDialTimeout       time.Duration
	SNI                    string
	FastDialer             *fastdialer.Dialer
}

Options contains configuration options for rawhttp client

type PipelineClient

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

PipelineClient is a client for making pipelined http requests

func NewPipelineClient

func NewPipelineClient(ctx context.Context, options PipelineOptions) *PipelineClient

NewPipelineClient creates a new pipelined http request client

func (*PipelineClient) Do

Do sends a http request and returns a response

func (*PipelineClient) DoRaw

func (c *PipelineClient) DoRaw(method, url, uripath string, headers map[string][]string, body io.Reader, raw []byte) (*clientpipeline.Request, *http.Response, error)

DoRaw does a raw request with some configuration

func (*PipelineClient) DoRawWithOptions

func (c *PipelineClient) DoRawWithOptions(method, url, uripath string, headers map[string][]string, body io.Reader, raw []byte, options PipelineOptions) (*clientpipeline.Request, *http.Response, error)

DoRawWithOptions performs a raw request with additional options

func (*PipelineClient) Dor

Dor sends a retryablehttp request and returns a response

func (*PipelineClient) Get

Get makes a GET request to a given URL

func (*PipelineClient) Head

Head makes a HEAD request to a given URL

func (*PipelineClient) Post

func (c *PipelineClient) Post(url string, mimetype string, body io.Reader) (*clientpipeline.Request, *http.Response, error)

Post makes a POST request to a given URL

type PipelineOptions

type PipelineOptions struct {
	Dialer                 clientpipeline.DialFunc
	Host                   string
	Timeout                time.Duration
	MaxConnections         int
	MaxPendingRequests     int
	AutomaticHostHeader    bool
	AutomaticContentLength bool
}

PipelineOptions contains options for pipelined http client

type RedirectStatus

type RedirectStatus struct {
	FollowRedirects bool
	MaxRedirects    int
	Current         int
}

RedirectStatus is the current redirect status for the request

type StatusError

type StatusError struct {
	client.Status
}

StatusError is a HTTP status error object

func (*StatusError) Error

func (s *StatusError) Error() string

Directories

Path Synopsis
example

Jump to

Keyboard shortcuts

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