58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package api
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/oktopUSP/backend/services/bulkdata/internal/api/cors"
|
|
"github.com/oktopUSP/backend/services/bulkdata/internal/api/handler"
|
|
"github.com/oktopUSP/backend/services/bulkdata/internal/api/middleware"
|
|
"github.com/oktopUSP/backend/services/bulkdata/internal/bridge"
|
|
"github.com/oktopUSP/backend/services/bulkdata/internal/config"
|
|
)
|
|
|
|
type Api struct {
|
|
port string
|
|
handler handler.Handler
|
|
}
|
|
|
|
const REQUEST_TIMEOUT = time.Second * 30
|
|
|
|
func NewApi(c config.RestApi, b *bridge.Bridge) Api {
|
|
return Api{
|
|
port: c.Port,
|
|
handler: handler.NewHandler(c.Ctx, b),
|
|
}
|
|
}
|
|
|
|
func (a *Api) StartApi() {
|
|
r := mux.NewRouter()
|
|
r.HandleFunc("/healthcheck", a.handler.Healthcheck).Methods("GET")
|
|
r.HandleFunc("/", a.handler.Data).Methods("POST")
|
|
|
|
/* ----- Middleware for requests which requires user to be authenticated ---- */
|
|
r.Use(func(handler http.Handler) http.Handler {
|
|
return middleware.Middleware(handler)
|
|
})
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
corsOpts := cors.GetCorsConfig()
|
|
|
|
srv := &http.Server{
|
|
Addr: "0.0.0.0:" + a.port,
|
|
WriteTimeout: time.Second * 60,
|
|
ReadTimeout: time.Second * 60,
|
|
IdleTimeout: time.Second * 60,
|
|
Handler: corsOpts.Handler(r),
|
|
}
|
|
|
|
go func() {
|
|
if err := srv.ListenAndServe(); err != nil {
|
|
log.Println(err)
|
|
}
|
|
}()
|
|
log.Println("Running Bulk Data Collector HTTP Server at port", a.port)
|
|
}
|