rawhttp

package module
v0.1.74 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2024 License: MIT Imports: 19 Imported by: 67

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

View Source
const MaxResponseReadSizeDecompress = 10 * 1024 * 1024

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,
}

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(req *http.Request) (*http.Response, error)

Do sends a http request and returns a response

func DoRaw

func DoRaw(method, url, uripath string, headers map[string][]string, body io.Reader) (*http.Response, error)

DoRaw does a raw request with some configuration

func DoRawWithOptions added in v0.0.8

func DoRawWithOptions(method, url, uripath string, headers map[string][]string, body io.Reader, options *Options) (*http.Response, error)

DoRawWithOptions does a raw request with some configuration

func Dor

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

Dor sends a retryablehttp request and returns a response

func DumpRequestRaw added in v0.0.2

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

DumpRequestRaw to string

func Get

func Get(url string) (*http.Response, error)

Get makes a GET request to a given URL

func Post

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

Post makes a POST request to a given URL

func TlsHandshake added in v0.0.8

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 added in v0.1.18

func (c *Client) Close()

Close closes client and any resources it holds

func (*Client) Do

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

Do sends a http request and returns a response

func (*Client) DoRaw

func (c *Client) DoRaw(method, url, uripath string, headers map[string][]string, body io.Reader) (*http.Response, error)

DoRaw does a raw request with some configuration

func (*Client) DoRawWithOptions added in v0.0.2

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

DoRawWithOptions performs a raw request with additional options

func (*Client) Dor

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

Dor sends a retryablehttp request and returns the response

func (*Client) Get

func (c *Client) Get(url string) (*http.Response, error)

Get makes a GET request to a given URL

func (*Client) Head

func (c *Client) Head(url string) (*http.Response, error)

Head makes a HEAD request to a given URL

func (*Client) Post

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

Post makes a POST request to a given URL

type Conn

type Conn interface {
	client.Client
	io.Closer

	SetDeadline(time.Time) error
	SetReadDeadline(time.Time) error
	SetWriteDeadline(time.Time) error
	Release()
}

Conn is an interface implemented by a connection

type Dialer

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

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(options PipelineOptions) *PipelineClient

NewPipelineClient creates a new pipelined http request client

func (*PipelineClient) Do

func (c *PipelineClient) Do(req *http.Request) (*http.Response, error)

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) (*http.Response, error)

DoRaw does a raw request with some configuration

func (*PipelineClient) DoRawWithOptions added in v0.0.2

func (c *PipelineClient) DoRawWithOptions(method, url, uripath string, headers map[string][]string, body io.Reader, options PipelineOptions) (*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

func (c *PipelineClient) Get(url string) (*http.Response, error)

Get makes a GET request to a given URL

func (*PipelineClient) Head

func (c *PipelineClient) Head(url string) (*http.Response, error)

Head makes a HEAD request to a given URL

func (*PipelineClient) Post

func (c *PipelineClient) Post(url string, mimetype string, body io.Reader) (*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
}

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