jsonclient

package
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2024 License: Apache-2.0 Imports: 19 Imported by: 308

Documentation

Overview

Package jsonclient provides a simple client for fetching and parsing JSON CT structures from a log.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type JSONClient

type JSONClient struct {
	Verifier *ct.SignatureVerifier // nil for no verification (e.g. no public key available)
	// contains filtered or unexported fields
}

JSONClient provides common functionality for interacting with a JSON server that uses cryptographic signatures.

func New

func New(uri string, hc *http.Client, opts Options) (*JSONClient, error)

New constructs a new JSONClient instance, for the given base URI, using the given http.Client object (if provided) and the Options object. If opts does not specify a public key, signatures will not be verified.

func (*JSONClient) BaseURI added in v1.0.17

func (c *JSONClient) BaseURI() string

BaseURI returns the base URI that the JSONClient makes queries to.

func (*JSONClient) GetAndParse

func (c *JSONClient) GetAndParse(ctx context.Context, path string, params map[string]string, rsp interface{}) (*http.Response, []byte, error)

GetAndParse makes a HTTP GET call to the given path, and attempts to parse the response as a JSON representation of the rsp structure. Returns the http.Response, the body of the response, and an error (which may be of type RspError if the HTTP response was available).

func (*JSONClient) PostAndParse

func (c *JSONClient) PostAndParse(ctx context.Context, path string, req, rsp interface{}) (*http.Response, []byte, error)

PostAndParse makes a HTTP POST call to the given path, including the request parameters, and attempts to parse the response as a JSON representation of the rsp structure. Returns the http.Response, the body of the response, and an error (which may be of type RspError if the HTTP response was available).

func (*JSONClient) PostAndParseWithRetry

func (c *JSONClient) PostAndParseWithRetry(ctx context.Context, path string, req, rsp interface{}) (*http.Response, []byte, error)

PostAndParseWithRetry makes a HTTP POST call, but retries (with backoff) on retryable errors; the caller should set a deadline on the provided context to prevent infinite retries. Return values are as for PostAndParse.

type Logger

type Logger interface {
	// Printf formats and logs a message
	Printf(string, ...interface{})
}

Logger is a simple logging interface used to log internal errors and warnings

type Options

type Options struct {
	// Interface to use for logging warnings and errors, if nil the
	// standard library log package will be used.
	Logger Logger
	// PEM format public key to use for signature verification.
	PublicKey string
	// DER format public key to use for signature verification.
	PublicKeyDER []byte
	// UserAgent, if set, will be sent as the User-Agent header with each request.
	UserAgent string
}

Options are the options for creating a new JSONClient.

func (*Options) ParsePublicKey

func (opts *Options) ParsePublicKey() (crypto.PublicKey, error)

ParsePublicKey parses and returns the public key contained in opts. If both opts.PublicKey and opts.PublicKeyDER are set, PublicKeyDER is used. If neither is set, nil will be returned.

type RspError added in v1.1.0

type RspError struct {
	Err        error
	StatusCode int
	Body       []byte
}

RspError represents an error that occurred when processing a response from a server, and also includes key details from the http.Response that triggered the error.

func (RspError) Error added in v1.1.0

func (e RspError) Error() string

Error formats the RspError instance, focusing on the error.

Jump to

Keyboard shortcuts

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