Browse Source

added view once parameter to send image or video

pull/28/head
Dimas Restu H 4 years ago
parent
commit
0e01602981
  1. 14
      docs/docs.go
  2. 14
      docs/swagger.json
  3. 10
      docs/swagger.yaml
  4. 1
      internal/whatsapp/types/request.go
  5. 25
      internal/whatsapp/whatsapp.go
  6. 6
      pkg/whatsapp/whatsapp.go

14
docs/docs.go

@ -289,6 +289,13 @@ const docTemplate = `{
"name": "image",
"in": "formData",
"required": true
},
{
"type": "boolean",
"default": false,
"description": "Is View Once",
"name": "viewonce",
"in": "formData"
}
],
"responses": {
@ -473,6 +480,13 @@ const docTemplate = `{
"name": "video",
"in": "formData",
"required": true
},
{
"type": "boolean",
"default": false,
"description": "Is View Once",
"name": "viewonce",
"in": "formData"
}
],
"responses": {

14
docs/swagger.json

@ -284,6 +284,13 @@
"name": "image",
"in": "formData",
"required": true
},
{
"type": "boolean",
"default": false,
"description": "Is View Once",
"name": "viewonce",
"in": "formData"
}
],
"responses": {
@ -468,6 +475,13 @@
"name": "video",
"in": "formData",
"required": true
},
{
"type": "boolean",
"default": false,
"description": "Is View Once",
"name": "viewonce",
"in": "formData"
}
],
"responses": {

10
docs/swagger.yaml

@ -174,6 +174,11 @@ paths:
name: image
required: true
type: file
- default: false
description: Is View Once
in: formData
name: viewonce
type: boolean
produces:
- application/json
responses:
@ -292,6 +297,11 @@ paths:
name: video
required: true
type: file
- default: false
description: Is View Once
in: formData
name: viewonce
type: boolean
produces:
- application/json
responses:

1
internal/whatsapp/types/request.go

@ -7,6 +7,7 @@ type RequestLogin struct {
type RequestSendMessage struct {
RJID string
Message string
ViewOnce bool
}
type RequestSendLocation struct {

25
internal/whatsapp/whatsapp.go

@ -306,6 +306,7 @@ func SendDocument(c echo.Context) error {
// @Param msisdn formData string true "Destination Phone Number"
// @Param caption formData string true "Caption Image Message"
// @Param image formData file true "Image File"
// @Param viewonce formData bool false "Is View Once" default(false)
// @Success 200
// @Security BearerAuth
// @Router /api/v1/whatsapp/send/image [post]
@ -337,6 +338,7 @@ func SendAudio(c echo.Context) error {
// @Param msisdn formData string true "Destination Phone Number"
// @Param caption formData string true "Caption Video Message"
// @Param video formData file true "Video File"
// @Param viewonce formData bool false "Is View Once" default(false)
// @Success 200
// @Security BearerAuth
// @Router /api/v1/whatsapp/send/video [post]
@ -372,6 +374,25 @@ func sendMedia(c echo.Context, mediaType string) error {
reqSendMessage.Message = strings.TrimSpace(c.FormValue("caption"))
}
// Check if Media Type is "image" or "video"
// Then Parse ViewOnce Parameter
if mediaType == "image" || mediaType == "video" {
isViewOnce := strings.TrimSpace(c.FormValue("viewonce"))
if len(isViewOnce) == 0 {
// If ViewOnce Parameter Doesn't Exist or Empty String
// Then Set it Default to False
reqSendMessage.ViewOnce = false
} else {
// If ViewOnce Parameter is not Empty
// Then Parse it to Bool
reqSendMessage.ViewOnce, err = strconv.ParseBool(isViewOnce)
if err != nil {
return router.ResponseBadRequest(c, err.Error())
}
}
}
// Don't Forget to Close The File Stream
defer fileStream.Close()
@ -433,13 +454,13 @@ func sendMedia(c echo.Context, mediaType string) error {
resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendDocument(jid, reqSendMessage.RJID, fileBytes, fileType, reqSendMessage.Message)
case "image":
resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendImage(jid, reqSendMessage.RJID, fileBytes, fileType, reqSendMessage.Message)
resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendImage(jid, reqSendMessage.RJID, fileBytes, fileType, reqSendMessage.Message, reqSendMessage.ViewOnce)
case "audio":
resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendAudio(jid, reqSendMessage.RJID, fileBytes, fileType)
case "video":
resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendVideo(jid, reqSendMessage.RJID, fileBytes, fileType, reqSendMessage.Message)
resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendVideo(jid, reqSendMessage.RJID, fileBytes, fileType, reqSendMessage.Message, reqSendMessage.ViewOnce)
}
// Return Internal Server Error

6
pkg/whatsapp/whatsapp.go

@ -406,7 +406,7 @@ func WhatsAppSendDocument(jid string, rjid string, fileBytes []byte, fileType st
return "", errors.New("WhatsApp Client is not Valid")
}
func WhatsAppSendImage(jid string, rjid string, imageBytes []byte, imageType string, imageCaption string) (string, error) {
func WhatsAppSendImage(jid string, rjid string, imageBytes []byte, imageType string, imageCaption string, isViewOnce bool) (string, error) {
if WhatsAppClient[jid] != nil {
var err error
@ -441,6 +441,7 @@ func WhatsAppSendImage(jid string, rjid string, imageBytes []byte, imageType str
FileSha256: imageUploaded.FileSHA256,
FileEncSha256: imageUploaded.FileEncSHA256,
MediaKey: imageUploaded.MediaKey,
ViewOnce: proto.Bool(isViewOnce),
},
}
@ -507,7 +508,7 @@ func WhatsAppSendAudio(jid string, rjid string, audioBytes []byte, audioType str
return "", errors.New("WhatsApp Client is not Valid")
}
func WhatsAppSendVideo(jid string, rjid string, videoBytes []byte, videoType string, videoCaption string) (string, error) {
func WhatsAppSendVideo(jid string, rjid string, videoBytes []byte, videoType string, videoCaption string, isViewOnce bool) (string, error) {
if WhatsAppClient[jid] != nil {
var err error
@ -542,6 +543,7 @@ func WhatsAppSendVideo(jid string, rjid string, videoBytes []byte, videoType str
FileSha256: videoUploaded.FileSHA256,
FileEncSha256: videoUploaded.FileEncSHA256,
MediaKey: videoUploaded.MediaKey,
ViewOnce: proto.Bool(isViewOnce),
},
}

Loading…
Cancel
Save