Browse Source

fix: context parsing

pull/28/head
Aldino Kemal 3 years ago
parent
commit
1d53adfaea
  1. 6
      src/controllers/app_controller.go
  2. 10
      src/controllers/send_controller.go
  3. 8
      src/controllers/user_controller.go
  4. 54
      src/domains/app/app.go
  5. 12
      src/domains/send/send.go
  6. 10
      src/domains/user/user.go
  7. 7
      src/services/app_service.go
  8. 28
      src/services/send_service.go
  9. 10
      src/services/user_service.go

6
src/controllers/app_controller.go

@ -22,7 +22,7 @@ func (controller *AppController) Route(app *fiber.App) {
}
func (controller *AppController) Login(c *fiber.Ctx) error {
response, err := controller.Service.Login(c)
response, err := controller.Service.Login(c.Context())
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -36,7 +36,7 @@ func (controller *AppController) Login(c *fiber.Ctx) error {
}
func (controller *AppController) Logout(c *fiber.Ctx) error {
err := controller.Service.Logout(c)
err := controller.Service.Logout(c.Context())
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -47,7 +47,7 @@ func (controller *AppController) Logout(c *fiber.Ctx) error {
}
func (controller *AppController) Reconnect(c *fiber.Ctx) error {
err := controller.Service.Reconnect(c)
err := controller.Service.Reconnect(c.Context())
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{

10
src/controllers/send_controller.go

@ -37,7 +37,7 @@ func (controller *SendController) SendText(c *fiber.Ctx) error {
request.Phone = request.Phone + "@s.whatsapp.net"
}
response, err := controller.Service.SendText(c, request)
response, err := controller.Service.SendText(c.Context(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -68,7 +68,7 @@ func (controller *SendController) SendImage(c *fiber.Ctx) error {
request.Phone = request.Phone + "@s.whatsapp.net"
}
response, err := controller.Service.SendImage(c, request)
response, err := controller.Service.SendImage(c.Context(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -97,7 +97,7 @@ func (controller *SendController) SendFile(c *fiber.Ctx) error {
request.Phone = request.Phone + "@s.whatsapp.net"
}
response, err := controller.Service.SendFile(c, request)
response, err := controller.Service.SendFile(c.Context(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -126,7 +126,7 @@ func (controller *SendController) SendVideo(c *fiber.Ctx) error {
request.Phone = request.Phone + "@s.whatsapp.net"
}
response, err := controller.Service.SendVideo(c, request)
response, err := controller.Service.SendVideo(c.Context(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -150,7 +150,7 @@ func (controller *SendController) SendContact(c *fiber.Ctx) error {
request.Phone = request.Phone + "@s.whatsapp.net"
}
response, err := controller.Service.SendContact(c, request)
response, err := controller.Service.SendContact(c.Context(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{

8
src/controllers/user_controller.go

@ -31,7 +31,7 @@ func (controller *UserController) UserInfo(c *fiber.Ctx) error {
validations.ValidateUserInfo(request)
request.Phone = request.Phone + "@s.whatsapp.net"
response, err := controller.Service.Info(c, request)
response, err := controller.Service.Info(c.Context(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -50,7 +50,7 @@ func (controller *UserController) UserAvatar(c *fiber.Ctx) error {
validations.ValidateUserAvatar(request)
request.Phone = request.Phone + "@s.whatsapp.net"
response, err := controller.Service.Avatar(c, request)
response, err := controller.Service.Avatar(c.Context(), request)
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -61,7 +61,7 @@ func (controller *UserController) UserAvatar(c *fiber.Ctx) error {
}
func (controller *UserController) UserMyPrivacySetting(c *fiber.Ctx) error {
response, err := controller.Service.MyPrivacySetting(c)
response, err := controller.Service.MyPrivacySetting(c.Context())
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{
@ -72,7 +72,7 @@ func (controller *UserController) UserMyPrivacySetting(c *fiber.Ctx) error {
}
func (controller *UserController) UserMyListGroups(c *fiber.Ctx) error {
response, err := controller.Service.MyListGroups(c)
response, err := controller.Service.MyListGroups(c.Context())
utils.PanicIfNeeded(err)
return c.JSON(utils.ResponseData{

54
src/domains/app/app.go

@ -1,57 +1,11 @@
package app
import (
"github.com/gofiber/fiber/v2"
"go.mau.fi/whatsmeow/types"
"context"
)
type IAppService interface {
Login(c *fiber.Ctx) (response LoginResponse, err error)
Logout(c *fiber.Ctx) (err error)
Reconnect(c *fiber.Ctx) (err error)
}
type UserInfoRequest struct {
Phone string `json:"phone" query:"phone"`
}
type UserInfoResponseDataDevice struct {
User string
Agent uint8
Device string
Server string
AD bool
}
type UserInfoResponseData struct {
VerifiedName string `json:"verified_name"`
Status string `json:"status"`
PictureID string `json:"picture_id"`
Devices []UserInfoResponseDataDevice `json:"devices"`
}
type UserInfoResponse struct {
Data []UserInfoResponseData `json:"data"`
}
type UserAvatarRequest struct {
Phone string `json:"phone" query:"phone"`
}
type UserAvatarResponse struct {
URL string `json:"url"`
ID string `json:"id"`
Type string `json:"type"`
}
type UserMyPrivacySettingResponse struct {
GroupAdd string `json:"group_add"`
LastSeen string `json:"last_seen"`
Status string `json:"status"`
Profile string `json:"profile"`
ReadReceipts string `json:"read_receipts"`
}
type UserMyListGroupsResponse struct {
Data []types.GroupInfo `json:"data"`
Login(ctx context.Context) (response LoginResponse, err error)
Logout(ctx context.Context) (err error)
Reconnect(ctx context.Context) (err error)
}

12
src/domains/send/send.go

@ -1,7 +1,7 @@
package send
import (
"github.com/gofiber/fiber/v2"
"context"
)
type Type string
@ -10,9 +10,9 @@ const TypeUser Type = "user"
const TypeGroup Type = "group"
type ISendService interface {
SendText(c *fiber.Ctx, request MessageRequest) (response MessageResponse, err error)
SendImage(c *fiber.Ctx, request ImageRequest) (response ImageResponse, err error)
SendFile(c *fiber.Ctx, request FileRequest) (response FileResponse, err error)
SendVideo(c *fiber.Ctx, request VideoRequest) (response VideoResponse, err error)
SendContact(c *fiber.Ctx, request ContactRequest) (response ContactResponse, err error)
SendText(ctx context.Context, request MessageRequest) (response MessageResponse, err error)
SendImage(ctx context.Context, request ImageRequest) (response ImageResponse, err error)
SendFile(ctx context.Context, request FileRequest) (response FileResponse, err error)
SendVideo(ctx context.Context, request VideoRequest) (response VideoResponse, err error)
SendContact(ctx context.Context, request ContactRequest) (response ContactResponse, err error)
}

10
src/domains/user/user.go

@ -1,12 +1,12 @@
package user
import (
"github.com/gofiber/fiber/v2"
"context"
)
type IUserService interface {
Info(c *fiber.Ctx, request InfoRequest) (response InfoResponse, err error)
Avatar(c *fiber.Ctx, request AvatarRequest) (response AvatarResponse, err error)
MyListGroups(c *fiber.Ctx) (response MyListGroupsResponse, err error)
MyPrivacySetting(c *fiber.Ctx) (response MyPrivacySettingResponse, err error)
Info(ctx context.Context, request InfoRequest) (response InfoResponse, err error)
Avatar(ctx context.Context, request AvatarRequest) (response AvatarResponse, err error)
MyListGroups(ctx context.Context) (response MyListGroupsResponse, err error)
MyPrivacySetting(ctx context.Context) (response MyPrivacySettingResponse, err error)
}

7
src/services/app_service.go

@ -6,7 +6,6 @@ import (
"fmt"
"github.com/aldinokemal/go-whatsapp-web-multidevice/config"
domainApp "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/app"
"github.com/gofiber/fiber/v2"
fiberUtils "github.com/gofiber/fiber/v2/utils"
"github.com/skip2/go-qrcode"
"go.mau.fi/whatsmeow"
@ -25,7 +24,7 @@ func NewAppService(waCli *whatsmeow.Client) domainApp.IAppService {
}
}
func (service serviceApp) Login(c *fiber.Ctx) (response domainApp.LoginResponse, err error) {
func (service serviceApp) Login(_ context.Context) (response domainApp.LoginResponse, err error) {
if service.WaCli == nil {
return response, errors.New("wa cli nil cok")
}
@ -82,7 +81,7 @@ func (service serviceApp) Login(c *fiber.Ctx) (response domainApp.LoginResponse,
return response, nil
}
func (service serviceApp) Logout(c *fiber.Ctx) (err error) {
func (service serviceApp) Logout(_ context.Context) (err error) {
// delete history
files, err := filepath.Glob("./history-*")
if err != nil {
@ -112,7 +111,7 @@ func (service serviceApp) Logout(c *fiber.Ctx) (err error) {
return
}
func (service serviceApp) Reconnect(c *fiber.Ctx) (err error) {
func (service serviceApp) Reconnect(_ context.Context) (err error) {
service.WaCli.Disconnect()
return service.WaCli.Connect()
}

28
src/services/send_service.go

@ -7,9 +7,9 @@ import (
"github.com/aldinokemal/go-whatsapp-web-multidevice/config"
domainSend "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/send"
"github.com/aldinokemal/go-whatsapp-web-multidevice/utils"
"github.com/gofiber/fiber/v2"
fiberUtils "github.com/gofiber/fiber/v2/utils"
"github.com/h2non/bimg"
"github.com/valyala/fasthttp"
"go.mau.fi/whatsmeow"
waProto "go.mau.fi/whatsmeow/binary/proto"
"google.golang.org/protobuf/proto"
@ -28,7 +28,7 @@ func NewSendService(waCli *whatsmeow.Client) domainSend.ISendService {
}
}
func (service serviceSend) SendText(c *fiber.Ctx, request domainSend.MessageRequest) (response domainSend.MessageResponse, err error) {
func (service serviceSend) SendText(ctx context.Context, request domainSend.MessageRequest) (response domainSend.MessageResponse, err error) {
utils.MustLogin(service.WaCli)
recipient, ok := utils.ParseJID(request.Phone)
@ -36,7 +36,7 @@ func (service serviceSend) SendText(c *fiber.Ctx, request domainSend.MessageRequ
return response, errors.New("invalid JID " + request.Phone)
}
msg := &waProto.Message{Conversation: proto.String(request.Message)}
ts, err := service.WaCli.SendMessage(c.Context(), recipient, "", msg)
ts, err := service.WaCli.SendMessage(ctx, recipient, "", msg)
if err != nil {
return response, err
} else {
@ -45,7 +45,7 @@ func (service serviceSend) SendText(c *fiber.Ctx, request domainSend.MessageRequ
return response, nil
}
func (service serviceSend) SendImage(c *fiber.Ctx, request domainSend.ImageRequest) (response domainSend.ImageResponse, err error) {
func (service serviceSend) SendImage(ctx context.Context, request domainSend.ImageRequest) (response domainSend.ImageResponse, err error) {
utils.MustLogin(service.WaCli)
var (
@ -56,7 +56,7 @@ func (service serviceSend) SendImage(c *fiber.Ctx, request domainSend.ImageReque
// Save image to server
oriImagePath := fmt.Sprintf("%s/%s", config.PathSendItems, request.Image.Filename)
err = c.SaveFile(request.Image, oriImagePath)
err = fasthttp.SaveMultipartFile(request.Image, oriImagePath)
if err != nil {
return response, err
}
@ -123,7 +123,7 @@ func (service serviceSend) SendImage(c *fiber.Ctx, request domainSend.ImageReque
FileLength: proto.Uint64(uint64(len(dataWaImage))),
ViewOnce: proto.Bool(request.ViewOnce),
}}
ts, err := service.WaCli.SendMessage(c.Context(), dataWaRecipient, "", msg)
ts, err := service.WaCli.SendMessage(ctx, dataWaRecipient, "", msg)
go func() {
errDelete := utils.RemoveFile(0, deletedItems...)
if errDelete != nil {
@ -138,11 +138,11 @@ func (service serviceSend) SendImage(c *fiber.Ctx, request domainSend.ImageReque
}
}
func (service serviceSend) SendFile(c *fiber.Ctx, request domainSend.FileRequest) (response domainSend.FileResponse, err error) {
func (service serviceSend) SendFile(ctx context.Context, request domainSend.FileRequest) (response domainSend.FileResponse, err error) {
utils.MustLogin(service.WaCli)
oriFilePath := fmt.Sprintf("%s/%s", config.PathSendItems, request.File.Filename)
err = c.SaveFile(request.File, oriFilePath)
err = fasthttp.SaveMultipartFile(request.File, oriFilePath)
if err != nil {
return response, err
}
@ -173,7 +173,7 @@ func (service serviceSend) SendFile(c *fiber.Ctx, request domainSend.FileRequest
FileEncSha256: uploadedFile.FileEncSHA256,
DirectPath: proto.String(uploadedFile.DirectPath),
}}
ts, err := service.WaCli.SendMessage(c.Context(), dataWaRecipient, "", msg)
ts, err := service.WaCli.SendMessage(ctx, dataWaRecipient, "", msg)
go func() {
errDelete := utils.RemoveFile(0, oriFilePath)
if errDelete != nil {
@ -188,7 +188,7 @@ func (service serviceSend) SendFile(c *fiber.Ctx, request domainSend.FileRequest
}
}
func (service serviceSend) SendVideo(c *fiber.Ctx, request domainSend.VideoRequest) (response domainSend.VideoResponse, err error) {
func (service serviceSend) SendVideo(ctx context.Context, request domainSend.VideoRequest) (response domainSend.VideoResponse, err error) {
utils.MustLogin(service.WaCli)
var (
@ -200,7 +200,7 @@ func (service serviceSend) SendVideo(c *fiber.Ctx, request domainSend.VideoReque
generateUUID := fiberUtils.UUIDv4()
// Save video to server
oriVideoPath := fmt.Sprintf("%s/%s", config.PathSendItems, generateUUID+request.Video.Filename)
err = c.SaveFile(request.Video, oriVideoPath)
err = fasthttp.SaveMultipartFile(request.Video, oriVideoPath)
if err != nil {
return response, err
}
@ -272,7 +272,7 @@ func (service serviceSend) SendVideo(c *fiber.Ctx, request domainSend.VideoReque
ViewOnce: proto.Bool(request.ViewOnce),
JpegThumbnail: dataWaThumbnail,
}}
ts, err := service.WaCli.SendMessage(c.Context(), dataWaRecipient, "", msg)
ts, err := service.WaCli.SendMessage(ctx, dataWaRecipient, "", msg)
go func() {
errDelete := utils.RemoveFile(0, deletedItems...)
if errDelete != nil {
@ -287,7 +287,7 @@ func (service serviceSend) SendVideo(c *fiber.Ctx, request domainSend.VideoReque
}
}
func (service serviceSend) SendContact(c *fiber.Ctx, request domainSend.ContactRequest) (response domainSend.ContactResponse, err error) {
func (service serviceSend) SendContact(ctx context.Context, request domainSend.ContactRequest) (response domainSend.ContactResponse, err error) {
utils.MustLogin(service.WaCli)
recipient, ok := utils.ParseJID(request.Phone)
@ -300,7 +300,7 @@ func (service serviceSend) SendContact(c *fiber.Ctx, request domainSend.ContactR
DisplayName: proto.String(request.ContactName),
Vcard: proto.String(msgVCard),
}}
ts, err := service.WaCli.SendMessage(c.Context(), recipient, "", msg)
ts, err := service.WaCli.SendMessage(ctx, recipient, "", msg)
if err != nil {
return response, err
} else {

10
src/services/user_service_impl.go → src/services/user_service.go

@ -1,11 +1,11 @@
package services
import (
"context"
"errors"
"fmt"
domainUser "github.com/aldinokemal/go-whatsapp-web-multidevice/domains/user"
"github.com/aldinokemal/go-whatsapp-web-multidevice/utils"
"github.com/gofiber/fiber/v2"
"go.mau.fi/whatsmeow"
"go.mau.fi/whatsmeow/types"
)
@ -20,7 +20,7 @@ func NewUserService(waCli *whatsmeow.Client) domainUser.IUserService {
}
}
func (service UserServiceImpl) Info(_ *fiber.Ctx, request domainUser.InfoRequest) (response domainUser.InfoResponse, err error) {
func (service UserServiceImpl) Info(_ context.Context, request domainUser.InfoRequest) (response domainUser.InfoResponse, err error) {
utils.MustLogin(service.WaCli)
var jids []types.JID
@ -61,7 +61,7 @@ func (service UserServiceImpl) Info(_ *fiber.Ctx, request domainUser.InfoRequest
return response, nil
}
func (service UserServiceImpl) Avatar(c *fiber.Ctx, request domainUser.AvatarRequest) (response domainUser.AvatarResponse, err error) {
func (service UserServiceImpl) Avatar(_ context.Context, request domainUser.AvatarRequest) (response domainUser.AvatarResponse, err error) {
utils.MustLogin(service.WaCli)
jid, ok := utils.ParseJID(request.Phone)
@ -82,7 +82,7 @@ func (service UserServiceImpl) Avatar(c *fiber.Ctx, request domainUser.AvatarReq
}
}
func (service UserServiceImpl) MyListGroups(_ *fiber.Ctx) (response domainUser.MyListGroupsResponse, err error) {
func (service UserServiceImpl) MyListGroups(_ context.Context) (response domainUser.MyListGroupsResponse, err error) {
utils.MustLogin(service.WaCli)
groups, err := service.WaCli.GetJoinedGroups()
@ -98,7 +98,7 @@ func (service UserServiceImpl) MyListGroups(_ *fiber.Ctx) (response domainUser.M
return response, nil
}
func (service UserServiceImpl) MyPrivacySetting(_ *fiber.Ctx) (response domainUser.MyPrivacySettingResponse, err error) {
func (service UserServiceImpl) MyPrivacySetting(_ context.Context) (response domainUser.MyPrivacySettingResponse, err error) {
utils.MustLogin(service.WaCli)
resp, err := service.WaCli.TryFetchPrivacySettings(false)
Loading…
Cancel
Save