45 lines
1021 B
Go
45 lines
1021 B
Go
package Managers
|
|
|
|
import (
|
|
"AnP/Drivers"
|
|
"AnP/Models"
|
|
)
|
|
|
|
type HTTPServersManager struct {
|
|
anp Models.AnPModel
|
|
servers map[string]*Drivers.HTTPDriver
|
|
}
|
|
|
|
func NewHTTPServersManager(anp Models.AnPModel, inputs any) HTTPServersManager {
|
|
|
|
var manager HTTPServersManager = HTTPServersManager{
|
|
anp: anp,
|
|
servers: map[string]*Drivers.HTTPDriver{},
|
|
}
|
|
|
|
for _, key := range []string{
|
|
"default_http_servers_files", "default_http_servers", "http_servers_files", "http_servers",
|
|
} {
|
|
manager.Add(anp.Settings.Get(key, nil, nil), false)
|
|
}
|
|
|
|
return manager
|
|
}
|
|
|
|
func (_self *HTTPServersManager) Add(inputs any, overwrite bool) {
|
|
_self.anp.Request.LoadJSON(inputs, func(response any) {
|
|
switch group := response.(type) {
|
|
case map[string]any:
|
|
for key, data := range group {
|
|
_, exists := _self.servers[key]
|
|
if overwrite || !exists {
|
|
switch subinputs := data.(type) {
|
|
case map[string]any:
|
|
_self.servers[key] = Drivers.NewHTTPDriver(_self.anp, subinputs)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, true)
|
|
}
|