Browse Source

add capabilities to send video

pull/4/head
Dimas Restu H 4 years ago
parent
commit
20937f7646
  1. 2
      internal/route.go
  2. 15
      internal/whatsapp/whatsapp.go
  3. 42
      pkg/whatsapp/whatsapp.go

2
internal/route.go

@ -36,6 +36,6 @@ func Routes(e *echo.Echo) {
e.POST(router.BaseURL+"/send/document", ctlWhatsApp.SendDocument, middleware.JWTWithConfig(authJWTConfig))
e.POST(router.BaseURL+"/send/image", ctlWhatsApp.SendImage, middleware.JWTWithConfig(authJWTConfig))
e.POST(router.BaseURL+"/send/audio", ctlWhatsApp.SendAudio, middleware.JWTWithConfig(authJWTConfig))
// e.POST(router.BaseURL+"/send/video", ctlWhatsApp.SendVideo, middleware.JWTWithConfig(authJWTConfig))
e.POST(router.BaseURL+"/send/video", ctlWhatsApp.SendVideo, middleware.JWTWithConfig(authJWTConfig))
e.POST(router.BaseURL+"/logout", ctlWhatsApp.Logout, middleware.JWTWithConfig(authJWTConfig))
}

15
internal/whatsapp/whatsapp.go

@ -59,6 +59,10 @@ func sendContent(c echo.Context, mediaType string) error {
case "audio":
fileStream, fileHeader, err = c.Request().FormFile("audio")
case "video":
fileStream, fileHeader, err = c.Request().FormFile("video")
reqSendMessage.Message = strings.TrimSpace(c.FormValue("caption"))
}
// Don't Forget to Close The File Stream
@ -95,6 +99,9 @@ func sendContent(c echo.Context, mediaType string) error {
case "audio":
err = pkgWhatsApp.WhatsAppSendAudio(jid, reqSendMessage.RJID, fileBytes, fileType)
case "video":
err = pkgWhatsApp.WhatsAppSendVideo(jid, reqSendMessage.RJID, fileBytes, fileType, reqSendMessage.Message)
}
// Return Internal Server Error
@ -230,12 +237,6 @@ func SendAudio(c echo.Context) error {
return sendContent(c, "audio")
}
/*
TODO: Send Media
*/
/*
func SendVideo(c echo.Context) error {
return router.ResponseSuccess(c, "Successfully Send Video Message")
return sendContent(c, "video")
}
*/

42
pkg/whatsapp/whatsapp.go

@ -317,7 +317,7 @@ func WhatsAppSendImage(jid string, rjid string, imageBytes []byte, imageType str
return err
}
// Upload File to WhatsApp Storage Server
// Upload Image to WhatsApp Storage Server
imageUploaded, err := WhatsAppClient[jid].Upload(context.Background(), imageBytes, whatsmeow.MediaImage)
// Compose WhatsApp Proto
@ -355,7 +355,7 @@ func WhatsAppSendAudio(jid string, rjid string, audioBytes []byte, audioType str
return err
}
// Upload File to WhatsApp Storage Server
// Upload Audio to WhatsApp Storage Server
audioUploaded, err := WhatsAppClient[jid].Upload(context.Background(), audioBytes, whatsmeow.MediaAudio)
// Compose WhatsApp Proto
@ -383,3 +383,41 @@ func WhatsAppSendAudio(jid string, rjid string, audioBytes []byte, audioType str
// Return Error WhatsApp Client is not Valid
return errors.New("WhatsApp Client is not Valid")
}
func WhatsAppSendVideo(jid string, rjid string, videoBytes []byte, videoType string, videoCaption string) error {
if WhatsAppClient[jid] != nil {
// Make Sure WhatsApp Client is OK
err := WhatsAppClientIsOK(jid)
if err != nil {
return err
}
// Upload Video to WhatsApp Storage Server
videoUploaded, err := WhatsAppClient[jid].Upload(context.Background(), videoBytes, whatsmeow.MediaVideo)
// Compose WhatsApp Proto
content := &waproto.Message{
VideoMessage: &waproto.VideoMessage{
Url: proto.String(videoUploaded.URL),
DirectPath: proto.String(videoUploaded.DirectPath),
Mimetype: proto.String(videoType),
Caption: proto.String(videoCaption),
FileLength: proto.Uint64(videoUploaded.FileLength),
FileSha256: videoUploaded.FileSHA256,
FileEncSha256: videoUploaded.FileEncSHA256,
MediaKey: videoUploaded.MediaKey,
},
}
// Send WhatsApp Message Proto
_, err = WhatsAppClient[jid].SendMessage(WhatsAppComposeJID(rjid), "", content)
if err != nil {
return err
}
return nil
}
// Return Error WhatsApp Client is not Valid
return errors.New("WhatsApp Client is not Valid")
}
Loading…
Cancel
Save