/
middlewares.go
44 lines (35 loc) · 1.13 KB
/
middlewares.go
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
package handlers
import (
"io"
"github.com/pkg/errors"
"github.com/douchunrong/truss/gengokit"
"github.com/douchunrong/truss/gengokit/handlers/templates"
)
// MiddlewaresPath is the path to the middleware gotemplate file.
const MiddlewaresPath = "handlers/middlewares.gotemplate"
// NewMiddlewares returns a Renderable that renders the middlewares.go file.
func NewMiddlewares() *Middlewares {
var m Middlewares
return &m
}
// Middlewares satisfies the gengokit.Renderable interface to render
// middlewares.
type Middlewares struct {
prev io.Reader
}
// Load loads the previous version of the middleware file.
func (m *Middlewares) Load(prev io.Reader) {
m.prev = prev
}
// Render creates the middlewares.go file. With no previous version it renders
// the templates, if there was a previous version loaded in, it passes that
// through.
func (m *Middlewares) Render(path string, data *gengokit.Data) (io.Reader, error) {
if path != MiddlewaresPath {
return nil, errors.Errorf("cannot render unknown file: %q", path)
}
if m.prev != nil {
return m.prev, nil
}
return data.ApplyTemplate(templates.Middlewares, "Middlewares")
}