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. 5
      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", "name": "image",
"in": "formData", "in": "formData",
"required": true "required": true
},
{
"type": "boolean",
"default": false,
"description": "Is View Once",
"name": "viewonce",
"in": "formData"
} }
], ],
"responses": { "responses": {
@ -473,6 +480,13 @@ const docTemplate = `{
"name": "video", "name": "video",
"in": "formData", "in": "formData",
"required": true "required": true
},
{
"type": "boolean",
"default": false,
"description": "Is View Once",
"name": "viewonce",
"in": "formData"
} }
], ],
"responses": { "responses": {

14
docs/swagger.json

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

10
docs/swagger.yaml

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

5
internal/whatsapp/types/request.go

@ -5,8 +5,9 @@ type RequestLogin struct {
} }
type RequestSendMessage struct { type RequestSendMessage struct {
RJID string
Message string
RJID string
Message string
ViewOnce bool
} }
type RequestSendLocation struct { 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 msisdn formData string true "Destination Phone Number"
// @Param caption formData string true "Caption Image Message" // @Param caption formData string true "Caption Image Message"
// @Param image formData file true "Image File" // @Param image formData file true "Image File"
// @Param viewonce formData bool false "Is View Once" default(false)
// @Success 200 // @Success 200
// @Security BearerAuth // @Security BearerAuth
// @Router /api/v1/whatsapp/send/image [post] // @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 msisdn formData string true "Destination Phone Number"
// @Param caption formData string true "Caption Video Message" // @Param caption formData string true "Caption Video Message"
// @Param video formData file true "Video File" // @Param video formData file true "Video File"
// @Param viewonce formData bool false "Is View Once" default(false)
// @Success 200 // @Success 200
// @Security BearerAuth // @Security BearerAuth
// @Router /api/v1/whatsapp/send/video [post] // @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")) 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 // Don't Forget to Close The File Stream
defer fileStream.Close() 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) resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendDocument(jid, reqSendMessage.RJID, fileBytes, fileType, reqSendMessage.Message)
case "image": 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": case "audio":
resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendAudio(jid, reqSendMessage.RJID, fileBytes, fileType) resSendMessage.MsgID, err = pkgWhatsApp.WhatsAppSendAudio(jid, reqSendMessage.RJID, fileBytes, fileType)
case "video": 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 // 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") 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 { if WhatsAppClient[jid] != nil {
var err error var err error
@ -441,6 +441,7 @@ func WhatsAppSendImage(jid string, rjid string, imageBytes []byte, imageType str
FileSha256: imageUploaded.FileSHA256, FileSha256: imageUploaded.FileSHA256,
FileEncSha256: imageUploaded.FileEncSHA256, FileEncSha256: imageUploaded.FileEncSHA256,
MediaKey: imageUploaded.MediaKey, 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") 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 { if WhatsAppClient[jid] != nil {
var err error var err error
@ -542,6 +543,7 @@ func WhatsAppSendVideo(jid string, rjid string, videoBytes []byte, videoType str
FileSha256: videoUploaded.FileSHA256, FileSha256: videoUploaded.FileSHA256,
FileEncSha256: videoUploaded.FileEncSHA256, FileEncSha256: videoUploaded.FileEncSHA256,
MediaKey: videoUploaded.MediaKey, MediaKey: videoUploaded.MediaKey,
ViewOnce: proto.Bool(isViewOnce),
}, },
} }

Loading…
Cancel
Save