Browse Source

feat: add reconnect api

pull/3/head
Aldino Kemal 4 years ago
parent
commit
e84061a785
  1. 57
      controllers/app_controller.go
  2. 45
      controllers/auth_controller.go
  3. 6
      main.go
  4. 3
      services/app_service.go
  5. 15
      services/app_service_impl.go

57
controllers/app_controller.go

@ -0,0 +1,57 @@
package controllers
import (
"github.com/aldinokemal/go-whatsapp-web-multidevice/services"
"github.com/aldinokemal/go-whatsapp-web-multidevice/utils"
"github.com/gofiber/fiber/v2"
)
type AppController struct {
Service services.AppService
}
func NewAppController(service services.AppService) AppController {
return AppController{Service: service}
}
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)
}
func (controller *AppController) Login(c *fiber.Ctx) error {
response, err := controller.Service.Login(c)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Code: 200,
Message: "Success",
Results: map[string]interface{}{
"qr_link": "http://localhost:3000/" + response.ImagePath,
"qr_duration": response.Duration,
},
})
}
func (controller *AppController) Logout(c *fiber.Ctx) error {
err := controller.Service.Logout(c)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Code: 200,
Message: "Success logout",
Results: nil,
})
}
func (controller *AppController) Reconnect(c *fiber.Ctx) error {
err := controller.Service.Logout(c)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Code: 200,
Message: "Reconnect success",
Results: nil,
})
}

45
controllers/auth_controller.go

@ -1,45 +0,0 @@
package controllers
import (
"github.com/aldinokemal/go-whatsapp-web-multidevice/services"
"github.com/aldinokemal/go-whatsapp-web-multidevice/utils"
"github.com/gofiber/fiber/v2"
)
type AuthController struct {
Service services.AuthService
}
func NewAuthController(service services.AuthService) AuthController {
return AuthController{Service: service}
}
func (controller *AuthController) Route(app *fiber.App) {
app.Get("/auth/login", controller.Login)
app.Get("/auth/logout", controller.Logout)
}
func (controller *AuthController) Login(c *fiber.Ctx) error {
response, err := controller.Service.Login(c)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Code: 200,
Message: "Success",
Results: map[string]interface{}{
"qr_link": "http://localhost:3000/" + response.ImagePath,
"qr_duration": response.Duration,
},
})
}
func (controller *AuthController) Logout(c *fiber.Ctx) error {
err := controller.Service.Logout(c)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Code: 200,
Message: "Success logout",
Results: nil,
})
}

6
main.go

@ -25,14 +25,14 @@ func main() {
cli := utils.InitWaCLI(db) cli := utils.InitWaCLI(db)
// Service // Service
authService := services.NewAuthService(cli)
AppService := services.NewAppService(cli)
sendService := services.NewSendService(cli) sendService := services.NewSendService(cli)
// Controller // Controller
authController := controllers.NewAuthController(authService)
AppController := controllers.NewAppController(AppService)
sendController := controllers.NewSendController(sendService) sendController := controllers.NewSendController(sendService)
authController.Route(app)
AppController.Route(app)
sendController.Route(app) sendController.Route(app)
app.Get("/", func(ctx *fiber.Ctx) error { app.Get("/", func(ctx *fiber.Ctx) error {
return ctx.JSON(map[string]interface{}{"Status": "Ok"}) return ctx.JSON(map[string]interface{}{"Status": "Ok"})

3
services/auth_service.go → services/app_service.go

@ -5,7 +5,8 @@ import (
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
type AuthService interface {
type AppService interface {
Login(c *fiber.Ctx) (response structs.LoginResponse, err error) Login(c *fiber.Ctx) (response structs.LoginResponse, err error)
Logout(c *fiber.Ctx) (err error) Logout(c *fiber.Ctx) (err error)
Reconnect(c *fiber.Ctx) (err error)
} }

15
services/auth_service_impl.go → services/app_service_impl.go

@ -15,17 +15,17 @@ import (
"time" "time"
) )
type authServiceImpl struct {
type AppServiceImpl struct {
WaCli *whatsmeow.Client WaCli *whatsmeow.Client
} }
func NewAuthService(waCli *whatsmeow.Client) AuthService {
return &authServiceImpl{
func NewAppService(waCli *whatsmeow.Client) AppService {
return &AppServiceImpl{
WaCli: waCli, WaCli: waCli,
} }
} }
func (service authServiceImpl) Login(c *fiber.Ctx) (response structs.LoginResponse, err error) {
func (service AppServiceImpl) Login(c *fiber.Ctx) (response structs.LoginResponse, err error) {
if service.WaCli == nil { if service.WaCli == nil {
return response, errors.New("wa cli nil cok") return response, errors.New("wa cli nil cok")
} }
@ -82,7 +82,7 @@ func (service authServiceImpl) Login(c *fiber.Ctx) (response structs.LoginRespon
return response, nil return response, nil
} }
func (service authServiceImpl) Logout(c *fiber.Ctx) (err error) {
func (service AppServiceImpl) Logout(c *fiber.Ctx) (err error) {
// delete history // delete history
files, err := filepath.Glob("./history-*") files, err := filepath.Glob("./history-*")
if err != nil { if err != nil {
@ -111,3 +111,8 @@ func (service authServiceImpl) Logout(c *fiber.Ctx) (err error) {
err = service.WaCli.Logout() err = service.WaCli.Logout()
return return
} }
func (service AppServiceImpl) Reconnect(c *fiber.Ctx) (err error) {
service.WaCli.Disconnect()
return service.WaCli.Connect()
}
Loading…
Cancel
Save