start on api

Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
This commit is contained in:
Evan Hazlett 2017-07-29 10:11:50 -04:00
parent 2c1baa96bb
commit 7574b334cc
No known key found for this signature in database
GPG key ID: A519480096146526
364 changed files with 166263 additions and 1 deletions

12
server/handler.go Normal file
View file

@ -0,0 +1,12 @@
package server
import (
"net/http"
"github.com/ehazlett/element/version"
)
func (s *Server) getRequestHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("X-Content-Server", "element "+version.FullVersion())
w.WriteHeader(http.StatusOK)
}

12
server/routes.go Normal file
View file

@ -0,0 +1,12 @@
package server
import (
"github.com/gorilla/mux"
)
func (s *Server) router() (*mux.Router, error) {
r := mux.NewRouter()
r.HandleFunc("/", s.getRequestHandler).Methods("GET")
return r, nil
}

44
server/server.go Normal file
View file

@ -0,0 +1,44 @@
package server
import (
"net/http"
"github.com/ehazlett/element/config"
"github.com/prometheus/client_golang/prometheus"
"github.com/sirupsen/logrus"
)
type Server struct {
cfg *config.Config
}
func NewServer(cfg *config.Config) (*Server, error) {
return &Server{
cfg: cfg,
}, nil
}
func (s *Server) Run() error {
if s.cfg.EnableMetrics {
// start prometheus listener
http.Handle("/metrics", prometheus.Handler())
go func() {
if err := http.ListenAndServe(s.cfg.ListenAddr, nil); err != nil {
logrus.Error("unable to start metric listener: %s", err)
}
}()
}
r, err := s.router()
if err != nil {
return err
}
http.Handle("/", r)
if err := http.ListenAndServe(s.cfg.ListenAddr, nil); err != nil {
return err
}
return nil
}