Files
be.ems/lib/routes/routes.go
2023-08-14 17:02:50 +08:00

253 lines
10 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package routes
import (
"net/http"
// "log"
"ems.agt/features/aaaa"
"ems.agt/features/cm"
"ems.agt/features/dbrest"
"ems.agt/features/file"
"ems.agt/features/fm"
"ems.agt/features/maintenance"
"ems.agt/features/mml"
"ems.agt/features/nbi"
"ems.agt/features/pm"
"ems.agt/features/security"
"ems.agt/features/state"
"ems.agt/features/trace"
"ems.agt/lib/midware"
"ems.agt/lib/services"
"github.com/gorilla/mux"
)
type Router struct {
Method string
Pattern string
Handler http.HandlerFunc
Middleware mux.MiddlewareFunc
}
var routers []Router
// var (
// commonUriPattern = config.UriPrefix + "/{apiCategory}/{apiVersion}/elementType/{elementTypeValue}/objectType/{objectTypeValue}"
// getUriPattern = config.UriPrefix + "/resourceManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/{objectTypeValue}"
// getStatePattern = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/systemState"
// // // database management rest pattern discard
// // XormGetDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/elementType/{databaseName}/objectType/{tableName}"
// // XormSelectDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/select/{databaseName}/{tableName}"
// // XormInsertDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/insert/{databaseName}/{tableName}"
// // XormUpdateDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/update/{databaseName}/{tableName}"
// // XormDeleteDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/delete/{databaseName}/{tableName}"
// // XormCommonUri = config.UriPrefix + "/databaseManagement/{apiVersion}/{databaseName}/{tableName}"
// // alarm management
// postAlarmPattern = config.UriPrefix + "/faultManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/alarms"
// // performance management
// postPerformancePattern = config.UriPrefix + "/performanceManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/kpiReport/{index}"
// measureTaskUri = config.UriPrefix + "/performanceManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/measureTask"
// measureReportUri = config.UriPrefix + "/performanceManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/measureReport"
// // parameter config management
// paramConfigUri = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/config/{paraName}"
// // NE info
// UriNeInfo = config.UriPrefix + "/systemManagement/{apiVersion}/elementType/{elementTypeValue}/objectType/neInfo"
// )
func init() {
Register("POST", security.UriOauthToken, security.LoginFromOMC, nil)
Register("POST", security.UriOauthHandshake, security.HandshakeFromOMC, nil)
Register("DELETE", security.UriOauthToken, security.LogoutFromOMC, nil)
Register("OPTIONS", security.UriOauthToken, OptionsProc, nil)
Register("OPTIONS", security.UriOauthHandshake, OptionsProc, nil)
// System state
Register("GET", state.UriSysState, state.GetStateFromNF, nil)
Register("OPTIONS", state.UriSysState, OptionsProc, nil)
Register("GET", state.UriSysState2, state.GetStateFromNF, nil)
Register("OPTIONS", state.UriSysState, OptionsProc, nil)
Register("OPTIONS", state.UriSysState2, OptionsProc, nil)
Register("GET", state.UriSysInfoAll, state.GetAllSysinfoFromNF, nil)
Register("GET", state.UriSysInfoOne, state.GetOneSysinfoFromNF, nil)
Register("OPTIONS", state.UriSysInfoAll, OptionsProc, nil)
Register("OPTIONS", state.UriSysInfoOne, OptionsProc, nil)
Register("GET", state.UriLicenseInfoAll, state.GetAllLicenseInfoFromNF, nil)
Register("GET", state.UriLicenseInfoOne, state.GetOneLicenseInfoFromNF, nil)
Register("OPTIONS", state.UriLicenseInfoAll, OptionsProc, nil)
Register("OPTIONS", state.UriLicenseInfoOne, OptionsProc, nil)
// database management
Register("GET", dbrest.XormGetDataUri, dbrest.DatabaseGetData, nil)
Register("GET", dbrest.XormSelectDataUri, dbrest.DatabaseGetData, nil)
Register("POST", dbrest.XormInsertDataUri, dbrest.DatabaseInsertData, nil)
Register("PUT", dbrest.XormUpdateDataUri, dbrest.DatabaseUpdateData, nil)
Register("DELETE", dbrest.XormDeleteDataUri, dbrest.DatabaseDeleteData, nil)
// corss orgin domain
Register("OPTIONS", dbrest.XormGetDataUri, OptionsProc, nil)
Register("OPTIONS", dbrest.XormSelectDataUri, OptionsProc, nil)
Register("OPTIONS", dbrest.XormInsertDataUri, OptionsProc, nil)
Register("OPTIONS", dbrest.XormUpdateDataUri, OptionsProc, nil)
Register("OPTIONS", dbrest.XormDeleteDataUri, OptionsProc, nil)
Register("GET", dbrest.XormCommonUri, dbrest.DatabaseGetData, nil)
Register("POST", dbrest.XormCommonUri, dbrest.DatabaseInsertData, nil)
Register("PUT", dbrest.XormCommonUri, dbrest.DatabaseUpdateData, nil)
Register("DELETE", dbrest.XormCommonUri, dbrest.DatabaseDeleteData, nil)
Register("GET", dbrest.XormExtDataUri, dbrest.ExtDatabaseGetData, nil)
Register("POST", dbrest.XormExtDataUri, dbrest.ExtDatabaseInsertData, nil)
Register("PUT", dbrest.XormExtDataUri, dbrest.ExtDatabaseUpdateData, nil)
Register("DELETE", dbrest.XormExtDataUri, dbrest.ExtDatabaseDeleteData, nil)
// corss orgin domain
Register("OPTIONS", dbrest.XormInsertDataUri, OptionsProc, nil)
Register("OPTIONS", dbrest.XormUpdateDataUri, OptionsProc, nil)
Register("OPTIONS", dbrest.XormDeleteDataUri, OptionsProc, nil)
Register("OPTIONS", dbrest.XormCommonUri, OptionsProc, nil)
// alarm restful Register
Register("POST", fm.UriAlarms, fm.PostAlarmFromNF, nil)
Register("Get", fm.UriAlarms, fm.GetAlarmFromNF, nil)
Register("OPTIONS", fm.UriAlarms, OptionsProc, nil)
// performance restful Register
Register("POST", pm.PostPerformancePattern, pm.PostKPIReportFromNF, nil)
Register("POST", pm.MeasureTaskUri, pm.PostMeasureTaskToNF, nil)
Register("PUT", pm.MeasureTaskUri, pm.PutMeasureTaskToNF, nil)
Register("DELETE", pm.MeasureTaskUri, pm.DeleteMeasureTaskToNF, nil)
Register("PATCH", pm.MeasureTaskUri, pm.PatchMeasureTaskToNF, nil)
Register("POST", pm.MeasureReportUri, pm.PostMeasureReportFromNF, nil)
Register("POST", pm.MeasurementUri, pm.PostMeasurementFromNF, nil)
Register("GET", pm.MeasurementUri, pm.GetMeasurementFromNF, nil)
Register("OPTIONS", pm.MeasureTaskUri, OptionsProc, nil)
// parameter config management
Register("GET", cm.ParamConfigUri, cm.GetParamConfigFromNF, nil)
Register("POST", cm.ParamConfigUri, cm.PostParamConfigToNF, nil)
Register("PUT", cm.ParamConfigUri, cm.PutParamConfigToNF, nil)
Register("DELETE", cm.ParamConfigUri, cm.DeleteParamConfigToNF, nil)
Register("OPTIONS", cm.ParamConfigUri, OptionsProc, nil)
// Get/Create/Modify/Delete NE info
Register("GET", cm.UriNeInfo, cm.GetNeInfo, nil)
Register("POST", cm.UriNeInfo, cm.PostNeInfo, nil)
Register("PUT", cm.UriNeInfo, cm.PutNeInfo, nil)
Register("DELETE", cm.UriNeInfo, cm.DeleteNeInfo, nil)
Register("OPTIONS", cm.UriNeInfo, OptionsProc, nil)
// Post MML command to NF
Register("POST", mml.UriMML, mml.PostMMLToNF, nil)
Register("OPTIONS", mml.UriMML, OptionsProc, nil)
Register("POST", mml.UriOmMmlExt, mml.PostMMLToOMC, nil)
Register("OPTIONS", mml.UriOmMmlExt, OptionsProc, nil)
// Northbound Get NRM
Register("GET", nbi.GetNRMUri, nbi.NBIGetNRMFromNF, nil)
// Import/Export NF CM
Register("GET", cm.NeCmUri, cm.ExportCmFromNF, nil)
Register("POST", cm.NeCmUri, cm.ImportCmToNF, nil)
Register("OPTIONS", cm.NeCmUri, OptionsProc, nil)
Register("GET", cm.UriNeCmFile, cm.DownloadNeBackupFile, nil)
Register("DELETE", cm.UriNeCmFile, cm.DeleteNeBackupFile, nil)
Register("OPTIONS", cm.UriNeCmFile, OptionsProc, nil)
// Software management
Register("GET", cm.UriSoftware, cm.DownloadSoftwareFile, nil)
Register("POST", cm.UriSoftware, cm.UploadSoftwareFile, nil)
Register("DELETE", cm.UriSoftware, cm.DeleteSoftwareFile, nil)
Register("OPTIONS", cm.UriSoftware, OptionsProc, nil)
Register("POST", cm.UriSoftwareNE, cm.DistributeSoftwareToNF, nil)
Register("PUT", cm.UriSoftwareNE, cm.ActiveSoftwareToNF, nil)
Register("PATCH", cm.UriSoftwareNE, cm.RollBackSoftwareToNF, nil)
Register("OPTIONS", cm.UriSoftwareNE, OptionsProc, nil)
// License management
Register("GET", cm.LicenseUri, cm.ExportCmFromNF, nil)
Register("POST", cm.LicenseUri, cm.ImportCmToNF, nil)
Register("DELETE", cm.LicenseUri, cm.ImportCmToNF, nil)
Register("OPTIONS", cm.LicenseUri, OptionsProc, nil)
Register("POST", cm.NeLicenseUri, cm.ExportCmFromNF, nil)
Register("PUT", cm.NeLicenseUri, cm.ImportCmToNF, nil)
Register("PATCH", cm.NeLicenseUri, cm.ImportCmToNF, nil)
Register("OPTIONS", cm.NeLicenseUri, OptionsProc, nil)
// Trace management
Register("POST", trace.UriTraceTask, trace.PostTraceTaskToNF, nil)
Register("PUT", trace.UriTraceTask, trace.PutTraceTaskToNF, nil)
Register("DELETE", trace.UriTraceTask, trace.DeleteTraceTaskToNF, nil)
Register("OPTIONS", trace.UriTraceTask, OptionsProc, nil)
// file management
Register("POST", file.UriFile, file.UploadFile, nil)
Register("GET", file.UriFile, file.DownloadFile, nil)
Register("DELETE", file.UriFile, file.DeleteFile, nil)
Register("OPTIONS", file.UriFile, OptionsProc, nil)
// AAAA
Register("GET", aaaa.UriAAAASSO, aaaa.GetSSOFromAAAA, nil)
// 系统维护
Register("GET", maintenance.Uri, maintenance.List, nil)
Register("GET", maintenance.UriPref, maintenance.Pref, nil)
Register("GET", maintenance.UriPrefLog, maintenance.PrefLog, nil)
Register("GET", maintenance.UriSqlClient, maintenance.SqlClient, nil)
Register("GET", maintenance.UriTop, maintenance.Top, nil)
Register("PATCH", maintenance.UriTop, maintenance.TopOps, nil)
}
// To resolv rest POST/PUT/DELETE/PATCH cross domain
func OptionsProc(w http.ResponseWriter, r *http.Request) {
services.ResponseStatusOK200Null(w)
}
func NewRouter() *mux.Router {
r := mux.NewRouter()
// set custom handle for status 404/405
r.NotFoundHandler = services.CustomResponseNotFound404Handler()
r.MethodNotAllowedHandler = services.CustomResponseMethodNotAllowed405Handler()
r.Use(midware.LoggerTraceMiddleware)
for _, router := range routers {
r.Methods(router.Method).
Path(router.Pattern).
Handler(router.Handler)
if router.Middleware != nil {
r.Use(router.Middleware)
}
}
return r
}
func Register(method, pattern string, handler http.HandlerFunc, middleware mux.MiddlewareFunc) {
routers = append(routers, Router{method, pattern, handler, middleware})
}