package Managers import ( "AnP/Interfaces" "AnP/Models" "AnP/Utils" ) type ApplicationsManager struct { anp Models.AnPModel applications map[string]Models.ApplicationModel } func NewApplicationsManager(anp Models.AnPModel) ApplicationsManager { var module ApplicationsManager = ApplicationsManager{ anp: anp, applications: map[string]Models.ApplicationModel{}, } for _, key := range []string{ "default_applications_files", "applications_files", "default_applications", "applications", } { module.Add(anp.Settings.Get(key, nil, nil), true) } return module } func (_self *ApplicationsManager) Add(inputs any, overwrite bool) { _self.anp.Request.LoadJSON(inputs, func(response any) { for key, data := range Utils.Get[map[string]any](inputs, nil) { _, exists := _self.applications[key] if overwrite || !exists { _self.applications[key] = Models.NewApplicationModel(_self.anp, NewRoutesManager(_self.anp, data), data) } } }, true) } func (_self ApplicationsManager) Go(request Interfaces.RequestModelInterface) map[string]any { var response map[string]any = GetDefaultHTTPResponse() var done bool for _, application := range _self.applications { if response, done = application.Routes.Go(request, application.GetAttributes(), application.Paths); done { break } } return response }