Browse Source

feat: move controller to transport layer rest

pull/28/head
Aldino Kemal 3 years ago
parent
commit
d4ebf40d11
  1. 30
      src/cmd/root.go
  2. 27
      src/internal/rest/app_rest.go
  3. 31
      src/internal/rest/send_controller.go
  4. 24
      src/internal/rest/user_controller.go

30
src/cmd/root.go

@ -4,7 +4,7 @@ import (
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"github.com/aldinokemal/go-whatsapp-web-multidevice/config" "github.com/aldinokemal/go-whatsapp-web-multidevice/config"
"github.com/aldinokemal/go-whatsapp-web-multidevice/controllers"
"github.com/aldinokemal/go-whatsapp-web-multidevice/internal/rest"
"github.com/aldinokemal/go-whatsapp-web-multidevice/middleware" "github.com/aldinokemal/go-whatsapp-web-multidevice/middleware"
"github.com/aldinokemal/go-whatsapp-web-multidevice/services" "github.com/aldinokemal/go-whatsapp-web-multidevice/services"
"github.com/aldinokemal/go-whatsapp-web-multidevice/utils" "github.com/aldinokemal/go-whatsapp-web-multidevice/utils"
@ -71,19 +71,6 @@ func runRest(cmd *cobra.Command, args []string) {
AllowHeaders: "Origin, Content-Type, Accept", AllowHeaders: "Origin, Content-Type, Accept",
})) }))
db := utils.InitWaDB()
cli := utils.InitWaCLI(db)
// Service
appService := services.NewAppService(cli, db)
sendService := services.NewSendService(cli)
userService := services.NewUserService(cli)
// Controller
appController := controllers.NewAppController(appService)
sendController := controllers.NewSendController(sendService)
userController := controllers.NewUserController(userService)
if config.AppBasicAuthCredential != "" { if config.AppBasicAuthCredential != "" {
ba := strings.Split(config.AppBasicAuthCredential, ":") ba := strings.Split(config.AppBasicAuthCredential, ":")
if len(ba) != 2 { if len(ba) != 2 {
@ -97,9 +84,18 @@ func runRest(cmd *cobra.Command, args []string) {
})) }))
} }
appController.Route(app)
sendController.Route(app)
userController.Route(app)
db := utils.InitWaDB()
cli := utils.InitWaCLI(db)
// Service
appService := services.NewAppService(cli, db)
sendService := services.NewSendService(cli)
userService := services.NewUserService(cli)
// Rest
rest.InitRestApp(app, appService)
rest.InitRestSend(app, sendService)
rest.InitRestUser(app, userService)
app.Get("/", func(ctx *fiber.Ctx) error { app.Get("/", func(ctx *fiber.Ctx) error {
return ctx.Render("index", fiber.Map{ return ctx.Render("index", fiber.Map{

27
src/controllers/app_controller.go → src/internal/rest/app_rest.go

@ -1,4 +1,4 @@
package controllers
package rest
import ( import (
"fmt" "fmt"
@ -7,22 +7,21 @@ import (
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
type AppController struct {
type App struct {
Service domainApp.IAppService Service domainApp.IAppService
} }
func NewAppController(service domainApp.IAppService) AppController {
return AppController{Service: service}
}
func InitRestApp(app *fiber.App, service domainApp.IAppService) App {
rest := App{Service: service}
app.Get("/app/login", rest.Login)
app.Get("/app/logout", rest.Logout)
app.Get("/app/reconnect", rest.Reconnect)
app.Get("/app/devices", rest.Devices)
func (controller *AppController) Route(app *fiber.App) {
app.Get("/app/login", controller.Login)
app.Get("/app/logout", controller.Logout)
app.Get("/app/reconnect", controller.Reconnect)
app.Get("/app/devices", controller.Devices)
return App{Service: service}
} }
func (controller *AppController) Login(c *fiber.Ctx) error {
func (controller *App) Login(c *fiber.Ctx) error {
response, err := controller.Service.Login(c.Context()) response, err := controller.Service.Login(c.Context())
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -36,7 +35,7 @@ func (controller *AppController) Login(c *fiber.Ctx) error {
}) })
} }
func (controller *AppController) Logout(c *fiber.Ctx) error {
func (controller *App) Logout(c *fiber.Ctx) error {
err := controller.Service.Logout(c.Context()) err := controller.Service.Logout(c.Context())
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -47,7 +46,7 @@ func (controller *AppController) Logout(c *fiber.Ctx) error {
}) })
} }
func (controller *AppController) Reconnect(c *fiber.Ctx) error {
func (controller *App) Reconnect(c *fiber.Ctx) error {
err := controller.Service.Reconnect(c.Context()) err := controller.Service.Reconnect(c.Context())
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -58,7 +57,7 @@ func (controller *AppController) Reconnect(c *fiber.Ctx) error {
}) })
} }
func (controller *AppController) Devices(c *fiber.Ctx) error {
func (controller *App) Devices(c *fiber.Ctx) error {
devices, err := controller.Service.FetchDevices(c.Context()) devices, err := controller.Service.FetchDevices(c.Context())
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)

31
src/controllers/send_controller.go → src/internal/rest/send_controller.go

@ -1,4 +1,4 @@
package controllers
package rest
import ( import (
domainSend "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/send" domainSend "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/send"
@ -7,23 +7,22 @@ import (
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
type SendController struct {
type Send struct {
Service domainSend.ISendService Service domainSend.ISendService
} }
func NewSendController(service domainSend.ISendService) SendController {
return SendController{Service: service}
}
func InitRestSend(app *fiber.App, service domainSend.ISendService) Send {
rest := Send{Service: service}
app.Post("/send/message", rest.SendText)
app.Post("/send/image", rest.SendImage)
app.Post("/send/file", rest.SendFile)
app.Post("/send/video", rest.SendVideo)
app.Post("/send/contact", rest.SendContact)
func (controller *SendController) Route(app *fiber.App) {
app.Post("/send/message", controller.SendText)
app.Post("/send/image", controller.SendImage)
app.Post("/send/file", controller.SendFile)
app.Post("/send/video", controller.SendVideo)
app.Post("/send/contact", controller.SendContact)
return rest
} }
func (controller *SendController) SendText(c *fiber.Ctx) error {
func (controller *Send) SendText(c *fiber.Ctx) error {
var request domainSend.MessageRequest var request domainSend.MessageRequest
err := c.BodyParser(&request) err := c.BodyParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -47,7 +46,7 @@ func (controller *SendController) SendText(c *fiber.Ctx) error {
}) })
} }
func (controller *SendController) SendImage(c *fiber.Ctx) error {
func (controller *Send) SendImage(c *fiber.Ctx) error {
var request domainSend.ImageRequest var request domainSend.ImageRequest
request.Compress = true request.Compress = true
@ -78,7 +77,7 @@ func (controller *SendController) SendImage(c *fiber.Ctx) error {
}) })
} }
func (controller *SendController) SendFile(c *fiber.Ctx) error {
func (controller *Send) SendFile(c *fiber.Ctx) error {
var request domainSend.FileRequest var request domainSend.FileRequest
err := c.BodyParser(&request) err := c.BodyParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -107,7 +106,7 @@ func (controller *SendController) SendFile(c *fiber.Ctx) error {
}) })
} }
func (controller *SendController) SendVideo(c *fiber.Ctx) error {
func (controller *Send) SendVideo(c *fiber.Ctx) error {
var request domainSend.VideoRequest var request domainSend.VideoRequest
err := c.BodyParser(&request) err := c.BodyParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -136,7 +135,7 @@ func (controller *SendController) SendVideo(c *fiber.Ctx) error {
}) })
} }
func (controller *SendController) SendContact(c *fiber.Ctx) error {
func (controller *Send) SendContact(c *fiber.Ctx) error {
var request domainSend.ContactRequest var request domainSend.ContactRequest
err := c.BodyParser(&request) err := c.BodyParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)

24
src/controllers/user_controller.go → src/internal/rest/user_controller.go

@ -1,4 +1,4 @@
package controllers
package rest
import ( import (
domainUser "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/user" domainUser "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/user"
@ -7,22 +7,28 @@ import (
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
type UserController struct {
type User struct {
Service domainUser.IUserService Service domainUser.IUserService
} }
func NewUserController(service domainUser.IUserService) UserController {
return UserController{Service: service}
func InitRestUser(app *fiber.App, service domainUser.IUserService) User {
rest := User{Service: service}
app.Get("/user/info", rest.UserInfo)
app.Get("/user/avatar", rest.UserAvatar)
app.Get("/user/my/privacy", rest.UserMyPrivacySetting)
app.Get("/user/my/groups", rest.UserMyListGroups)
return rest
} }
func (controller *UserController) Route(app *fiber.App) {
func (controller *User) Route(app *fiber.App) {
app.Get("/user/info", controller.UserInfo) app.Get("/user/info", controller.UserInfo)
app.Get("/user/avatar", controller.UserAvatar) app.Get("/user/avatar", controller.UserAvatar)
app.Get("/user/my/privacy", controller.UserMyPrivacySetting) app.Get("/user/my/privacy", controller.UserMyPrivacySetting)
app.Get("/user/my/groups", controller.UserMyListGroups) app.Get("/user/my/groups", controller.UserMyListGroups)
} }
func (controller *UserController) UserInfo(c *fiber.Ctx) error {
func (controller *User) UserInfo(c *fiber.Ctx) error {
var request domainUser.InfoRequest var request domainUser.InfoRequest
err := c.QueryParser(&request) err := c.QueryParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -41,7 +47,7 @@ func (controller *UserController) UserInfo(c *fiber.Ctx) error {
}) })
} }
func (controller *UserController) UserAvatar(c *fiber.Ctx) error {
func (controller *User) UserAvatar(c *fiber.Ctx) error {
var request domainUser.AvatarRequest var request domainUser.AvatarRequest
err := c.QueryParser(&request) err := c.QueryParser(&request)
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -60,7 +66,7 @@ func (controller *UserController) UserAvatar(c *fiber.Ctx) error {
}) })
} }
func (controller *UserController) UserMyPrivacySetting(c *fiber.Ctx) error {
func (controller *User) UserMyPrivacySetting(c *fiber.Ctx) error {
response, err := controller.Service.MyPrivacySetting(c.Context()) response, err := controller.Service.MyPrivacySetting(c.Context())
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
@ -71,7 +77,7 @@ func (controller *UserController) UserMyPrivacySetting(c *fiber.Ctx) error {
}) })
} }
func (controller *UserController) UserMyListGroups(c *fiber.Ctx) error {
func (controller *User) UserMyListGroups(c *fiber.Ctx) error {
response, err := controller.Service.MyListGroups(c.Context()) response, err := controller.Service.MyListGroups(c.Context())
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)
Loading…
Cancel
Save