From 0666879edb74537c6d3d4ff3be6f6724817e9a5a Mon Sep 17 00:00:00 2001 From: Hugo Thunnissen Date: Mon, 13 Jan 2020 22:57:45 +0100 Subject: [PATCH] Restructure project into multiple packages --- dcwhapp/.gitkeep | 0 main.go | 20 +++++++++---------- .../bridge_context.go | 2 +- config.go => whappdc-core/config.go | 2 +- database.go => whappdc-core/database.go | 8 +++++++- deltachat.go => whappdc-core/deltachat.go | 2 +- .../message_tracker.go | 2 +- whapp.go => whappdc-core/whapp.go | 2 +- chat_worker.go => whappdc/chat_worker.go | 2 +- .../message_handlers.go | 19 +++++++++--------- .../message_worker.go | 2 +- whapp-handler.go => whappdc/whapp-handler.go | 7 ++++--- 12 files changed, 38 insertions(+), 30 deletions(-) create mode 100644 dcwhapp/.gitkeep rename bridge_context.go => whappdc-core/bridge_context.go (99%) rename config.go => whappdc-core/config.go (97%) rename database.go => whappdc-core/database.go (96%) rename deltachat.go => whappdc-core/deltachat.go (99%) rename message_tracker.go => whappdc-core/message_tracker.go (98%) rename whapp.go => whappdc-core/whapp.go (99%) rename chat_worker.go => whappdc/chat_worker.go (95%) rename message_handlers.go => whappdc/message_handlers.go (86%) rename message_worker.go => whappdc/message_worker.go (98%) rename whapp-handler.go => whappdc/whapp-handler.go (93%) diff --git a/dcwhapp/.gitkeep b/dcwhapp/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/main.go b/main.go index 698ab23..d1f624a 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,8 @@ import ( "github.com/hugot/go-deltachat/deltabot" "github.com/hugot/go-deltachat/deltachat" "github.com/hugot/whapp-deltachat/botcommands" + "github.com/hugot/whapp-deltachat/whappdc" + core "github.com/hugot/whapp-deltachat/whappdc-core" ) func main() { @@ -22,7 +24,7 @@ func main() { configPath := os.Args[1] - config, err := ConfigFromFile(configPath) + config, err := core.ConfigFromFile(configPath) if err != nil { log.Fatal(err) @@ -31,13 +33,11 @@ func main() { ensureDirectoryOrDie(config.App.DataFolder) ensureDirectoryOrDie(config.App.DataFolder + "/tmp") - db := &Database{ - dbPath: config.App.DataFolder + "/app.db", - } + db := core.NewDatabase(config.App.DataFolder + "/app.db") err = db.Init() - messageTracker := &MessageTracker{ + messageTracker := &core.MessageTracker{ DB: db, } @@ -47,13 +47,13 @@ func main() { log.Fatal(err) } - bridgeCtx := &BridgeContext{ + bridgeCtx := &core.BridgeContext{ Config: config, DB: db, MessageTracker: messageTracker, } - dcClient, err := BootstrapDcClientFromConfig(*config, bridgeCtx) + dcClient, err := core.BootstrapDcClientFromConfig(*config, bridgeCtx) bridgeCtx.SendLog("Whapp-Deltachat started.") @@ -66,7 +66,7 @@ func main() { defer dcClient.Close() for i := 0; i < 10; i++ { - err = CreateAndLoginWhappConnection( + err = core.CreateAndLoginWhappConnection( config.App.DataFolder, bridgeCtx, ) @@ -80,10 +80,10 @@ func main() { log.Fatal(err) } - messageWorker := NewMessageWorker() + messageWorker := whappdc.NewMessageWorker() messageWorker.Start() - bridgeCtx.WhappConn.AddHandler(&WhappHandler{ + bridgeCtx.WhappConn.AddHandler(&whappdc.WhappHandler{ BridgeContext: bridgeCtx, MessageWorker: messageWorker, }) diff --git a/bridge_context.go b/whappdc-core/bridge_context.go similarity index 99% rename from bridge_context.go rename to whappdc-core/bridge_context.go index 4e5ff09..6f73209 100644 --- a/bridge_context.go +++ b/whappdc-core/bridge_context.go @@ -1,4 +1,4 @@ -package main +package core import ( "log" diff --git a/config.go b/whappdc-core/config.go similarity index 97% rename from config.go rename to whappdc-core/config.go index d2be0fb..661c7eb 100644 --- a/config.go +++ b/whappdc-core/config.go @@ -1,4 +1,4 @@ -package main +package core import ( "io/ioutil" diff --git a/database.go b/whappdc-core/database.go similarity index 96% rename from database.go rename to whappdc-core/database.go index 9168f7e..df7c1d8 100644 --- a/database.go +++ b/whappdc-core/database.go @@ -1,4 +1,4 @@ -package main +package core import ( "encoding/binary" @@ -6,6 +6,12 @@ import ( "go.etcd.io/bbolt" ) +func NewDatabase(dbPath string) *Database { + return &Database{ + dbPath: dbPath, + } +} + type Database struct { db *bbolt.DB dbPath string diff --git a/deltachat.go b/whappdc-core/deltachat.go similarity index 99% rename from deltachat.go rename to whappdc-core/deltachat.go index 2a6afe9..b9d7823 100644 --- a/deltachat.go +++ b/whappdc-core/deltachat.go @@ -1,4 +1,4 @@ -package main +package core import ( "encoding/binary" diff --git a/message_tracker.go b/whappdc-core/message_tracker.go similarity index 98% rename from message_tracker.go rename to whappdc-core/message_tracker.go index c58778f..5fdddad 100644 --- a/message_tracker.go +++ b/whappdc-core/message_tracker.go @@ -1,4 +1,4 @@ -package main +package core import ( "sync" diff --git a/whapp.go b/whappdc-core/whapp.go similarity index 99% rename from whapp.go rename to whappdc-core/whapp.go index a2f6ba1..37cb6fe 100644 --- a/whapp.go +++ b/whappdc-core/whapp.go @@ -1,4 +1,4 @@ -package main +package core import ( "encoding/json" diff --git a/chat_worker.go b/whappdc/chat_worker.go similarity index 95% rename from chat_worker.go rename to whappdc/chat_worker.go index 5116fec..6873273 100644 --- a/chat_worker.go +++ b/whappdc/chat_worker.go @@ -1,4 +1,4 @@ -package main +package whappdc import "log" diff --git a/message_handlers.go b/whappdc/message_handlers.go similarity index 86% rename from message_handlers.go rename to whappdc/message_handlers.go index 3000c07..1ac5389 100644 --- a/message_handlers.go +++ b/whappdc/message_handlers.go @@ -1,4 +1,4 @@ -package main +package whappdc import ( "fmt" @@ -7,6 +7,7 @@ import ( "github.com/Rhymen/go-whatsapp" "github.com/hugot/go-deltachat/deltachat" + core "github.com/hugot/whapp-deltachat/whappdc-core" ) type MessageHandler struct { @@ -16,7 +17,7 @@ type MessageHandler struct { type MessageAction func() error -func MakeTextMessageAction(b *BridgeContext, m whatsapp.TextMessage) MessageAction { +func MakeTextMessageAction(b *core.BridgeContext, m whatsapp.TextMessage) MessageAction { return func() error { if !b.ShouldMessageBeSent(m.Info) { 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 { if !b.ShouldMessageBeSent(m.Info) { 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 { if !b.ShouldMessageBeSent(m.Info) { 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 { if !b.ShouldMessageBeSent(m.Info) { 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 { if !b.ShouldMessageBeSent(m.Info) { 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 { if !b.ShouldMessageBeSent(m.Info) { return nil @@ -243,7 +244,7 @@ func MakeContactMessageAction(b *BridgeContext, m whatsapp.ContactMessage) Messa //// // Helpers -func DetermineSenderName(b *BridgeContext, info whatsapp.MessageInfo) string { +func DetermineSenderName(b *core.BridgeContext, info whatsapp.MessageInfo) string { senderName := info.Source.GetParticipant() // 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 } -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( b.Config.App.DataFolder+"/tmp", template, diff --git a/message_worker.go b/whappdc/message_worker.go similarity index 98% rename from message_worker.go rename to whappdc/message_worker.go index 928da2e..1619adf 100644 --- a/message_worker.go +++ b/whappdc/message_worker.go @@ -1,4 +1,4 @@ -package main +package whappdc import "log" diff --git a/whapp-handler.go b/whappdc/whapp-handler.go similarity index 93% rename from whapp-handler.go rename to whappdc/whapp-handler.go index 90d4167..4b59010 100644 --- a/whapp-handler.go +++ b/whappdc/whapp-handler.go @@ -1,14 +1,15 @@ -package main +package whappdc import ( "fmt" "log" "github.com/Rhymen/go-whatsapp" + core "github.com/hugot/whapp-deltachat/whappdc-core" ) type WhappHandler struct { - BridgeContext *BridgeContext + BridgeContext *core.BridgeContext MessageWorker *MessageWorker } @@ -19,7 +20,7 @@ func (h *WhappHandler) HandleError(err error) { } if _, connectionFailed := err.(*whatsapp.ErrConnectionFailed); connectionFailed { - err = RestoreWhappSessionFromStorage( + err = core.RestoreWhappSessionFromStorage( h.BridgeContext.Config.App.DataFolder, h.BridgeContext.WhappConn, )