Simplify main.go
This commit is contained in:
@@ -1,94 +1,12 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
kfx "git.kocoder.xyz/kocoded/vt/fx"
|
"git.kocoder.xyz/kocoded/vt/core"
|
||||||
"git.kocoder.xyz/kocoded/vt/fx/interfaces"
|
"git.kocoder.xyz/kocoded/vt/fx"
|
||||||
"git.kocoder.xyz/kocoded/vt/fx/interfaces/stores"
|
|
||||||
"git.kocoder.xyz/kocoded/vt/integration"
|
|
||||||
"git.kocoder.xyz/kocoded/vt/integration/mailing"
|
|
||||||
"git.kocoder.xyz/kocoded/vt/interceptors"
|
|
||||||
"git.kocoder.xyz/kocoded/vt/repositories"
|
|
||||||
mandantv1 "git.kocoder.xyz/kocoded/vt/routers/mandant/v1"
|
|
||||||
messagebusv1 "git.kocoder.xyz/kocoded/vt/routers/messagebus/v1"
|
|
||||||
projectv1 "git.kocoder.xyz/kocoded/vt/routers/project/v1"
|
|
||||||
todov1 "git.kocoder.xyz/kocoded/vt/routers/todo/v1"
|
|
||||||
"git.kocoder.xyz/kocoded/vt/utils"
|
|
||||||
"github.com/joho/godotenv"
|
|
||||||
"go.uber.org/fx"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func AsIntegration(f any) any {
|
|
||||||
return fx.Annotate(
|
|
||||||
f,
|
|
||||||
fx.As(new(interfaces.BasicIntegration)),
|
|
||||||
fx.ResultTags(`group:"integration"`),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func AsRoute(f any) any {
|
|
||||||
return fx.Annotate(
|
|
||||||
f,
|
|
||||||
fx.As(new(kfx.Handler)),
|
|
||||||
fx.ResultTags(`group:"connectRoute"`),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
err := godotenv.Load()
|
core.Main(fx.SetupOTelSDK, func(*http.Server) {})
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Error loading env vars... %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
fx.New(
|
|
||||||
fx.Provide(
|
|
||||||
kfx.NewHTTPServer,
|
|
||||||
utils.NewReflector,
|
|
||||||
utils.NewHealthchecker,
|
|
||||||
|
|
||||||
utils.NewDB,
|
|
||||||
utils.NewCache,
|
|
||||||
|
|
||||||
utils.NewOIDCProvider,
|
|
||||||
utils.NewOIDCVerifier,
|
|
||||||
|
|
||||||
fx.Annotate(repositories.NewSessionRepository, fx.As(new(stores.SessionStore))),
|
|
||||||
fx.Annotate(repositories.NewInMemeoryMessageRepository, fx.As(new(stores.MessageStore))),
|
|
||||||
interceptors.NewOIDCInterceptor,
|
|
||||||
|
|
||||||
AsIntegration(mailing.NewImapIntegration),
|
|
||||||
fx.Annotate(
|
|
||||||
integration.NewIntegrationHandler,
|
|
||||||
fx.ParamTags(`group:"integration"`),
|
|
||||||
),
|
|
||||||
|
|
||||||
kfx.NewOtelLoggerProvider,
|
|
||||||
kfx.NewOtelMeterProvider,
|
|
||||||
kfx.NewOtelTracerProvider,
|
|
||||||
kfx.NewLogger,
|
|
||||||
|
|
||||||
AsRoute(utils.NewHealthCheckV1),
|
|
||||||
|
|
||||||
AsRoute(utils.NewReflectorV1),
|
|
||||||
AsRoute(utils.NewReflectorV1Alpha1),
|
|
||||||
|
|
||||||
AsRoute(kfx.NewEchoHandler),
|
|
||||||
|
|
||||||
AsRoute(messagebusv1.NewMessagebusRoute),
|
|
||||||
|
|
||||||
AsRoute(projectv1.NewProjectRoute),
|
|
||||||
AsRoute(todov1.NewTodoRoute),
|
|
||||||
AsRoute(mandantv1.NewMandantRoute),
|
|
||||||
|
|
||||||
fx.Annotate(
|
|
||||||
kfx.NewServeMux,
|
|
||||||
fx.ParamTags(`group:"connectRoute"`),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
fx.Invoke(func(*integration.IntegrationHandler) {}, kfx.SetupOTelSDK, func(*http.Server) {}),
|
|
||||||
).Run()
|
|
||||||
}
|
}
|
||||||
|
|||||||
19
cmd/cronjobs/imap/main.go
Normal file
19
cmd/cronjobs/imap/main.go
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.kocoder.xyz/kocoded/vt/core"
|
||||||
|
"git.kocoder.xyz/kocoded/vt/integration"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second*15)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
app := core.Main(func(*integration.IntegrationHandler) {})
|
||||||
|
app.Stop(ctx)
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
100
core/main.go
Normal file
100
core/main.go
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
package core
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/joho/godotenv"
|
||||||
|
"go.uber.org/fx"
|
||||||
|
|
||||||
|
kfx "git.kocoder.xyz/kocoded/vt/fx"
|
||||||
|
"git.kocoder.xyz/kocoded/vt/fx/interfaces"
|
||||||
|
"git.kocoder.xyz/kocoded/vt/fx/interfaces/stores"
|
||||||
|
"git.kocoder.xyz/kocoded/vt/integration"
|
||||||
|
"git.kocoder.xyz/kocoded/vt/integration/mailing"
|
||||||
|
"git.kocoder.xyz/kocoded/vt/interceptors"
|
||||||
|
"git.kocoder.xyz/kocoded/vt/repositories"
|
||||||
|
mandantv1 "git.kocoder.xyz/kocoded/vt/routers/mandant/v1"
|
||||||
|
messagebusv1 "git.kocoder.xyz/kocoded/vt/routers/messagebus/v1"
|
||||||
|
projectv1 "git.kocoder.xyz/kocoded/vt/routers/project/v1"
|
||||||
|
todov1 "git.kocoder.xyz/kocoded/vt/routers/todo/v1"
|
||||||
|
"git.kocoder.xyz/kocoded/vt/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AsIntegration(f any) any {
|
||||||
|
return fx.Annotate(
|
||||||
|
f,
|
||||||
|
fx.As(new(interfaces.BasicIntegration)),
|
||||||
|
fx.ResultTags(`group:"integration"`),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func AsRoute(f any) any {
|
||||||
|
return fx.Annotate(
|
||||||
|
f,
|
||||||
|
fx.As(new(kfx.Handler)),
|
||||||
|
fx.ResultTags(`group:"connectRoute"`),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Main(funcs ...interface{}) *fx.App {
|
||||||
|
context := context.Background()
|
||||||
|
err := godotenv.Load()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error loading env vars... %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
app := fx.New(
|
||||||
|
fx.Provide(
|
||||||
|
kfx.NewHTTPServer,
|
||||||
|
utils.NewReflector,
|
||||||
|
utils.NewHealthchecker,
|
||||||
|
|
||||||
|
utils.NewDB,
|
||||||
|
utils.NewCache,
|
||||||
|
|
||||||
|
utils.NewOIDCProvider,
|
||||||
|
utils.NewOIDCVerifier,
|
||||||
|
|
||||||
|
fx.Annotate(repositories.NewSessionRepository, fx.As(new(stores.SessionStore))),
|
||||||
|
fx.Annotate(repositories.NewInMemeoryMessageRepository, fx.As(new(stores.MessageStore))),
|
||||||
|
interceptors.NewOIDCInterceptor,
|
||||||
|
|
||||||
|
AsIntegration(mailing.NewImapIntegration),
|
||||||
|
fx.Annotate(
|
||||||
|
integration.NewIntegrationHandler,
|
||||||
|
fx.ParamTags(`group:"integration"`),
|
||||||
|
),
|
||||||
|
|
||||||
|
kfx.NewOtelLoggerProvider,
|
||||||
|
kfx.NewOtelMeterProvider,
|
||||||
|
kfx.NewOtelTracerProvider,
|
||||||
|
kfx.NewLogger,
|
||||||
|
|
||||||
|
AsRoute(utils.NewHealthCheckV1),
|
||||||
|
|
||||||
|
AsRoute(utils.NewReflectorV1),
|
||||||
|
AsRoute(utils.NewReflectorV1Alpha1),
|
||||||
|
|
||||||
|
AsRoute(kfx.NewEchoHandler),
|
||||||
|
|
||||||
|
AsRoute(messagebusv1.NewMessagebusRoute),
|
||||||
|
|
||||||
|
AsRoute(projectv1.NewProjectRoute),
|
||||||
|
AsRoute(todov1.NewTodoRoute),
|
||||||
|
AsRoute(mandantv1.NewMandantRoute),
|
||||||
|
|
||||||
|
fx.Annotate(
|
||||||
|
kfx.NewServeMux,
|
||||||
|
fx.ParamTags(`group:"connectRoute"`),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
fx.Invoke(funcs...),
|
||||||
|
)
|
||||||
|
|
||||||
|
app.Start(context)
|
||||||
|
|
||||||
|
return app
|
||||||
|
}
|
||||||
@@ -3,6 +3,8 @@ package mailing
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.kocoder.xyz/kocoded/vt/fx/interfaces"
|
"git.kocoder.xyz/kocoded/vt/fx/interfaces"
|
||||||
@@ -39,7 +41,12 @@ func NewImapIntegration() interfaces.BasicIntegration {
|
|||||||
imap.DialTimeout = 10 * time.Second
|
imap.DialTimeout = 10 * time.Second
|
||||||
imap.CommandTimeout = 30 * time.Second
|
imap.CommandTimeout = 30 * time.Second
|
||||||
|
|
||||||
m, err := imap.New("me@kocoder.xyz", "&,25,upMeddeEnTYPTifaccEptIonaAlErGiE", "mx.kocoder.xyz", 993)
|
port, err := strconv.Atoi(os.Getenv("IMAP_INTEGRATION_PORT"))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
m, err := imap.New(os.Getenv("IMAP_INTEGRATION_USER"), os.Getenv("IMAP_INTEGRATION_PASS"), os.Getenv("IMAP_INTEGRATION_HOST"), port)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@@ -54,7 +61,7 @@ func NewImapIntegration() interfaces.BasicIntegration {
|
|||||||
panic("Search")
|
panic("Search")
|
||||||
}
|
}
|
||||||
|
|
||||||
emails, err := m.GetEmails(uids[:5]...)
|
emails, err := m.GetEmails(uids...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("Getting EMails")
|
panic("Getting EMails")
|
||||||
}
|
}
|
||||||
@@ -62,6 +69,7 @@ func NewImapIntegration() interfaces.BasicIntegration {
|
|||||||
for uid, email := range emails {
|
for uid, email := range emails {
|
||||||
fmt.Printf("\n--- Email UID %d ---\n", uid)
|
fmt.Printf("\n--- Email UID %d ---\n", uid)
|
||||||
fmt.Printf("From: %s\n", email.From)
|
fmt.Printf("From: %s\n", email.From)
|
||||||
|
fmt.Printf("To: %s\n", email.To)
|
||||||
fmt.Printf("Subject: %s\n", email.Subject)
|
fmt.Printf("Subject: %s\n", email.Subject)
|
||||||
fmt.Printf("Date: %s\n", email.Sent.Format("Jan 2, 2006 3:04 PM"))
|
fmt.Printf("Date: %s\n", email.Sent.Format("Jan 2, 2006 3:04 PM"))
|
||||||
fmt.Printf("Size: %.1f KB\n", float64(email.Size)/1024)
|
fmt.Printf("Size: %.1f KB\n", float64(email.Size)/1024)
|
||||||
|
|||||||
Reference in New Issue
Block a user