Newer
Older
package routebuildermdl
import (
"mime/multipart"
"time"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/errormdl"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/servicebuildermdl"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/cachemdl"
)
var (
restrictedServices cachemdl.FastCacheHelper
roleBasedServices cachemdl.FastCacheHelper
openServices cachemdl.FastCacheHelper
loginService func(*gjson.Result, servicebuildermdl.Principal) (interface{}, string, error)
applicationVersion *version.Version
minimumSupportedVersion *version.Version
isAppVersionEnabled bool
isStrictMode bool
)
func init() {
restrictedServices.Setup(10, time.Second*600, time.Second*600)
openServices.Setup(10, time.Second*600, time.Second*600)
roleBasedServices.Setup(10, time.Second*600, time.Second*600)
}
// ServiceCache ServiceCache object
type ServiceCache struct {
Service func(*gjson.Result, servicebuildermdl.Principal) (interface{}, error)
FormService func(*multipart.Form, servicebuildermdl.Principal) (interface{}, error)
// RegisterNormalService is for transactional services
func RegisterNormalService(serviceName string, servicePtr func(*gjson.Result, servicebuildermdl.Principal) (interface{}, error), isRestricted, isRoleBased bool) {
service := ServiceCache{
Service: servicePtr,
}
commonServiceRegistration(serviceName, service, isRestricted, isRoleBased)
// RegisterFormBasedService if for multipart form based services
func RegisterFormBasedService(serviceName string, servicePtr func(*multipart.Form, servicebuildermdl.Principal) (interface{}, error), isRestricted, isRoleBased bool) {
service := ServiceCache{
FormService: servicePtr,
IsFormService: true,
}
commonServiceRegistration(serviceName, service, isRestricted, isRoleBased)
// // RegisterMasterService is for getting master type of file
// func RegisterMasterService(serviceName string, servicePtr *servicebuildermdl.ServiceBuilder, isRestricted, isRoleBased bool) {
// service := ServiceCache{
// MasterService: servicePtr,
// IsMasterService: true,
// }
// commonServiceRegistration(serviceName, service, isRestricted, isRoleBased)
// }
// RegisterMasterService is for getting master type of file
func RegisterMasterService(serviceName string, isRestricted, isRoleBased bool) *Master {
return &Master{
serviceName: serviceName,
isRoleBased: isRoleBased,
isRestricted: isRestricted,
// RegisterLoginSerivce is for login service
func RegisterLoginSerivce(service func(*gjson.Result, servicebuildermdl.Principal) (interface{}, string, error)) {
loginService = service
}
func commonServiceRegistration(serviceName string, service ServiceCache, isRestricted, isRoleBased bool) {
roleBasedServices.SetNoExpiration(serviceName, service)
} else {
restrictedServices.SetNoExpiration(serviceName, service)
openServices.SetNoExpiration(serviceName, service)
// SetAppVersion -SetAppVersion
func SetAppVersion(appVersion, minSupportedVersion string) error {
app, err := version.NewVersion(appVersion)
if errormdl.CheckErr(err) != nil {
return errormdl.CheckErr(err)
min, err := version.NewVersion(minSupportedVersion)
if errormdl.CheckErr(err) != nil {
return errormdl.CheckErr(err)
versionValidation := min.Compare(app)
if versionValidation == 1 {
return errormdl.Wrap("Minimum version is more than app version")
}
if versionValidation == 0 {
isStrictMode = true
applicationVersion = app
minimumSupportedVersion = min
isAppVersionEnabled = true
return nil