initial
This commit is contained in:
commit
282e902b0a
|
@ -0,0 +1 @@
|
||||||
|
pooteeweet
|
|
@ -0,0 +1,27 @@
|
||||||
|
VERSION := $(shell git rev-parse --short HEAD)
|
||||||
|
BUILDTIME := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ')
|
||||||
|
BUILDUSER := $(shell whoami)
|
||||||
|
BUILDHOST := $(shell hostname -s)
|
||||||
|
BUILDARCH := $(shell uname -m)
|
||||||
|
|
||||||
|
GOLDFLAGS += -X main.Version=$(VERSION)
|
||||||
|
GOLDFLAGS += -X main.Buildtime=$(BUILDTIME)
|
||||||
|
GOLDFLAGS += -X main.Builduser=$(BUILDUSER)@$(BUILDHOST)
|
||||||
|
GOLDFLAGS += -X main.Buildarch=$(BUILDARCH)
|
||||||
|
GOFLAGS = -ldflags "$(GOLDFLAGS)"
|
||||||
|
|
||||||
|
default: run
|
||||||
|
|
||||||
|
run: build
|
||||||
|
./pooteeweet
|
||||||
|
|
||||||
|
build: ./pooteeweet
|
||||||
|
|
||||||
|
./pooteeweet: *.go
|
||||||
|
go build -o $@ $(GOFLAGS) .
|
||||||
|
|
||||||
|
fmt:
|
||||||
|
go fmt *.go
|
||||||
|
|
||||||
|
test:
|
||||||
|
docker build -t sneak/pooteeweet .
|
|
@ -0,0 +1,36 @@
|
||||||
|
//3456789112345676892123456789312345678941234567895123456789612345678971234567898
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
var Version string
|
||||||
|
var Buildtime string
|
||||||
|
var Builduser string
|
||||||
|
var Buildarch string
|
||||||
|
var log *logrus.Logger
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
initLogging()
|
||||||
|
serve()
|
||||||
|
}
|
||||||
|
|
||||||
|
func initLogging() {
|
||||||
|
log = logrus.New()
|
||||||
|
log.SetReportCaller(true)
|
||||||
|
log.SetLevel(logrus.DebugLevel)
|
||||||
|
log.SetFormatter(UTCFormatter{&logrus.JSONFormatter{}})
|
||||||
|
}
|
||||||
|
|
||||||
|
func serve() {
|
||||||
|
server := setupHttpServer()
|
||||||
|
log.Fatal(server.ListenAndServe())
|
||||||
|
}
|
||||||
|
|
||||||
|
type UTCFormatter struct {
|
||||||
|
logrus.Formatter
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u UTCFormatter) Format(e *logrus.Entry) ([]byte, error) {
|
||||||
|
e.Time = e.Time.UTC()
|
||||||
|
return u.Formatter.Format(e)
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
//3456789112345676892123456789312345678941234567895123456789612345678971234567898
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "flag"
|
||||||
|
import "net/http"
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
import "github.com/gorilla/mux"
|
||||||
|
import "github.com/justinas/alice"
|
||||||
|
import "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
func LoggerMiddleware(h http.Handler) http.Handler {
|
||||||
|
return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
|
||||||
|
startTime := time.Now().UTC()
|
||||||
|
h.ServeHTTP(writer, request)
|
||||||
|
log.WithFields(logrus.Fields{
|
||||||
|
"method": request.Method,
|
||||||
|
"path": request.URL.Path,
|
||||||
|
"duration_ms": time.Since(startTime).Milliseconds(),
|
||||||
|
}).Info("pageload")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupHttpRouter(staticdir string) http.Handler {
|
||||||
|
r := mux.NewRouter()
|
||||||
|
|
||||||
|
// This will serve files under
|
||||||
|
// http://localhost:8000/static/<filename>
|
||||||
|
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir(staticdir))))
|
||||||
|
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupHttpServer() *http.Server {
|
||||||
|
var dir string
|
||||||
|
|
||||||
|
flag.StringVar(&dir, "dir", ".", "the directory to serve files from. Defaults to the current dir")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
router := setupHttpRouter(dir)
|
||||||
|
|
||||||
|
server := alice.New(LoggerMiddleware).Then(router)
|
||||||
|
|
||||||
|
listener := &http.Server{
|
||||||
|
Handler: server,
|
||||||
|
Addr: ":8000",
|
||||||
|
WriteTimeout: 15 * time.Second,
|
||||||
|
ReadTimeout: 15 * time.Second,
|
||||||
|
}
|
||||||
|
return listener
|
||||||
|
}
|
Loading…
Reference in New Issue