1
0
mirror of https://github.com/mrusme/neonmodem.git synced 2024-06-30 06:45:24 +00:00
neonmodem/system/system.go

50 lines
903 B
Go
Raw Normal View History

2022-12-29 03:22:36 +00:00
package system
import (
"errors"
"github.com/mrusme/gobbs/models/post"
"github.com/mrusme/gobbs/system/adapter"
"github.com/mrusme/gobbs/system/discourse"
"github.com/mrusme/gobbs/system/lemmy"
2022-12-30 03:03:38 +00:00
"go.uber.org/zap"
2022-12-29 03:22:36 +00:00
)
type System interface {
GetConfig() map[string]interface{}
SetConfig(cfg *map[string]interface{})
2022-12-30 03:03:38 +00:00
SetLogger(logger *zap.SugaredLogger)
2022-12-29 03:22:36 +00:00
GetCapabilities() []adapter.Capability
2022-12-29 22:46:59 +00:00
Connect(sysURL string) error
2022-12-29 03:22:36 +00:00
Load() error
ListPosts() ([]post.Post, error)
}
2022-12-30 03:03:38 +00:00
func New(
sysType string,
sysConfig *map[string]interface{},
logger *zap.SugaredLogger,
) (System, error) {
2022-12-29 03:22:36 +00:00
var sys System
switch sysType {
case "discourse":
sys = new(discourse.System)
case "lemmy":
sys = new(lemmy.System)
default:
return nil, errors.New("No such system")
}
sys.SetConfig(sysConfig)
2022-12-30 03:03:38 +00:00
sys.SetLogger(logger)
2022-12-29 03:22:36 +00:00
err := sys.Load()
if err != nil {
return nil, err
}
return sys, nil
}