aboutsummaryrefslogtreecommitdiff
path: root/instance.go
blob: 5fa1b6c304a68c869d899eba036eb7f2dda3113f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package stfe

import (
	"time"

	"net/http"

	"github.com/golang/glog"
	"github.com/google/trillian"

	ctutil "github.com/google/certificate-transparency-go/trillian/util"
)

// instance groups information about a specific STFE instance.
type instance struct {
	prefix     string
	logID      int64
	client     trillian.TrillianLogClient
	deadline   time.Duration
	timesource ctutil.TimeSource
}

// NewInstance returns a new STFE instance
func NewInstance(prefix string, id int64, client trillian.TrillianLogClient, deadline time.Duration, timesource ctutil.TimeSource) *instance {
	return &instance{
		prefix:     prefix,
		logID:      id,
		client:     client,
		deadline:   deadline,
		timesource: timesource,
	}
}

// addEndpoints registers STFE handler functions for the respective HTTP paths
func (i *instance) AddEndpoints(mux *http.ServeMux) {
	for _, endpoint := range []struct {
		path    string
		handler appHandler
	}{
		{i.prefix + "/add-entry", appHandler{instance: i, handler: addEntry, endpoint: "add-entry", method: http.MethodPost}},
		{i.prefix + "/get-entries", appHandler{instance: i, handler: getEntries, endpoint: "get-entries", method: http.MethodGet}},
		{i.prefix + "/get-anchors", appHandler{instance: i, handler: getAnchors, endpoint: "get-anchors", method: http.MethodGet}},
		{i.prefix + "/get-proof-by-hash", appHandler{instance: i, handler: getProofByHash, endpoint: "get-proof-by-hash", method: http.MethodGet}},
		{i.prefix + "/get-consistency-proof", appHandler{instance: i, handler: getConsistencyProof, endpoint: "get-consistency-proof", method: http.MethodGet}},
		{i.prefix + "/get-sth", appHandler{instance: i, handler: getSth, endpoint: "get-sth", method: http.MethodGet}},
	} {
		glog.Infof("adding handler for %v", endpoint.path)
		mux.Handle(endpoint.path, endpoint.handler)
	}
}