Add api process
parent
5f1dd4bec8
commit
317a4eabbd
@ -0,0 +1,19 @@
|
||||
# build image
|
||||
FROM golang:1.14.0-alpine as builder
|
||||
|
||||
RUN apk update && apk upgrade && \
|
||||
apk add --no-cache bash git openssh
|
||||
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
# Test then build app
|
||||
RUN go build -v github.com/creekorful/trandoshan/cmd/api
|
||||
|
||||
# runtime image
|
||||
FROM alpine:latest
|
||||
COPY --from=builder /app/api /app/
|
||||
|
||||
WORKDIR /app/
|
||||
|
||||
ENTRYPOINT ["./api"]
|
@ -0,0 +1,13 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/creekorful/trandoshan/internal/api"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := api.GetApp()
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
tlog "github.com/creekorful/trandoshan/internal/log"
|
||||
"github.com/elastic/go-elasticsearch/v7"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/gommon/log"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
// GetApp return the api app
|
||||
func GetApp() *cli.App {
|
||||
return &cli.App{
|
||||
Name: "trandoshan-api",
|
||||
Version: "0.0.1",
|
||||
Usage: "", // TODO
|
||||
Flags: []cli.Flag{
|
||||
tlog.GetLogFlag(),
|
||||
&cli.StringFlag{
|
||||
Name: "elasticsearch-uri",
|
||||
Usage: "URI to the Elasticsearch server",
|
||||
Required: true,
|
||||
},
|
||||
},
|
||||
Action: execute,
|
||||
}
|
||||
}
|
||||
|
||||
func execute(ctx *cli.Context) error {
|
||||
e := echo.New()
|
||||
e.HideBanner = true
|
||||
|
||||
// Configure logger
|
||||
switch ctx.String("log-level") {
|
||||
case "debug":
|
||||
e.Logger.SetLevel(log.DEBUG)
|
||||
case "info":
|
||||
e.Logger.SetLevel(log.INFO)
|
||||
case "warn":
|
||||
e.Logger.SetLevel(log.WARN)
|
||||
case "error":
|
||||
e.Logger.SetLevel(log.ERROR)
|
||||
}
|
||||
|
||||
e.Logger.Infof("Starting trandoshan-api v%s", ctx.App.Version)
|
||||
|
||||
// Create Elasticsearch client
|
||||
es, err := elasticsearch.NewClient(elasticsearch.Config{Addresses: []string{ctx.String("elasticsearch-uri")}})
|
||||
if err != nil {
|
||||
logrus.Errorf("Error while creating elasticsearch client: %s", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Add endpoints
|
||||
e.GET("/resources", getResources(es))
|
||||
e.POST("/resources", addResource(es))
|
||||
|
||||
logrus.Info("Successfully initialized trandoshan-api. Waiting for requests")
|
||||
|
||||
return e.Start(":8080")
|
||||
}
|
||||
|
||||
func getResources(es *elasticsearch.Client) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
return nil // TODO
|
||||
}
|
||||
}
|
||||
|
||||
func addResource(es *elasticsearch.Client) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
return nil // TODO
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue