From 96c4ea5fd298b1d0088a22b60af611c3bc34179f Mon Sep 17 00:00:00 2001 From: Aldino Kemal Date: Sun, 15 May 2022 08:28:48 +0700 Subject: [PATCH] feat: add image thumbnail when send image (#11) --- src/go.mod | 10 ++++---- src/go.sum | 20 ++++++++-------- src/services/send_service_impl.go | 40 +++++++++++-------------------- src/utils/general.go | 18 ++++++++++++++ 4 files changed, 47 insertions(+), 41 deletions(-) create mode 100644 src/utils/general.go diff --git a/src/go.mod b/src/go.mod index 0732ff0..23373ad 100644 --- a/src/go.mod +++ b/src/go.mod @@ -10,8 +10,8 @@ require ( github.com/mattn/go-sqlite3 v1.14.11 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e github.com/stretchr/testify v1.7.0 - go.mau.fi/whatsmeow v0.0.0-20220210171358-894bfaa70e7b - google.golang.org/protobuf v1.27.1 + go.mau.fi/whatsmeow v0.0.0-20220514092657-a05359d4385a + google.golang.org/protobuf v1.28.0 ) require ( @@ -19,14 +19,14 @@ require ( github.com/andybalholm/brotli v1.0.4 // indirect github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/gorilla/websocket v1.4.2 // indirect + github.com/gorilla/websocket v1.5.0 // indirect github.com/klauspost/compress v1.14.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.33.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect - go.mau.fi/libsignal v0.0.0-20211109153248-a67163214910 // indirect - golang.org/x/crypto v0.0.0-20220210151621-f4118a5b28e2 // indirect + go.mau.fi/libsignal v0.0.0-20220425070825-c40c839ee6a0 // indirect + golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect golang.org/x/sys v0.0.0-20220209214540-3681064d5158 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/src/go.sum b/src/go.sum index 224c771..9ea64ab 100644 --- a/src/go.sum +++ b/src/go.sum @@ -213,8 +213,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/h2non/bimg v1.1.6 h1:W/kYCxx5PjiJJrYCB60CLDpm5pl0HJv3hthNp9II9oY= github.com/h2non/bimg v1.1.6/go.mod h1:R3+UiYwkK4rQl6KVFTOFJHitgLbZXBZNFh2cv3AEbp8= @@ -376,10 +376,10 @@ github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= -go.mau.fi/libsignal v0.0.0-20211109153248-a67163214910 h1:9FFhG0OmkuMau5UEaTgiUQ+7cSbtbOQ7hiWKdN8OI3I= -go.mau.fi/libsignal v0.0.0-20211109153248-a67163214910/go.mod h1:AufGrvVh+00Nc07Jm4hTquh7yleZyn20tKJI2wCPAKg= -go.mau.fi/whatsmeow v0.0.0-20220210171358-894bfaa70e7b h1:IwkG1atB+tTeMXIaPTeoZEkfviFNmxgbXLfqY3NseMk= -go.mau.fi/whatsmeow v0.0.0-20220210171358-894bfaa70e7b/go.mod h1:8jUjOAi3xtGubxcZgG8uSHpAdyQXBRbWAfxkctX/4y4= +go.mau.fi/libsignal v0.0.0-20220425070825-c40c839ee6a0 h1:3IQF2bgAyibdo77hTejwuJe4jlypj9QaE4xCQuxrThM= +go.mau.fi/libsignal v0.0.0-20220425070825-c40c839ee6a0/go.mod h1:kBOXTvYyDG/q1Ihgvd4J6WenGPh7wtEGvPKF6vmf5ak= +go.mau.fi/whatsmeow v0.0.0-20220514092657-a05359d4385a h1:vMpDAR992ti5RLnux1mbEw2IbUm977IA28nT0txfhJw= +go.mau.fi/whatsmeow v0.0.0-20220514092657-a05359d4385a/go.mod h1:iUBgOLNaqShLrR17u0kIiRptIGFH+nbT1tRhaWBEX/c= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -402,10 +402,9 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220210151621-f4118a5b28e2 h1:XdAboW3BNMv9ocSCOk/u1MFioZGzCNkiJZ19v9Oe3Ig= -golang.org/x/crypto v0.0.0-20220210151621-f4118a5b28e2/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -801,8 +800,9 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/src/services/send_service_impl.go b/src/services/send_service_impl.go index 9cc6a41..e9a9a01 100644 --- a/src/services/send_service_impl.go +++ b/src/services/send_service_impl.go @@ -14,7 +14,6 @@ import ( "google.golang.org/protobuf/proto" "net/http" "os" - "time" ) type SendServiceImpl struct { @@ -64,18 +63,7 @@ func (service SendServiceImpl) SendImage(c *fiber.Ctx, request structs.SendImage if err != nil { return response, err } - - removeFile := func(paths ...string) { - time.Sleep(5 * time.Second) - for _, path := range paths { - err := os.Remove(path) - if err != nil { - fmt.Println("error when delete " + path) - } - } - - } - + // Send to WA server dataWaCaption := request.Caption dataWaRecipient, ok := utils.ParseJID(request.Phone) @@ -93,6 +81,7 @@ func (service SendServiceImpl) SendImage(c *fiber.Ctx, request structs.SendImage } msg := &waProto.Message{ImageMessage: &waProto.ImageMessage{ + JpegThumbnail: newImage, Caption: proto.String(dataWaCaption), Url: proto.String(uploadedImage.URL), DirectPath: proto.String(uploadedImage.DirectPath), @@ -104,7 +93,12 @@ func (service SendServiceImpl) SendImage(c *fiber.Ctx, request structs.SendImage ViewOnce: proto.Bool(request.ViewOnce), }} ts, err := service.WaCli.SendMessage(dataWaRecipient, "", msg) - go removeFile(oriImagePath, newImagePath) + go func() { + errDelete := utils.RemoveFile(0, oriImagePath, newImagePath) + if errDelete != nil { + fmt.Println(errDelete) + } + }() if err != nil { return response, err } else { @@ -123,17 +117,6 @@ func (service SendServiceImpl) SendFile(c *fiber.Ctx, request structs.SendFileRe return response, err } - removeFile := func(paths ...string) { - time.Sleep(5 * time.Second) - for _, path := range paths { - err := os.Remove(path) - if err != nil { - fmt.Println("error when delete " + path) - } - } - - } - // Send to WA server dataWaRecipient, ok := utils.ParseJID(request.Phone) if !ok { @@ -161,7 +144,12 @@ func (service SendServiceImpl) SendFile(c *fiber.Ctx, request structs.SendFileRe DirectPath: proto.String(uploadedFile.DirectPath), }} ts, err := service.WaCli.SendMessage(dataWaRecipient, "", msg) - go removeFile(oriFilePath) + go func() { + errDelete := utils.RemoveFile(0, oriFilePath) + if errDelete != nil { + fmt.Println(errDelete) + } + }() if err != nil { return response, err } else { diff --git a/src/utils/general.go b/src/utils/general.go new file mode 100644 index 0000000..3dda910 --- /dev/null +++ b/src/utils/general.go @@ -0,0 +1,18 @@ +package utils + +import ( + "os" + "time" +) + +func RemoveFile(delaySecond int, paths ...string) error { + if delaySecond > 0 { + time.Sleep(time.Duration(delaySecond) * time.Second) + } + + for _, path := range paths { + err := os.Remove(path) + return err + } + return nil +}