Restructure project into multiple packages

master
Hugo Thunnissen 4 years ago
parent 022980b777
commit 0666879edb

@ -10,6 +10,8 @@ import (
"github.com/hugot/go-deltachat/deltabot" "github.com/hugot/go-deltachat/deltabot"
"github.com/hugot/go-deltachat/deltachat" "github.com/hugot/go-deltachat/deltachat"
"github.com/hugot/whapp-deltachat/botcommands" "github.com/hugot/whapp-deltachat/botcommands"
"github.com/hugot/whapp-deltachat/whappdc"
core "github.com/hugot/whapp-deltachat/whappdc-core"
) )
func main() { func main() {
@ -22,7 +24,7 @@ func main() {
configPath := os.Args[1] configPath := os.Args[1]
config, err := ConfigFromFile(configPath) config, err := core.ConfigFromFile(configPath)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
@ -31,13 +33,11 @@ func main() {
ensureDirectoryOrDie(config.App.DataFolder) ensureDirectoryOrDie(config.App.DataFolder)
ensureDirectoryOrDie(config.App.DataFolder + "/tmp") ensureDirectoryOrDie(config.App.DataFolder + "/tmp")
db := &Database{ db := core.NewDatabase(config.App.DataFolder + "/app.db")
dbPath: config.App.DataFolder + "/app.db",
}
err = db.Init() err = db.Init()
messageTracker := &MessageTracker{ messageTracker := &core.MessageTracker{
DB: db, DB: db,
} }
@ -47,13 +47,13 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
bridgeCtx := &BridgeContext{ bridgeCtx := &core.BridgeContext{
Config: config, Config: config,
DB: db, DB: db,
MessageTracker: messageTracker, MessageTracker: messageTracker,
} }
dcClient, err := BootstrapDcClientFromConfig(*config, bridgeCtx) dcClient, err := core.BootstrapDcClientFromConfig(*config, bridgeCtx)
bridgeCtx.SendLog("Whapp-Deltachat started.") bridgeCtx.SendLog("Whapp-Deltachat started.")
@ -66,7 +66,7 @@ func main() {
defer dcClient.Close() defer dcClient.Close()
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
err = CreateAndLoginWhappConnection( err = core.CreateAndLoginWhappConnection(
config.App.DataFolder, config.App.DataFolder,
bridgeCtx, bridgeCtx,
) )
@ -80,10 +80,10 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
messageWorker := NewMessageWorker() messageWorker := whappdc.NewMessageWorker()
messageWorker.Start() messageWorker.Start()
bridgeCtx.WhappConn.AddHandler(&WhappHandler{ bridgeCtx.WhappConn.AddHandler(&whappdc.WhappHandler{
BridgeContext: bridgeCtx, BridgeContext: bridgeCtx,
MessageWorker: messageWorker, MessageWorker: messageWorker,
}) })

@ -1,4 +1,4 @@
package main package core
import ( import (
"log" "log"

@ -1,4 +1,4 @@
package main package core
import ( import (
"io/ioutil" "io/ioutil"

@ -1,4 +1,4 @@
package main package core
import ( import (
"encoding/binary" "encoding/binary"
@ -6,6 +6,12 @@ import (
"go.etcd.io/bbolt" "go.etcd.io/bbolt"
) )
func NewDatabase(dbPath string) *Database {
return &Database{
dbPath: dbPath,
}
}
type Database struct { type Database struct {
db *bbolt.DB db *bbolt.DB
dbPath string dbPath string

@ -1,4 +1,4 @@
package main package core
import ( import (
"encoding/binary" "encoding/binary"

@ -1,4 +1,4 @@
package main package core
import ( import (
"sync" "sync"

@ -1,4 +1,4 @@
package main package core
import ( import (
"encoding/json" "encoding/json"

@ -1,4 +1,4 @@
package main package whappdc
import "log" import "log"

@ -1,4 +1,4 @@
package main package whappdc
import ( import (
"fmt" "fmt"
@ -7,6 +7,7 @@ import (
"github.com/Rhymen/go-whatsapp" "github.com/Rhymen/go-whatsapp"
"github.com/hugot/go-deltachat/deltachat" "github.com/hugot/go-deltachat/deltachat"
core "github.com/hugot/whapp-deltachat/whappdc-core"
) )
type MessageHandler struct { type MessageHandler struct {
@ -16,7 +17,7 @@ type MessageHandler struct {
type MessageAction func() error type MessageAction func() error
func MakeTextMessageAction(b *BridgeContext, m whatsapp.TextMessage) MessageAction { func MakeTextMessageAction(b *core.BridgeContext, m whatsapp.TextMessage) MessageAction {
return func() error { return func() error {
if !b.ShouldMessageBeSent(m.Info) { if !b.ShouldMessageBeSent(m.Info) {
return nil return nil
@ -41,7 +42,7 @@ func MakeTextMessageAction(b *BridgeContext, m whatsapp.TextMessage) MessageActi
} }
} }
func MakeImageMessageAction(b *BridgeContext, m whatsapp.ImageMessage) MessageAction { func MakeImageMessageAction(b *core.BridgeContext, m whatsapp.ImageMessage) MessageAction {
return func() error { return func() error {
if !b.ShouldMessageBeSent(m.Info) { if !b.ShouldMessageBeSent(m.Info) {
return nil return nil
@ -82,7 +83,7 @@ func MakeImageMessageAction(b *BridgeContext, m whatsapp.ImageMessage) MessageAc
} }
} }
func MakeDocumentMessageAction(b *BridgeContext, m whatsapp.DocumentMessage) MessageAction { func MakeDocumentMessageAction(b *core.BridgeContext, m whatsapp.DocumentMessage) MessageAction {
return func() error { return func() error {
if !b.ShouldMessageBeSent(m.Info) { if !b.ShouldMessageBeSent(m.Info) {
return nil return nil
@ -123,7 +124,7 @@ func MakeDocumentMessageAction(b *BridgeContext, m whatsapp.DocumentMessage) Mes
} }
} }
func MakeAudioMessageAction(b *BridgeContext, m whatsapp.AudioMessage) MessageAction { func MakeAudioMessageAction(b *core.BridgeContext, m whatsapp.AudioMessage) MessageAction {
return func() error { return func() error {
if !b.ShouldMessageBeSent(m.Info) { if !b.ShouldMessageBeSent(m.Info) {
return nil return nil
@ -164,7 +165,7 @@ func MakeAudioMessageAction(b *BridgeContext, m whatsapp.AudioMessage) MessageAc
} }
} }
func MakeVideoMessageAction(b *BridgeContext, m whatsapp.VideoMessage) MessageAction { func MakeVideoMessageAction(b *core.BridgeContext, m whatsapp.VideoMessage) MessageAction {
return func() error { return func() error {
if !b.ShouldMessageBeSent(m.Info) { if !b.ShouldMessageBeSent(m.Info) {
return nil return nil
@ -205,7 +206,7 @@ func MakeVideoMessageAction(b *BridgeContext, m whatsapp.VideoMessage) MessageAc
} }
} }
func MakeContactMessageAction(b *BridgeContext, m whatsapp.ContactMessage) MessageAction { func MakeContactMessageAction(b *core.BridgeContext, m whatsapp.ContactMessage) MessageAction {
return func() error { return func() error {
if !b.ShouldMessageBeSent(m.Info) { if !b.ShouldMessageBeSent(m.Info) {
return nil return nil
@ -243,7 +244,7 @@ func MakeContactMessageAction(b *BridgeContext, m whatsapp.ContactMessage) Messa
//// ////
// Helpers // Helpers
func DetermineSenderName(b *BridgeContext, info whatsapp.MessageInfo) string { func DetermineSenderName(b *core.BridgeContext, info whatsapp.MessageInfo) string {
senderName := info.Source.GetParticipant() senderName := info.Source.GetParticipant()
// No participant probably means that this isn't a group chat. // No participant probably means that this isn't a group chat.
@ -266,7 +267,7 @@ func DetermineSenderName(b *BridgeContext, info whatsapp.MessageInfo) string {
return senderName return senderName
} }
func WriteTempFile(b *BridgeContext, data []byte, template string) (string, error) { func WriteTempFile(b *core.BridgeContext, data []byte, template string) (string, error) {
tmpFile, err := ioutil.TempFile( tmpFile, err := ioutil.TempFile(
b.Config.App.DataFolder+"/tmp", b.Config.App.DataFolder+"/tmp",
template, template,

@ -1,4 +1,4 @@
package main package whappdc
import "log" import "log"

@ -1,14 +1,15 @@
package main package whappdc
import ( import (
"fmt" "fmt"
"log" "log"
"github.com/Rhymen/go-whatsapp" "github.com/Rhymen/go-whatsapp"
core "github.com/hugot/whapp-deltachat/whappdc-core"
) )
type WhappHandler struct { type WhappHandler struct {
BridgeContext *BridgeContext BridgeContext *core.BridgeContext
MessageWorker *MessageWorker MessageWorker *MessageWorker
} }
@ -19,7 +20,7 @@ func (h *WhappHandler) HandleError(err error) {
} }
if _, connectionFailed := err.(*whatsapp.ErrConnectionFailed); connectionFailed { if _, connectionFailed := err.(*whatsapp.ErrConnectionFailed); connectionFailed {
err = RestoreWhappSessionFromStorage( err = core.RestoreWhappSessionFromStorage(
h.BridgeContext.Config.App.DataFolder, h.BridgeContext.Config.App.DataFolder,
h.BridgeContext.WhappConn, h.BridgeContext.WhappConn,
) )
Loading…
Cancel
Save