mirror of
https://github.com/mrusme/neonmodem.git
synced 2024-11-03 04:27:16 -05:00
39 lines
658 B
Go
39 lines
658 B
Go
|
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"
|
||
|
)
|
||
|
|
||
|
type System interface {
|
||
|
GetCapabilities() []adapter.Capability
|
||
|
|
||
|
Load() error
|
||
|
|
||
|
ListPosts() ([]post.Post, error)
|
||
|
}
|
||
|
|
||
|
func New(sysType string, sysConfig *map[string]interface{}) (System, error) {
|
||
|
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")
|
||
|
}
|
||
|
|
||
|
err := sys.Load()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return sys, nil
|
||
|
}
|