client

package
v0.9.4 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2022 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type HTTPClient

type HTTPClient interface {
	Do(req *http.Request) (resp *http.Response, err error)
}

type HTTPTransport

type HTTPTransport struct {
	Packer RequestPacker
	Client HTTPClient
	Scheme string
	Server string
}

func (HTTPTransport) RoundTrip

func (h HTTPTransport) RoundTrip(ctx context.Context, question *mdns.Msg) (resp *mdns.Msg, err error)

type RequestPacker

type RequestPacker interface {
	Pack(queryURL *url.URL, question *mdns.Msg) (req *http.Request, err error)
}
var (
	RequestPackerPOST RequestPacker = RequestPackerFunc(func(queryURL *url.URL, question *mdns.Msg) (req *http.Request, err error) {
		if data, err := question.Pack(); err != nil {
			return nil, err
		} else {
			if req, err = http.NewRequest(http.MethodPost, queryURL.String(), bytes.NewReader(data)); err != nil {
				return nil, err
			}
			req.Header.Set("Content-Type", "application/dns-message")
			return req, nil
		}
	})

	RequestPackerGET RequestPacker = RequestPackerFunc(func(queryURL *url.URL, question *mdns.Msg) (req *http.Request, err error) {
		var (
			data       []byte
			encodedMsg string
		)
		if data, err = question.Pack(); err != nil {
			return nil, err
		}
		encodedMsg = base64.URLEncoding.EncodeToString(data)
		queryValues := queryURL.Query()
		queryValues.Set("dns", encodedMsg)
		queryURL.RawQuery = queryValues.Encode()

		return http.NewRequest(http.MethodGet, queryURL.String(), nil)
	})
)

type RequestPackerFunc

type RequestPackerFunc func(queryURL *url.URL, question *mdns.Msg) (req *http.Request, err error)

func (RequestPackerFunc) Pack

func (f RequestPackerFunc) Pack(queryURL *url.URL, question *mdns.Msg) (req *http.Request, err error)

type Resolver

type Resolver struct {
	Transport RoundTripper
}

func (Resolver) Do

func (r Resolver) Do(ctx context.Context, msg *mdns.Msg) (resp *mdns.Msg, err error)

func (Resolver) LookupA

func (r Resolver) LookupA(ctx context.Context, host string) (res []net.IP, err error)

func (Resolver) LookupAAAA

func (r Resolver) LookupAAAA(ctx context.Context, host string) (res []net.IP, err error)

func (Resolver) LookupMX

func (r Resolver) LookupMX(ctx context.Context, domain string) (res []string, err error)

func (Resolver) LookupPTR

func (r Resolver) LookupPTR(ctx context.Context, inAddrArpa string) (res []string, err error)

func (Resolver) Question

func (r Resolver) Question(ctx context.Context, question dns.Question) (resp *mdns.Msg, err error)

type RoundTripper

type RoundTripper interface {
	RoundTrip(ctx context.Context, question *mdns.Msg) (resp *mdns.Msg, err error)
}

type TraditionalTransport

type TraditionalTransport struct {
	Network, Address string
	Dial             func(ctx context.Context, network, address string) (net.Conn, error)
	// contains filtered or unexported fields
}

func (*TraditionalTransport) RoundTrip

func (t *TraditionalTransport) RoundTrip(ctx context.Context, question *mdns.Msg) (resp *mdns.Msg, err error)

Jump to

Keyboard shortcuts

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