1
0
mirror of https://github.com/mrusme/neonmodem.git synced 2024-07-07 02:54:15 -04:00
neonmodem/system/lemmy/lemmy.go

97 lines
1.8 KiB
Go
Raw Normal View History

2022-12-28 22:22:36 -05:00
package lemmy
import (
2022-12-30 00:39:51 -05:00
"context"
2022-12-28 22:22:36 -05:00
"github.com/mrusme/gobbs/models/post"
"github.com/mrusme/gobbs/system/adapter"
2022-12-30 00:39:51 -05:00
"go.arsenm.dev/go-lemmy"
"go.arsenm.dev/go-lemmy/types"
2022-12-29 22:03:38 -05:00
"go.uber.org/zap"
2022-12-28 22:22:36 -05:00
)
type System struct {
config map[string]interface{}
2022-12-29 22:03:38 -05:00
logger *zap.SugaredLogger
2022-12-30 00:39:51 -05:00
client *lemmy.Client
}
func (sys *System) GetConfig() map[string]interface{} {
return sys.config
}
func (sys *System) SetConfig(cfg *map[string]interface{}) {
sys.config = *cfg
2022-12-28 22:22:36 -05:00
}
2022-12-29 22:03:38 -05:00
func (sys *System) SetLogger(logger *zap.SugaredLogger) {
sys.logger = logger
}
2022-12-28 22:22:36 -05:00
func (sys *System) Load() error {
2022-12-30 00:39:51 -05:00
var err error
url := sys.config["url"]
if url == nil {
return nil
}
2022-12-30 00:43:32 -05:00
sys.client, err = lemmy.New(url.(string))
2022-12-30 00:39:51 -05:00
if err != nil {
return err
}
credentials := make(map[string]string)
for k, v := range (sys.config["credentials"]).(map[string]interface{}) {
credentials[k] = v.(string)
}
err = sys.client.Login(context.Background(), types.Login{
UsernameOrEmail: credentials["username"],
Password: credentials["password"],
})
if err != nil {
return err
}
2022-12-28 22:22:36 -05:00
return nil
}
func (sys *System) ListPosts() ([]post.Post, error) {
2022-12-30 00:39:51 -05:00
resp, err := sys.client.Posts(context.Background(), types.GetPosts{
Type: types.NewOptional(types.ListingLocal),
Sort: types.NewOptional(types.New),
})
if err != nil {
return []post.Post{}, err
}
var models []post.Post
for _, i := range resp.Posts {
models = append(models, post.Post{
ID: string(i.Post.ID),
Subject: i.Post.Name,
})
}
return models, nil
2022-12-28 22:22:36 -05:00
}
func (sys *System) GetCapabilities() []adapter.Capability {
var caps []adapter.Capability
caps = append(caps, adapter.Capability{
ID: "posts",
Name: "Posts",
})
caps = append(caps, adapter.Capability{
ID: "groups",
Name: "Groups",
})
caps = append(caps, adapter.Capability{
ID: "search",
Name: "Search",
})
return caps
}