main.go 1.55 KB
/*
This is some stuff...

Authors:
Georg Hopp <georg@steffers.org>

Changes:
2018-09-30 [Georg Hopp] File created.

Copyright © 2018 Georg Hopp

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package test

import (
	"encoding/json"
	"net/http"
	"strings"
	"os"
	"io"
)

type ApiHandler struct {}

type version struct {
	Version string `json:"Version"`
	BuildCommit string `json:"BuildCommint"`
	BuildTime string `json:"BuildTimestamp"`
}

func (handler *ApiHandler) ServeHTTP(
	response ResponseWriter,
	request *Request,
) {
	dirs := strings.split(request.URL.Path, "/")
	switch dirs[0] {
	case "version":
		v, err := json.Marshal(
			version{
				VERSION,
				REVISION,
				BUILD_TIME,
			},
		)
		if err != nil {
			http.Error(w, "Unable to encode version information", 500)
			return
		}
		io.WriteString(w, string(v[:]))
	default:
		http.NotFound(w, req)
		return
	}
}

func router() {
	http.HandleFunc(
		"/api/0.0.1/",
		http.StripPrefix("/api/0.0.1/", ApiHandler{}),
	)
}

// vim: ts=4 sts=4 sw=4 noet tw=72: