mirror of
https://github.com/eolinker/apinto
synced 2025-10-23 16:53:18 +08:00
templater
This commit is contained in:
@@ -31,7 +31,7 @@ func (a *aksk) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *aksk) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (a *aksk) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
c, ok := conf.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))
|
||||
|
@@ -26,7 +26,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
}
|
||||
|
||||
//Create 创建aksk鉴权驱动实例
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
a := &aksk{
|
||||
id: id,
|
||||
}
|
||||
|
@@ -150,7 +150,7 @@ func (a *apikey) Start() error {
|
||||
}
|
||||
|
||||
//Reset 重新加载配置
|
||||
func (a *apikey) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (a *apikey) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, ok := conf.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))
|
||||
|
@@ -24,7 +24,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
w := &apikey{
|
||||
id: id,
|
||||
}
|
||||
|
@@ -58,7 +58,7 @@ func (b *basic) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *basic) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (b *basic) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, ok := conf.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))
|
||||
|
@@ -26,7 +26,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
}
|
||||
|
||||
//Create 创建http_proxy驱动的实例
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
w := &basic{
|
||||
id: id,
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
}
|
||||
|
||||
//Create 创建jwt鉴权驱动实例
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
a := &jwt{
|
||||
id: id,
|
||||
}
|
||||
|
@@ -33,7 +33,7 @@ func (j *jwt) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (j *jwt) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (j *jwt) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
c, ok := conf.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))
|
||||
|
@@ -65,7 +65,7 @@ func (c *consul) Start() error {
|
||||
}
|
||||
|
||||
//Reset 重置consul实例配置
|
||||
func (c *consul) Reset(cfg interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (c *consul) Reset(cfg interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
workerConfig, ok := cfg.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(cfg))
|
||||
|
@@ -31,7 +31,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
}
|
||||
|
||||
//Create 创建consul驱动实例
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
workerConfig, ok := v.(*Config)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(v))
|
||||
|
@@ -30,7 +30,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
}
|
||||
|
||||
//Create 创建eureka驱动实例
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
cfg, ok := v.(*Config)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(v))
|
||||
|
@@ -105,7 +105,7 @@ func (e *eureka) Start() error {
|
||||
}
|
||||
|
||||
//Reset 重置eureka实例配置
|
||||
func (e *eureka) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (e *eureka) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, ok := conf.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))
|
||||
|
@@ -31,7 +31,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
}
|
||||
|
||||
//Create 创建nacos驱动实例
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
cfg, ok := v.(*Config)
|
||||
if !ok {
|
||||
val := reflect.ValueOf(v)
|
||||
|
@@ -89,7 +89,7 @@ func (n *nacos) Start() error {
|
||||
}
|
||||
|
||||
//Reset 重置nacos实例配置
|
||||
func (n *nacos) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (n *nacos) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, ok := conf.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))
|
||||
|
@@ -27,7 +27,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
}
|
||||
|
||||
//Create 创建静态服务发现驱动的实例
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
s := &static{
|
||||
id: id,
|
||||
}
|
||||
|
@@ -78,7 +78,7 @@ func (s *static) reset(cfg *Config) error {
|
||||
}
|
||||
|
||||
//Reset 重置静态服务发现实例配置
|
||||
func (s *static) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (s *static) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, ok := conf.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s:%w", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf), errorStructType)
|
||||
|
@@ -48,7 +48,7 @@ func (d *Driver) Check(v interface{}) (*Config, error) {
|
||||
return conf, nil
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
worker := &FileOutput{
|
||||
Driver: d,
|
||||
id: id,
|
||||
|
@@ -38,7 +38,7 @@ func (a *FileOutput) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *FileOutput) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) (err error) {
|
||||
func (a *FileOutput) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) (err error) {
|
||||
cfg, err := a.Driver.Check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -53,7 +53,7 @@ func (d *Driver) Check(v interface{}) (*Config, error) {
|
||||
return httpConf, nil
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
worker := &HttpOutput{
|
||||
Driver: d,
|
||||
id: id,
|
||||
|
@@ -36,7 +36,7 @@ func (h *HttpOutput) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *HttpOutput) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) (err error) {
|
||||
func (h *HttpOutput) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) (err error) {
|
||||
config, err := h.Driver.Check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -27,7 +27,7 @@ func (d *Driver) check(v interface{}) (*ProducerConfig, error) {
|
||||
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
worker := &Output{
|
||||
Driver: d,
|
||||
id: id,
|
||||
|
@@ -52,7 +52,7 @@ func (o *Output) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *Output) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (o *Output) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, err := o.Driver.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -47,7 +47,7 @@ func (d *Driver) Check(v interface{}) (*Config, error) {
|
||||
return nsqConf, nil
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
worker := &NsqOutput{
|
||||
Driver: d,
|
||||
id: id,
|
||||
|
@@ -25,7 +25,7 @@ func (n *NsqOutput) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (n *NsqOutput) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (n *NsqOutput) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
config, err := n.Driver.Check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -27,7 +27,7 @@ func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
cfg, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -61,7 +61,7 @@ func (s *SysWriter) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SysWriter) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (s *SysWriter) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, err := s.Driver.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -32,7 +32,7 @@ func (s *SysWriter) Start() error {
|
||||
return fmt.Errorf("can not create syslog transporterReset in windows system")
|
||||
}
|
||||
|
||||
func (s *SysWriter) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (s *SysWriter) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
return fmt.Errorf("can not create syslog transporterReset in windows system")
|
||||
}
|
||||
|
||||
|
@@ -18,12 +18,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
@@ -57,7 +57,7 @@ func (d *Driver) getList(auths []eosc.RequireId) ([]output.IEntryOutput, error)
|
||||
return ls, nil
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -50,7 +50,7 @@ func (l *accessLog) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (l *accessLog) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (l *accessLog) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
c, err := l.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -69,7 +69,7 @@ func (a *Auth) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *Auth) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (a *Auth) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
confObj, err := a.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -17,12 +17,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
conf, ok := v.(*Config)
|
||||
@@ -50,7 +50,7 @@ func (d *Driver) getList(auths []eosc.RequireId) ([]auth.IAuth, error) {
|
||||
}
|
||||
return ls, nil
|
||||
}
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -33,16 +33,16 @@ func (c *CircuitBreaker) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CircuitBreaker) Reset(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
conf, err := c.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
func (c *CircuitBreaker) Reset(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
conf, err := c.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
c.counter = newCircuitCount()
|
||||
c.conf = conf
|
||||
c.counter = newCircuitCount()
|
||||
c.conf = conf
|
||||
|
||||
return nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CircuitBreaker) Stop() error {
|
||||
|
@@ -13,12 +13,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
@@ -39,7 +39,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -124,18 +124,18 @@ func (c *CorsFilter) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CorsFilter) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
cfg, err := c.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
c.option = cfg.genOptionHandler()
|
||||
c.originChecker = NewChecker(cfg.AllowOrigins, "Access-Control-Allow-Origin")
|
||||
c.methodChecker = NewChecker(cfg.AllowMethods, "Access-Control-Allow-Methods")
|
||||
c.headerChecker = NewChecker(cfg.AllowHeaders, "Access-Control-Allow-Headers")
|
||||
c.exposeChecker = NewChecker(cfg.ExposeHeaders, "Access-Control-Expose-Headers")
|
||||
c.allowCredentials = cfg.AllowCredentials
|
||||
return nil
|
||||
func (c *CorsFilter) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, err := c.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
c.option = cfg.genOptionHandler()
|
||||
c.originChecker = NewChecker(cfg.AllowOrigins, "Access-Control-Allow-Origin")
|
||||
c.methodChecker = NewChecker(cfg.AllowMethods, "Access-Control-Allow-Methods")
|
||||
c.headerChecker = NewChecker(cfg.AllowHeaders, "Access-Control-Allow-Headers")
|
||||
c.exposeChecker = NewChecker(cfg.ExposeHeaders, "Access-Control-Expose-Headers")
|
||||
c.allowCredentials = cfg.AllowCredentials
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CorsFilter) Stop() error {
|
||||
|
@@ -13,7 +13,7 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
return err
|
||||
}
|
||||
@@ -34,7 +34,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -14,12 +14,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
@@ -39,7 +39,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -114,16 +114,16 @@ func (e *ExtraParams) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *ExtraParams) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
confObj, err := e.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
func (e *ExtraParams) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
confObj, err := e.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
e.params = confObj.Params
|
||||
e.errorType = confObj.ErrorType
|
||||
e.params = confObj.Params
|
||||
e.errorType = confObj.ErrorType
|
||||
|
||||
return nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *ExtraParams) Stop() error {
|
||||
|
@@ -13,9 +13,9 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
return err
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
@@ -34,7 +34,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -95,13 +95,13 @@ func (g *Gzip) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *Gzip) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
cfg, err := g.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
g.conf = cfg
|
||||
return nil
|
||||
func (g *Gzip) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cfg, err := g.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
g.conf = cfg
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *Gzip) Stop() error {
|
||||
|
@@ -13,12 +13,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
conf, ok := v.(*Config)
|
||||
@@ -36,7 +36,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -40,13 +40,13 @@ func (I *IPHandler) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (I *IPHandler) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
confObj, err := I.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
I.filter = confObj.genFilter()
|
||||
return nil
|
||||
func (I *IPHandler) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
confObj, err := I.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
I.filter = confObj.genFilter()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (I *IPHandler) Stop() error {
|
||||
|
@@ -14,12 +14,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
@@ -40,7 +40,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (interface{}, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -193,17 +193,17 @@ func (p *ParamsTransformer) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ParamsTransformer) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
confObj, err := p.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
func (p *ParamsTransformer) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
confObj, err := p.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
p.params = confObj.Params
|
||||
p.remove = confObj.Remove
|
||||
p.errorType = confObj.ErrorType
|
||||
p.params = confObj.Params
|
||||
p.remove = confObj.Remove
|
||||
p.errorType = confObj.ErrorType
|
||||
|
||||
return nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ParamsTransformer) Stop() error {
|
||||
|
@@ -15,12 +15,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
@@ -41,7 +41,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -1,7 +1,6 @@
|
||||
package proxy_rewrite
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/eolinker/eosc/eocontext"
|
||||
"regexp"
|
||||
|
||||
@@ -73,27 +72,27 @@ func (p *ProxyRewrite) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ProxyRewrite) Reset(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
conf, err := p.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
func (p *ProxyRewrite) Reset(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
conf, err := p.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
p.uri = conf.URI
|
||||
p.regexURI = conf.RegexURI
|
||||
p.host = conf.Host
|
||||
p.headers = conf.Headers
|
||||
p.uri = conf.URI
|
||||
p.regexURI = conf.RegexURI
|
||||
p.host = conf.Host
|
||||
p.headers = conf.Headers
|
||||
|
||||
if len(conf.RegexURI) > 0 {
|
||||
p.regexMatch, err = regexp.Compile(conf.RegexURI[0])
|
||||
if err != nil {
|
||||
return fmt.Errorf(regexpErrInfo, conf.RegexURI[0])
|
||||
}
|
||||
} else {
|
||||
p.regexMatch = nil
|
||||
}
|
||||
if len(conf.RegexURI) > 0 {
|
||||
p.regexMatch, err = regexp.Compile(conf.RegexURI[0])
|
||||
if err != nil {
|
||||
return fmt.Errorf(regexpErrInfo, conf.RegexURI[0])
|
||||
}
|
||||
} else {
|
||||
p.regexMatch = nil
|
||||
}
|
||||
|
||||
return nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ProxyRewrite) Stop() error {
|
||||
|
@@ -15,12 +15,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
@@ -41,7 +41,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -110,38 +110,38 @@ func (p *ProxyRewrite) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ProxyRewrite) Reset(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
conf, err := p.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
func (p *ProxyRewrite) Reset(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
conf, err := p.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
p.pathType = conf.PathType
|
||||
p.notMatchErr = conf.NotMatchErr
|
||||
p.hostRewrite = conf.HostRewrite
|
||||
p.host = conf.Host
|
||||
p.headers = conf.Headers
|
||||
p.pathType = conf.PathType
|
||||
p.notMatchErr = conf.NotMatchErr
|
||||
p.hostRewrite = conf.HostRewrite
|
||||
p.host = conf.Host
|
||||
p.headers = conf.Headers
|
||||
|
||||
switch conf.PathType {
|
||||
case typeStatic:
|
||||
p.staticPath = conf.StaticPath
|
||||
case typePrefix:
|
||||
p.prefixPath = conf.PrefixPath
|
||||
case typeRegex:
|
||||
regexMatch := make([]*regexp.Regexp, 0)
|
||||
switch conf.PathType {
|
||||
case typeStatic:
|
||||
p.staticPath = conf.StaticPath
|
||||
case typePrefix:
|
||||
p.prefixPath = conf.PrefixPath
|
||||
case typeRegex:
|
||||
regexMatch := make([]*regexp.Regexp, 0)
|
||||
|
||||
for _, rPath := range conf.RegexPath {
|
||||
rMatch, err := regexp.Compile(rPath.RegexPathMatch)
|
||||
if err != nil {
|
||||
return fmt.Errorf(regexpErrInfo, rPath.RegexPathMatch)
|
||||
}
|
||||
regexMatch = append(regexMatch, rMatch)
|
||||
}
|
||||
p.regexPath = conf.RegexPath
|
||||
p.regexMatch = regexMatch
|
||||
}
|
||||
for _, rPath := range conf.RegexPath {
|
||||
rMatch, err := regexp.Compile(rPath.RegexPathMatch)
|
||||
if err != nil {
|
||||
return fmt.Errorf(regexpErrInfo, rPath.RegexPathMatch)
|
||||
}
|
||||
regexMatch = append(regexMatch, rMatch)
|
||||
}
|
||||
p.regexPath = conf.RegexPath
|
||||
p.regexMatch = regexMatch
|
||||
}
|
||||
|
||||
return nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ProxyRewrite) Stop() error {
|
||||
|
@@ -13,12 +13,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) ConfigType() reflect.Type {
|
||||
@@ -32,7 +32,7 @@ func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
return conf, nil
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -101,15 +101,15 @@ func (r *RateLimiting) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *RateLimiting) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
confObj, err := r.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
r.rateInfo = CreateRateInfo(confObj)
|
||||
r.hideClientHeader = confObj.HideClientHeader
|
||||
r.responseType = confObj.ResponseType
|
||||
return nil
|
||||
func (r *RateLimiting) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
confObj, err := r.check(conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
r.rateInfo = CreateRateInfo(confObj)
|
||||
r.hideClientHeader = confObj.HideClientHeader
|
||||
r.responseType = confObj.ResponseType
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *RateLimiting) Stop() error {
|
||||
|
@@ -14,12 +14,12 @@ type Driver struct {
|
||||
configType reflect.Type
|
||||
}
|
||||
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func (d *Driver) Check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
_, err := d.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) check(v interface{}) (*Config, error) {
|
||||
@@ -40,7 +40,7 @@ func (d *Driver) ConfigType() reflect.Type {
|
||||
return d.configType
|
||||
}
|
||||
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *Driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
conf, err := d.check(v)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -4,7 +4,6 @@ import (
|
||||
"github.com/eolinker/eosc/eocontext"
|
||||
"strconv"
|
||||
|
||||
"github.com/eolinker/apinto/utils"
|
||||
"github.com/eolinker/eosc"
|
||||
http_service "github.com/eolinker/eosc/eocontext/http-context"
|
||||
)
|
||||
@@ -33,26 +32,26 @@ func (r *ResponseRewrite) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *ResponseRewrite) Reset(v interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
conf, err := r.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
func (r *ResponseRewrite) Reset(v interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
conf, err := r.check(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
//若body非空且需要base64转码
|
||||
if conf.Body != "" && conf.BodyBase64 {
|
||||
conf.Body, err = utils.B64Decode(conf.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
//若body非空且需要base64转码
|
||||
if conf.Body != "" && conf.BodyBase64 {
|
||||
conf.Body, err = utils.B64Decode(conf.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
r.statusCode = conf.StatusCode
|
||||
r.body = conf.Body
|
||||
r.headers = conf.Headers
|
||||
r.match = conf.Match
|
||||
r.statusCode = conf.StatusCode
|
||||
r.body = conf.Body
|
||||
r.headers = conf.Headers
|
||||
r.match = conf.Match
|
||||
|
||||
return nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *ResponseRewrite) Stop() error {
|
||||
|
@@ -30,7 +30,7 @@ func NewHTTPRouter() *HTTPRouterDriver {
|
||||
}
|
||||
|
||||
//Create 创建一个http路由驱动实例
|
||||
func (h *HTTPRouterDriver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (h *HTTPRouterDriver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
|
||||
conf, iService, err := h.check(v, workers)
|
||||
if err != nil {
|
||||
@@ -44,7 +44,7 @@ func (h *HTTPRouterDriver) Create(id, name string, v interface{}, workers map[eo
|
||||
}
|
||||
|
||||
//check 检查http路由驱动配置
|
||||
func (h *HTTPRouterDriver) check(v interface{}, workers map[eosc.RequireId]interface{}) (*DriverConfig, service.IServiceCreate, error) {
|
||||
func (h *HTTPRouterDriver) check(v interface{}, workers map[eosc.RequireId]eosc.IWorker) (*DriverConfig, service.IServiceCreate, error) {
|
||||
conf, ok := v.(*DriverConfig)
|
||||
if !ok {
|
||||
return nil, nil, fmt.Errorf("get %s but %s %w", config.TypeNameOf(v), config.TypeNameOf(new(DriverConfig)), eosc.ErrorRequire)
|
||||
|
@@ -30,7 +30,7 @@ func (r *Router) create(cf *DriverConfig, target service.IServiceCreate) (*Route
|
||||
handler := NewRouterHandler(newConf, serviceHandler)
|
||||
return handler, nil
|
||||
}
|
||||
func (r *Router) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (r *Router) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
cf, ser, err := r.driver.check(conf, workers)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -21,7 +21,7 @@ func (d *driver) ConfigType() reflect.Type {
|
||||
}
|
||||
|
||||
//Create 创建service_http驱动的实例
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (d *driver) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
|
||||
w := &serviceWorker{
|
||||
id: id,
|
||||
|
@@ -36,7 +36,7 @@ func (s *serviceWorker) Start() error {
|
||||
}
|
||||
|
||||
//Reset 重置服务实例的配置
|
||||
func (s *serviceWorker) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (s *serviceWorker) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
data, ok := conf.(*Config)
|
||||
if !ok {
|
||||
return fmt.Errorf("need %s,now %s", config.TypeNameOf((*Config)(nil)), config.TypeNameOf(conf))
|
||||
|
@@ -8,15 +8,7 @@ type IChainReset interface {
|
||||
Reset(filters ...eocontext.IFilter)
|
||||
}
|
||||
|
||||
type IChain interface {
|
||||
eocontext.IChain
|
||||
ToFilter() eocontext.IFilter
|
||||
Append(filters ...eocontext.IFilter) IChain
|
||||
Insert(filters ...eocontext.IFilter) IChain
|
||||
}
|
||||
|
||||
type IChainHandler interface {
|
||||
IChain
|
||||
IChainReset
|
||||
}
|
||||
|
||||
|
@@ -2,85 +2,34 @@ package filter
|
||||
|
||||
import (
|
||||
"github.com/eolinker/eosc/eocontext"
|
||||
"github.com/eolinker/eosc/log"
|
||||
"github.com/eolinker/eosc/utils/config"
|
||||
)
|
||||
|
||||
var _ IChainHandler = (*_ChainHandler)(nil)
|
||||
|
||||
type _ChainHandler struct {
|
||||
orgFilter *_ChainFilter
|
||||
resetHandler IChainReset
|
||||
filters eocontext.Filters
|
||||
}
|
||||
|
||||
func (c *_ChainHandler) Destroy() {
|
||||
orgFilter := c.orgFilter
|
||||
if orgFilter != nil {
|
||||
c.orgFilter = nil
|
||||
orgFilter.Destroy()
|
||||
}
|
||||
|
||||
c.filters.Destroy()
|
||||
}
|
||||
|
||||
func createHandler(filters []eocontext.IFilter) *_ChainHandler {
|
||||
orgFilter := ToFilter(filters)
|
||||
|
||||
return &_ChainHandler{
|
||||
orgFilter: orgFilter,
|
||||
resetHandler: orgFilter,
|
||||
filters: filters,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (c *_ChainHandler) ToFilter() eocontext.IFilter {
|
||||
return c.orgFilter
|
||||
}
|
||||
|
||||
func (c *_ChainHandler) DoChain(ctx eocontext.EoContext) error {
|
||||
log.Debug("do chain handler: ", c, config.TypeNameOf(c.orgFilter))
|
||||
orgFilter := c.orgFilter
|
||||
if orgFilter != nil {
|
||||
return orgFilter.DoFilter(ctx, nil)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *_ChainHandler) Append(filters ...eocontext.IFilter) IChain {
|
||||
pre := c.ToFilter()
|
||||
fs := make([]eocontext.IFilter, 0, len(filters)+1)
|
||||
if pre != nil {
|
||||
fs = append(fs, pre)
|
||||
}
|
||||
fs = append(fs, filters...)
|
||||
n := createHandler(fs)
|
||||
n.resetHandler = c.resetHandler
|
||||
return n
|
||||
}
|
||||
orgFilter := c.filters
|
||||
|
||||
func (c *_ChainHandler) Insert(filters ...eocontext.IFilter) IChain {
|
||||
pre := c.ToFilter()
|
||||
return orgFilter.DoChain(ctx)
|
||||
|
||||
fs := make([]eocontext.IFilter, 0, len(filters)+1)
|
||||
fs = append(fs, filters...)
|
||||
if pre != nil {
|
||||
fs = append(fs, pre)
|
||||
}
|
||||
n := createHandler(fs)
|
||||
n.resetHandler = c.resetHandler
|
||||
return n
|
||||
}
|
||||
|
||||
func (c *_ChainHandler) Reset(filters ...eocontext.IFilter) {
|
||||
|
||||
if c.resetHandler != nil {
|
||||
|
||||
c.resetHandler.Reset(filters...)
|
||||
return
|
||||
}
|
||||
filter := c.orgFilter
|
||||
if filter != nil {
|
||||
filter.Reset(filters...)
|
||||
} else {
|
||||
c.orgFilter = ToFilter(filters)
|
||||
}
|
||||
return
|
||||
c.filters = filters
|
||||
}
|
||||
|
@@ -52,7 +52,7 @@ func (f *finishHttp) Finish(ctx eoscContext.EoContext) error {
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
target.finish()
|
||||
target.FastFinish()
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ func (ctx *Context) RequestId() string {
|
||||
}
|
||||
|
||||
//Finish finish
|
||||
func (ctx *Context) finish() {
|
||||
func (ctx *Context) FastFinish() {
|
||||
if ctx.response.responseError != nil {
|
||||
ctx.fastHttpRequestCtx.SetStatusCode(504)
|
||||
ctx.fastHttpRequestCtx.SetBodyString(ctx.response.responseError.Error())
|
||||
|
@@ -40,7 +40,7 @@ func (p *PluginManager) ConfigType() reflect.Type {
|
||||
return reflect.TypeOf(new(PluginWorkerConfig))
|
||||
}
|
||||
|
||||
func (p *PluginManager) Create(id, name string, v interface{}, workers map[eosc.RequireId]interface{}) (eosc.IWorker, error) {
|
||||
func (p *PluginManager) Create(id, name string, v interface{}, workers map[eosc.RequireId]eosc.IWorker) (eosc.IWorker, error) {
|
||||
p.Reset(v, workers)
|
||||
return p, nil
|
||||
}
|
||||
|
@@ -4,18 +4,12 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/eolinker/eosc/eocontext"
|
||||
"reflect"
|
||||
|
||||
"github.com/eolinker/apinto/plugin"
|
||||
|
||||
"github.com/eolinker/eosc/common/bean"
|
||||
|
||||
"github.com/eolinker/eosc"
|
||||
|
||||
"github.com/eolinker/apinto/filter"
|
||||
|
||||
"github.com/eolinker/eosc/common/bean"
|
||||
"github.com/eolinker/eosc/eocontext"
|
||||
"github.com/eolinker/eosc/log"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -35,7 +29,7 @@ type PluginManager struct {
|
||||
workers eosc.IWorkers
|
||||
}
|
||||
|
||||
func (p *PluginManager) CreateRequest(id string, conf map[string]*plugin.Config) plugin.IPlugin {
|
||||
func (p *PluginManager) CreateRequest(id string, conf map[string]*plugin.Config) eocontext.IChain {
|
||||
return p.createChain(id, conf)
|
||||
}
|
||||
|
||||
@@ -47,7 +41,7 @@ func (p *PluginManager) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *PluginManager) Reset(conf interface{}, workers map[eosc.RequireId]interface{}) error {
|
||||
func (p *PluginManager) Reset(conf interface{}, workers map[eosc.RequireId]eosc.IWorker) error {
|
||||
|
||||
plugins, err := p.check(conf)
|
||||
if err != nil {
|
||||
@@ -62,7 +56,7 @@ func (p *PluginManager) Reset(conf interface{}, workers map[eosc.RequireId]inter
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
v.IChainHandler.Reset(p.createFilters(v.conf)...)
|
||||
v.Filters = p.createFilters(v.conf)
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -80,23 +74,19 @@ func (p *PluginManager) createFilters(conf map[string]*plugin.Config) []eocontex
|
||||
filters := make([]eocontext.IFilter, 0, len(conf))
|
||||
plugins := p.plugins
|
||||
for _, plg := range plugins {
|
||||
if plg.Status == StatusDisable || plg.Status == "" {
|
||||
// 当插件类型不匹配,跳过
|
||||
if plg.Status == StatusDisable {
|
||||
// 禁用插件,跳过
|
||||
continue
|
||||
}
|
||||
c := plg.Config
|
||||
if v, ok := conf[plg.Name]; ok {
|
||||
if v.Disable {
|
||||
// 不启用该插件
|
||||
// 局部禁用
|
||||
continue
|
||||
}
|
||||
if plg.Status != StatusGlobal && plg.Status != StatusEnable {
|
||||
continue
|
||||
if v.Config != nil {
|
||||
c = v.Config
|
||||
}
|
||||
if v.Config == nil && plg.Status != StatusGlobal {
|
||||
continue
|
||||
}
|
||||
c = v.Config
|
||||
} else if plg.Status != StatusGlobal {
|
||||
continue
|
||||
}
|
||||
@@ -120,15 +110,15 @@ func (p *PluginManager) createFilters(conf map[string]*plugin.Config) []eocontex
|
||||
return filters
|
||||
}
|
||||
|
||||
func (p *PluginManager) createChain(id string, conf map[string]*plugin.Config) plugin.IPlugin {
|
||||
chain := filter.NewChain(p.createFilters(conf))
|
||||
|
||||
obj, has := p.pluginObjs.Del(id)
|
||||
if has {
|
||||
o := obj.(*PluginObj)
|
||||
o.Destroy()
|
||||
func (p *PluginManager) createChain(id string, conf map[string]*plugin.Config) *PluginObj {
|
||||
chain := p.createFilters(conf)
|
||||
obj, has := p.pluginObjs.Get(id)
|
||||
if !has {
|
||||
obj = NewPluginObj(chain, id, conf)
|
||||
p.pluginObjs.Set(id, obj)
|
||||
} else {
|
||||
obj.(*PluginObj).Filters = chain
|
||||
}
|
||||
obj = NewPluginObj(chain, id, conf, p.pluginObjs)
|
||||
|
||||
return obj.(*PluginObj)
|
||||
}
|
||||
|
@@ -1,33 +1,25 @@
|
||||
package plugin_manager
|
||||
|
||||
import (
|
||||
"github.com/eolinker/apinto/filter"
|
||||
"github.com/eolinker/apinto/plugin"
|
||||
"github.com/eolinker/eosc"
|
||||
eoscContext "github.com/eolinker/eosc/eocontext"
|
||||
)
|
||||
|
||||
type PluginObj struct {
|
||||
filter.IChainHandler
|
||||
id string
|
||||
conf map[string]*plugin.Config
|
||||
manager eosc.IUntyped
|
||||
eoscContext.Filters
|
||||
id string
|
||||
conf map[string]*plugin.Config
|
||||
}
|
||||
|
||||
func NewPluginObj(handler filter.IChainHandler, id string, conf map[string]*plugin.Config, manager eosc.IUntyped) *PluginObj {
|
||||
obj := &PluginObj{IChainHandler: handler, id: id, conf: conf, manager: manager}
|
||||
|
||||
manager.Set(id, obj)
|
||||
func NewPluginObj(filters eoscContext.Filters, id string, conf map[string]*plugin.Config) *PluginObj {
|
||||
obj := &PluginObj{Filters: filters, id: id, conf: conf}
|
||||
|
||||
return obj
|
||||
}
|
||||
|
||||
func (p *PluginObj) Destroy() {
|
||||
manager := p.manager
|
||||
if manager != nil {
|
||||
p.manager = nil
|
||||
manager.Del(p.id)
|
||||
}
|
||||
handler := p.IChainHandler
|
||||
|
||||
handler := p.Filters
|
||||
if handler != nil {
|
||||
handler.Destroy()
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package plugin
|
||||
|
||||
import "github.com/eolinker/apinto/filter"
|
||||
import "github.com/eolinker/eosc/eocontext"
|
||||
|
||||
//Config 普通插件配置,在router、service、upstream的插件格式
|
||||
type Config struct {
|
||||
@@ -12,12 +12,8 @@ type IPluginConfigMerge interface {
|
||||
Merge(high map[string]*Config) map[string]*Config
|
||||
}
|
||||
|
||||
type IPlugin interface {
|
||||
filter.IChain
|
||||
Destroy()
|
||||
}
|
||||
type IPluginManager interface {
|
||||
CreateRequest(id string, conf map[string]*Config) IPlugin
|
||||
CreateRequest(id string, conf map[string]*Config) eocontext.IChain
|
||||
//CreateUpstream(id string, conf map[string]*Config) IPlugin
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user