@@ -32,7 +32,7 @@ func NewSendService(waCli *whatsmeow.Client) domainSend.ISendService {
32
32
}
33
33
34
34
func (service serviceSend ) SendText (ctx context.Context , request domainSend.MessageRequest ) (response domainSend.MessageResponse , err error ) {
35
- err = validations .ValidateSendMessage (request )
35
+ err = validations .ValidateSendMessage (ctx , request )
36
36
if err != nil {
37
37
return response , err
38
38
}
@@ -54,7 +54,7 @@ func (service serviceSend) SendText(ctx context.Context, request domainSend.Mess
54
54
}
55
55
56
56
func (service serviceSend ) SendImage (ctx context.Context , request domainSend.ImageRequest ) (response domainSend.ImageResponse , err error ) {
57
- err = validations .ValidateSendImage (request )
57
+ err = validations .ValidateSendImage (ctx , request )
58
58
if err != nil {
59
59
return response , err
60
60
}
@@ -152,7 +152,7 @@ func (service serviceSend) SendImage(ctx context.Context, request domainSend.Ima
152
152
}
153
153
154
154
func (service serviceSend ) SendFile (ctx context.Context , request domainSend.FileRequest ) (response domainSend.FileResponse , err error ) {
155
- err = validations .ValidateSendFile (request )
155
+ err = validations .ValidateSendFile (ctx , request )
156
156
if err != nil {
157
157
return response , err
158
158
}
@@ -207,7 +207,7 @@ func (service serviceSend) SendFile(ctx context.Context, request domainSend.File
207
207
}
208
208
209
209
func (service serviceSend ) SendVideo (ctx context.Context , request domainSend.VideoRequest ) (response domainSend.VideoResponse , err error ) {
210
- err = validations .ValidateSendVideo (request )
210
+ err = validations .ValidateSendVideo (ctx , request )
211
211
if err != nil {
212
212
return response , err
213
213
}
@@ -286,20 +286,23 @@ func (service serviceSend) SendVideo(ctx context.Context, request domainSend.Vid
286
286
287
287
msgId := whatsmeow .GenerateMessageID ()
288
288
msg := & waProto.Message {VideoMessage : & waProto.VideoMessage {
289
- Url : proto .String (uploaded .URL ),
290
- Mimetype : proto .String (http .DetectContentType (dataWaVideo )),
291
- Caption : proto .String (request .Caption ),
292
- FileLength : proto .Uint64 (uploaded .FileLength ),
293
- FileSha256 : uploaded .FileSHA256 ,
294
- FileEncSha256 : uploaded .FileEncSHA256 ,
295
- MediaKey : uploaded .MediaKey ,
296
- DirectPath : proto .String (uploaded .DirectPath ),
297
- ViewOnce : proto .Bool (request .ViewOnce ),
298
- JpegThumbnail : dataWaThumbnail ,
289
+ Url : proto .String (uploaded .URL ),
290
+ Mimetype : proto .String (http .DetectContentType (dataWaVideo )),
291
+ Caption : proto .String (request .Caption ),
292
+ FileLength : proto .Uint64 (uploaded .FileLength ),
293
+ FileSha256 : uploaded .FileSHA256 ,
294
+ FileEncSha256 : uploaded .FileEncSHA256 ,
295
+ MediaKey : uploaded .MediaKey ,
296
+ DirectPath : proto .String (uploaded .DirectPath ),
297
+ ViewOnce : proto .Bool (request .ViewOnce ),
298
+ JpegThumbnail : dataWaThumbnail ,
299
+ ThumbnailEncSha256 : dataWaThumbnail ,
300
+ ThumbnailSha256 : dataWaThumbnail ,
301
+ ThumbnailDirectPath : proto .String (uploaded .DirectPath ),
299
302
}}
300
303
ts , err := service .WaCli .SendMessage (ctx , dataWaRecipient , msgId , msg )
301
304
go func () {
302
- errDelete := utils .RemoveFile (0 , deletedItems ... )
305
+ errDelete := utils .RemoveFile (1 , deletedItems ... )
303
306
if errDelete != nil {
304
307
fmt .Println (errDelete )
305
308
}
@@ -314,7 +317,7 @@ func (service serviceSend) SendVideo(ctx context.Context, request domainSend.Vid
314
317
}
315
318
316
319
func (service serviceSend ) SendContact (ctx context.Context , request domainSend.ContactRequest ) (response domainSend.ContactResponse , err error ) {
317
- err = validations .ValidateSendContact (request )
320
+ err = validations .ValidateSendContact (ctx , request )
318
321
if err != nil {
319
322
return response , err
320
323
}
@@ -341,7 +344,7 @@ func (service serviceSend) SendContact(ctx context.Context, request domainSend.C
341
344
}
342
345
343
346
func (service serviceSend ) SendLink (ctx context.Context , request domainSend.LinkRequest ) (response domainSend.LinkResponse , err error ) {
344
- err = validations .ValidateSendLink (request )
347
+ err = validations .ValidateSendLink (ctx , request )
345
348
if err != nil {
346
349
return response , err
347
350
}
@@ -372,8 +375,38 @@ func (service serviceSend) SendLink(ctx context.Context, request domainSend.Link
372
375
return response , nil
373
376
}
374
377
375
- func (service serviceSend ) Revoke (_ context.Context , request domainSend.RevokeRequest ) (response domainSend.RevokeResponse , err error ) {
376
- err = validations .ValidateRevokeMessage (request )
378
+ func (service serviceSend ) SendLocation (ctx context.Context , request domainSend.LocationRequest ) (response domainSend.LocationResponse , err error ) {
379
+ err = validations .ValidateSendLocation (ctx , request )
380
+ if err != nil {
381
+ return response , err
382
+ }
383
+ dataWaRecipient , err := whatsapp .ValidateJidWithLogin (service .WaCli , request .Phone )
384
+ if err != nil {
385
+ return response , err
386
+ }
387
+
388
+ // Compose WhatsApp Proto
389
+ msgId := whatsmeow .GenerateMessageID ()
390
+ msg := & waProto.Message {
391
+ LocationMessage : & waProto.LocationMessage {
392
+ DegreesLatitude : proto .Float64 (utils .StrToFloat64 (request .Latitude )),
393
+ DegreesLongitude : proto .Float64 (utils .StrToFloat64 (request .Longitude )),
394
+ },
395
+ }
396
+
397
+ // Send WhatsApp Message Proto
398
+ ts , err := service .WaCli .SendMessage (ctx , dataWaRecipient , msgId , msg )
399
+ if err != nil {
400
+ return response , err
401
+ }
402
+
403
+ response .MessageID = msgId
404
+ response .Status = fmt .Sprintf ("Send location success %s (server timestamp: %s)" , request .Phone , ts )
405
+ return response , nil
406
+ }
407
+
408
+ func (service serviceSend ) Revoke (ctx context.Context , request domainSend.RevokeRequest ) (response domainSend.RevokeResponse , err error ) {
409
+ err = validations .ValidateRevokeMessage (ctx , request )
377
410
if err != nil {
378
411
return response , err
379
412
}
@@ -394,7 +427,7 @@ func (service serviceSend) Revoke(_ context.Context, request domainSend.RevokeRe
394
427
}
395
428
396
429
func (service serviceSend ) UpdateMessage (ctx context.Context , request domainSend.UpdateMessageRequest ) (response domainSend.UpdateMessageResponse , err error ) {
397
- err = validations .ValidateUpdateMessage (request )
430
+ err = validations .ValidateUpdateMessage (ctx , request )
398
431
if err != nil {
399
432
return response , err
400
433
}
0 commit comments