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/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,
})

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

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

@ -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

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

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

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

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

@ -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,

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

@ -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,
)
Loading…
Cancel
Save