server

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: May 6, 2019 License: MIT Imports: 12 Imported by: 0

README

Voucher Server API Reference

This is a quick guide to the Voucher API, for developers who are looking at building in support for Voucher.

API Calls

POST /all

Run all of the enabled tests on the image referred to by the passed input.

Depending on the server's configuration, your client may need to use Basic Authentication to access this call.

This call accepts a JSON encoded object with the following fields:

Field Comment
image_url The URL of the image to test against. This should include the digest at the end of the URL.

For example:

{
   "image_url": "gcr.io/path/to/image@sha256:hashvalue",
}

The response will be a JSON encoded object containing the same fields, as well as a listing of the tests that ran, if they were successful or not, and any errors returned during the course of the test execution.

The response will have the following fields:

Field Comment
image The URL of the image to test against.
success A boolean, true if all tests passed, false if anyh failed.
results An array of objects, with one for each test that was executed.

The each of the objects in the results array are structured as follows:

Field Comment
name The name of the test.
success A boolean, true if all tests passed, false if any of the tests failed.
attested A boolean, true if an attestation was created for the check.
err Any error message or structure that was thrown during the course of the execution.
POST /{test name here}

Run the test specified in the URL.

For example, if the API call is POST /diy, this will run the DIY test and nothing else.

The input and output of this API call is identical to that described in POST /all, and like that call, authorization may be handled by Basic Authentication.

GET /services/ping

This call does nothing more than return a 200 Success status code. It is used to verify that the service is online.

No Authorization header is required.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Routes = []Route{
	{
		"All",
		"POST",
		"/all",
		HandleAll,
	},
	{
		"Individual Check",
		"POST",
		"/{check}",
		HandleIndividualCheck,
	},
	{
		"healthcheck: /services/ping",
		"GET",
		healthCheckPath,
		HandleHealthCheck,
	},
}

Routes an array of type Route

Functions

func HandleAll

func HandleAll(w http.ResponseWriter, r *http.Request)

HandleAll is a request handler that makes the calls to create all attestations, this includes DIY, Nobody, Snakeoil

func HandleHealthCheck

func HandleHealthCheck(w http.ResponseWriter, r *http.Request)

HandleHealthCheck is a request handler that returns HTTP Status Code 200 when it is called from shopify cloud

func HandleIndividualCheck

func HandleIndividualCheck(w http.ResponseWriter, r *http.Request)

HandleIndividualCheck is a request handler that executes an individual check and creates an attestation if applicable.

func LogError

func LogError(err error)

LogError logs server errors to stdout as Error

func LogRequests

func LogRequests(r *http.Request)

LogRequests logs the request fields to stdout as Info

func LogResult

func LogResult(response voucher.Response)

LogResult logs each test run as Info

func NewRouter

func NewRouter() *mux.Router

NewRouter creates a mux router with the specified routes and handlers

func Serve

func Serve(config *Config)

Serve creates a server on the specified port

Types

type Config

type Config struct {
	Port        int
	Timeout     int
	RequireAuth bool
	Username    string
	PassHash    string
}

Config is a structure which contains Server configuration.

func (*Config) Address

func (config *Config) Address() string

Address is the address of the Server.

func (*Config) TimeoutDuration

func (config *Config) TimeoutDuration() time.Duration

TimeoutDuration returns the configured timeout for this Server.

type Route

type Route struct {
	Name        string
	Method      string
	Path        string
	HandlerFunc http.HandlerFunc
}

Route stores metadata about a particular endpoint

Jump to

Keyboard shortcuts

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