You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.4 KiB
83 lines
2.4 KiB
3 years ago
|
package main
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/prometheus/client_golang/prometheus"
|
||
|
"github.com/rs/cors"
|
||
|
"github.com/Cyclops-Labs/cyclops-4-hpc.git/services/billing/models"
|
||
|
"github.com/Cyclops-Labs/cyclops-4-hpc.git/services/billing/restapi"
|
||
|
"github.com/Cyclops-Labs/cyclops-4-hpc.git/services/billing/server/bulkManager"
|
||
|
"github.com/Cyclops-Labs/cyclops-4-hpc.git/services/billing/server/invoiceManager"
|
||
|
"github.com/Cyclops-Labs/cyclops-4-hpc.git/services/billing/server/statusManager"
|
||
|
"github.com/Cyclops-Labs/cyclops-4-hpc.git/services/billing/server/triggerManager"
|
||
|
l "gitlab.com/cyclops-utilities/logging"
|
||
|
)
|
||
|
|
||
|
// getService is the uService instantiation function. A sample of the elements
|
||
|
// that need to be personalized for a new uService are provided.
|
||
|
// Returns:
|
||
|
// - hadler: return the http.handler with the swagger and (optionally) the CORS
|
||
|
// configured according to the config provided
|
||
|
// - e: in case of any error it's propagated to the invoker
|
||
|
func getService() (handler http.Handler, register *prometheus.Registry, e error) {
|
||
|
|
||
|
l.Trace.Printf("[MAIN] Intializing service [ %v ] handler\n", strings.Title(service))
|
||
|
|
||
|
// TABLE0,...,N have to be customized
|
||
|
db := dbStart(&models.Invoice{}, &models.BillRun{})
|
||
|
mon := statusManager.New(db)
|
||
|
|
||
|
// Prometheus Metrics linked to dbParameter
|
||
|
db.Metrics, register = prometheusStart()
|
||
|
|
||
|
// cache linked to the dbParameter
|
||
|
db.Cache = cacheStart(db.Metrics["cache"])
|
||
|
|
||
|
bp := getBasePath()
|
||
|
|
||
|
// Parts of the service HERE
|
||
|
b := bulkManager.New(db, mon)
|
||
|
i := invoiceManager.New(db, mon, bp)
|
||
|
t := triggerManager.New(db, mon, bp)
|
||
|
|
||
|
// Initiate the http handler, with the objects that are implementing the business logic.
|
||
|
h, e := restapi.Handler(restapi.Config{
|
||
|
StatusManagementAPI: mon,
|
||
|
TriggerManagementAPI: t,
|
||
|
BulkManagementAPI: b,
|
||
|
InvoiceManagementAPI: i,
|
||
|
Logger: l.Info.Printf,
|
||
|
AuthKeycloak: AuthKeycloak,
|
||
|
AuthAPIKeyHeader: AuthAPIKey,
|
||
|
AuthAPIKeyParam: AuthAPIKey,
|
||
|
})
|
||
|
|
||
|
if e != nil {
|
||
|
|
||
|
return
|
||
|
|
||
|
}
|
||
|
|
||
|
handler = h
|
||
|
|
||
|
// CORS
|
||
|
if cfg.General.CORSEnabled {
|
||
|
|
||
|
l.Trace.Printf("[MAIN] Enabling CORS for the service [ %v ]\n", strings.Title(service))
|
||
|
|
||
|
handler = cors.New(
|
||
|
cors.Options{
|
||
|
Debug: (cfg.General.LogLevel == "DEBUG") || (cfg.General.LogLevel == "TRACE"),
|
||
|
AllowedOrigins: cfg.General.CORSOrigins,
|
||
|
AllowedHeaders: cfg.General.CORSHeaders,
|
||
|
AllowedMethods: cfg.General.CORSMethods,
|
||
|
}).Handler(h)
|
||
|
|
||
|
}
|
||
|
|
||
|
return
|
||
|
|
||
|
}
|