Browse Source

feat: wip pair code login

feat(app): add LoginWithCode method to IAppService interface for handling phone number login
feat(app): implement LoginWithCode method in App struct to handle phone number login logic
feat(app): implement LoginWithCode method in serviceApp to pair phone number with WhatsApp client
pull/171/head
Aldino Kemal 2 years ago
parent
commit
d6fd8ee974
  1. 1
      src/domains/app/app.go
  2. 14
      src/internal/rest/app.go
  3. 11
      src/services/app.go

1
src/domains/app/app.go

@ -7,6 +7,7 @@ import (
type IAppService interface { type IAppService interface {
Login(ctx context.Context) (response LoginResponse, err error) Login(ctx context.Context) (response LoginResponse, err error)
LoginWithCode(ctx context.Context, phoneNumber string) (err error)
Logout(ctx context.Context) (err error) Logout(ctx context.Context) (err error)
Reconnect(ctx context.Context) (err error) Reconnect(ctx context.Context) (err error)
FirstDevice(ctx context.Context) (response DevicesResponse, err error) FirstDevice(ctx context.Context) (response DevicesResponse, err error)

14
src/internal/rest/app.go

@ -14,6 +14,7 @@ type App struct {
func InitRestApp(app *fiber.App, service domainApp.IAppService) App { func InitRestApp(app *fiber.App, service domainApp.IAppService) App {
rest := App{Service: service} rest := App{Service: service}
app.Get("/app/login", rest.Login) app.Get("/app/login", rest.Login)
app.Get("/app/login-with-code", rest.LoginWithCode)
app.Get("/app/logout", rest.Logout) app.Get("/app/logout", rest.Logout)
app.Get("/app/reconnect", rest.Reconnect) app.Get("/app/reconnect", rest.Reconnect)
app.Get("/app/devices", rest.Devices) app.Get("/app/devices", rest.Devices)
@ -36,6 +37,19 @@ func (handler *App) Login(c *fiber.Ctx) error {
}) })
} }
func (handler *App) LoginWithCode(c *fiber.Ctx) error {
err := handler.Service.LoginWithCode(c.UserContext(), c.Query("phone"))
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
Status: 200,
Code: "SUCCESS",
Message: "Login with code success",
Results: nil,
})
}
func (handler *App) Logout(c *fiber.Ctx) error { func (handler *App) Logout(c *fiber.Ctx) error {
err := handler.Service.Logout(c.UserContext()) err := handler.Service.Logout(c.UserContext())
utils.PanicIfNeeded(err) utils.PanicIfNeeded(err)

11
src/services/app.go

@ -90,6 +90,17 @@ func (service serviceApp) Login(_ context.Context) (response domainApp.LoginResp
return response, nil return response, nil
} }
func (service serviceApp) LoginWithCode(ctx context.Context, phoneNumber string) (err error) {
phone, err := service.WaCli.PairPhone(phoneNumber, true, whatsmeow.PairClientChrome, "Chrome (Linux)")
if err != nil {
return err
}
logrus.Info("Phone: ", phone)
return nil
}
func (service serviceApp) Logout(_ context.Context) (err error) { func (service serviceApp) Logout(_ context.Context) (err error) {
// delete history // delete history
files, err := filepath.Glob(fmt.Sprintf("./%s/history-*", config.PathStorages)) files, err := filepath.Glob(fmt.Sprintf("./%s/history-*", config.PathStorages))

Loading…
Cancel
Save