From d6a49a418e93cb5eb0b88ec907a51d335a40f8f4 Mon Sep 17 00:00:00 2001 From: Rishav Mehra Date: Tue, 1 Oct 2024 09:10:34 +0530 Subject: [PATCH] feat: go twilio Signed-off-by: Rishav Mehra --- go-twilio/.env.example | 3 + go-twilio/.gitignore | 4 ++ go-twilio/README.md | 73 +++++++++++++++++++++++ go-twilio/go.mod | 37 ++++++++++++ go-twilio/go.sum | 119 +++++++++++++++++++++++++++++++++++++ go-twilio/images/image.png | Bin 0 -> 68709 bytes go-twilio/main.go | 96 ++++++++++++++++++++++++++++++ 7 files changed, 332 insertions(+) create mode 100644 go-twilio/.env.example create mode 100644 go-twilio/.gitignore create mode 100644 go-twilio/README.md create mode 100644 go-twilio/go.mod create mode 100644 go-twilio/go.sum create mode 100644 go-twilio/images/image.png create mode 100644 go-twilio/main.go diff --git a/go-twilio/.env.example b/go-twilio/.env.example new file mode 100644 index 0000000..87d8f50 --- /dev/null +++ b/go-twilio/.env.example @@ -0,0 +1,3 @@ +TWILIO_ACCOUNT_SID=your_account_sid +TWILIO_AUTH_TOKEN=your_auth_token +TWILIO_NUMBER=your_twilio_phone_number \ No newline at end of file diff --git a/go-twilio/.gitignore b/go-twilio/.gitignore new file mode 100644 index 0000000..5ab820b --- /dev/null +++ b/go-twilio/.gitignore @@ -0,0 +1,4 @@ +.env +keploy.yml +keploy +go-twilio \ No newline at end of file diff --git a/go-twilio/README.md b/go-twilio/README.md new file mode 100644 index 0000000..08ec159 --- /dev/null +++ b/go-twilio/README.md @@ -0,0 +1,73 @@ +# Twilio Application +A sample application that sends an SMS using Twilio API. + +## How to run +``` +git clone https://github.com/keploy/samples-go.git && cd samples-go/go-twilio +go mod download + +``` + +## Installing Keploy + +``` +curl -O https://raw.githubusercontent.com/keploy/keploy/main/keploy.sh && source keploy.sh +``` + +## Get Your twilio +- Sign in to the Twilio Console. +- Navigate to your Twilio project dashboard. +- Locate and copy your Account SID and Auth Token from the console. +- Obtain a Twilio Phone Number. +- Open your .env file in your project. +- Add the following environment variables to the .env file: + - `TWILIO_ACCOUNT_SID`=your_account_sid + - `TWILIO_AUTH_TOKEN`=your_auth_token + - `TWILIO_NUMBER`=your_twilio_phone_number +- Save the `.env` file. + +### Build the application +``` +go build . +``` + +## Capture the Testcases +``` +sudo -E keploy record -c "./go-twilio" +``` +To generate test suites with Keploy, you can use tools like Hoppscotch, Postman, or cURL to send API requests. Keploy will capture these API calls and create comprehensive test suites, including detailed test cases and data mocks, allowing for easier testing and validation of your application. + +## Make the POST requests +- Run the following command to make the POST requests: +``` +curl --location 'http://127.0.0.1:8080/send-sms/' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "Body": "Keploy is awesome!", + "To": "" + }' +``` +Replace `` with your registered personal phone number. + +- Replace the placeholder `` with an invalid phone number of your choice. +``` +curl --location 'http://127.0.0.1:8080/send-sms/' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "Body": "Keploy is awesome!", + "To": "" + }' +``` +Both API calls have now been captured as test cases and should be visible within the Keploy CLI. You should see an app directory labeled `keploy` containing the test cases that were just recorded, along with the corresponding data mocks that were generated. + + +## Run the Testcases +Now, let’s execute the application in test mode. +``` +sudo -E keploy test -c "./go-twilio" --delay 10 +``` +Our Testcases has passed and we can see the results in the CLI. +![Alt text](images/image.png) + + + \ No newline at end of file diff --git a/go-twilio/go.mod b/go-twilio/go.mod new file mode 100644 index 0000000..09ee33d --- /dev/null +++ b/go-twilio/go.mod @@ -0,0 +1,37 @@ +module github.com/keploy/samples-go/go-twilio + +go 1.22.1 + +require ( + github.com/bytedance/sonic v1.11.6 // indirect + github.com/bytedance/sonic/loader v0.1.1 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/gin-gonic/gin v1.10.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.20.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/joho/godotenv v1.5.1 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/twilio/twilio-go v1.23.2 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + golang.org/x/arch v0.8.0 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect + google.golang.org/protobuf v1.34.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go-twilio/go.sum b/go-twilio/go.sum new file mode 100644 index 0000000..1722365 --- /dev/null +++ b/go-twilio/go.sum @@ -0,0 +1,119 @@ +github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= +github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0= +github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= +github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= +github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/localtunnel/go-localtunnel v0.0.0-20170326223115-8a804488f275/go.mod h1:zt6UU74K6Z6oMOYJbJzYpYucqdcQwSMPBEdSvGiaUMw= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/twilio/twilio-go v1.23.2 h1:+lQUbXubEtT9eX9ZOLCfNeH4S6IPP2NAtU8BQcAS/t8= +github.com/twilio/twilio-go v1.23.2/go.mod h1:zRkMjudW7v7MqQ3cWNZmSoZJ7EBjPZ4OpNh2zm7Q6ko= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= +golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/go-twilio/images/image.png b/go-twilio/images/image.png new file mode 100644 index 0000000000000000000000000000000000000000..897a2fa5c6c666a9aaa398918d013143ffcfb692 GIT binary patch literal 68709 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 literal 0 HcmV?d00001 diff --git a/go-twilio/main.go b/go-twilio/main.go new file mode 100644 index 0000000..ef1d721 --- /dev/null +++ b/go-twilio/main.go @@ -0,0 +1,96 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "os" + "os/signal" + "syscall" + + "github.com/gin-gonic/gin" + "github.com/joho/godotenv" + "github.com/twilio/twilio-go" + openapi "github.com/twilio/twilio-go/rest/api/v2010" +) + +type Message struct { + Body string `json:"Body" binding:"required"` + To string `json:"To" binding:"required"` +} + +func sendSMS(c *gin.Context) { + var message Message + if err := c.ShouldBindJSON(&message); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + twilioAccountSID := os.Getenv("TWILIO_ACCOUNT_SID") + twilioAuthToken := os.Getenv("TWILIO_AUTH_TOKEN") + twilioPhoneNumber := os.Getenv("TWILIO_NUMBER") + + client := twilio.NewRestClientWithParams(twilio.ClientParams{ + Username: twilioAccountSID, + Password: twilioAuthToken, + }) + + params := &openapi.CreateMessageParams{} + params.SetTo(message.To) + params.SetFrom(twilioPhoneNumber) + params.SetBody(message.Body) + + resp, err := client.Api.CreateMessage(params) + if err != nil { + log.Printf("Error sending SMS: %v", err) + c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to send SMS. Please check the provided phone number."}) + return + } + + c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("SMS sent successfully! SID: %s", *resp.Sid)}) +} + +func gracefulShutdown(router *gin.Engine) { + // Add any additional cleanup logic here if needed + fmt.Println("Shutting down gracefully...") + + // Graceful shutdown logic + srv := &http.Server{ + Addr: ":8080", + Handler: router, + } + + // Wait for interrupt signal to gracefully shut down the server + quit := make(chan os.Signal, 1) + signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) + <-quit + fmt.Println("Shutting down server...") + + // The context is used to inform the server it has 5 seconds to complete the ongoing requests + if err := srv.Shutdown(nil); err != nil { + log.Fatal("Server forced to shutdown:", err) + } + + fmt.Println("Server exiting") +} + +func main() { + // Load environment variables from a .env file + err := godotenv.Load() + if err != nil { + log.Fatalf("Error loading .env file") + } + + router := gin.Default() + + router.POST("/send-sms", sendSMS) + + // Run the server and listen for graceful shutdown + go func() { + if err := router.Run(":8080"); err != nil { + log.Fatalf("Server failed to start: %v", err) + } + }() + + gracefulShutdown(router) +}