@ -9,18 +9,17 @@ import (
"github.com/analogj/scrutiny/webapp/backend/pkg/web/middleware"
"github.com/analogj/scrutiny/webapp/backend/pkg/web/middleware"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus"
"io"
"net/http"
"net/http"
"os"
"path/filepath"
"path/filepath"
"strings"
"strings"
)
)
type AppEngine struct {
type AppEngine struct {
Config config . Interface
Config config . Interface
Logger * logrus . Entry
}
}
func ( ae * AppEngine ) Setup ( logger logrus . FieldLogger ) * gin . Engine {
func ( ae * AppEngine ) Setup ( logger * logrus . Entry ) * gin . Engine {
r := gin . New ( )
r := gin . New ( )
r . Use ( middleware . LoggerMiddleware ( logger ) )
r . Use ( middleware . LoggerMiddleware ( logger ) )
@ -36,6 +35,10 @@ func (ae *AppEngine) Setup(logger logrus.FieldLogger) *gin.Engine {
api := base . Group ( "/api" )
api := base . Group ( "/api" )
{
{
api . GET ( "/health" , func ( c * gin . Context ) {
api . GET ( "/health" , func ( c * gin . Context ) {
//TODO:
// check if the /web folder is populated.
// check if access to influxdb
// check if access to sqlitedb.
c . JSON ( http . StatusOK , gin . H {
c . JSON ( http . StatusOK , gin . H {
"success" : true ,
"success" : true ,
} )
} )
@ -77,26 +80,6 @@ func (ae *AppEngine) Start() error {
gin . SetMode ( gin . DebugMode )
gin . SetMode ( gin . DebugMode )
}
}
logger := logrus . New ( )
//set default log level
logLevel , err := logrus . ParseLevel ( ae . Config . GetString ( "log.level" ) )
if err != nil {
return err
}
logger . SetLevel ( logLevel )
//set the log file if present
if len ( ae . Config . GetString ( "log.file" ) ) != 0 {
logFile , err := os . OpenFile ( ae . Config . GetString ( "log.file" ) , os . O_CREATE | os . O_WRONLY , 0644 )
defer logFile . Close ( )
if err != nil {
logrus . Errorf ( "Failed to open log file %s for output: %s" , ae . Config . GetString ( "log.file" ) , err )
return err
}
//configure the logrus default
logger . SetOutput ( io . MultiWriter ( os . Stderr , logFile ) )
}
//check if the database parent directory exists, fail here rather than in a handler.
//check if the database parent directory exists, fail here rather than in a handler.
if ! utils . FileExists ( filepath . Dir ( ae . Config . GetString ( "web.database.location" ) ) ) {
if ! utils . FileExists ( filepath . Dir ( ae . Config . GetString ( "web.database.location" ) ) ) {
return errors . ConfigValidationError ( fmt . Sprintf (
return errors . ConfigValidationError ( fmt . Sprintf (
@ -104,7 +87,7 @@ func (ae *AppEngine) Start() error {
filepath . Dir ( ae . Config . GetString ( "web.database.location" ) ) ) )
filepath . Dir ( ae . Config . GetString ( "web.database.location" ) ) ) )
}
}
r := ae . Setup ( l ogger)
r := ae . Setup ( ae. L ogger)
return r . Run ( fmt . Sprintf ( "%s:%s" , ae . Config . GetString ( "web.listen.host" ) , ae . Config . GetString ( "web.listen.port" ) ) )
return r . Run ( fmt . Sprintf ( "%s:%s" , ae . Config . GetString ( "web.listen.host" ) , ae . Config . GetString ( "web.listen.port" ) ) )
}
}