Commit ad8bc85d authored by Pasan Mallawaarachchi's avatar Pasan Mallawaarachchi 💻

go worker with attachments

parent 5b1b6c78
......@@ -19,8 +19,8 @@ requests:
header_type: Content-Type
header_json: application/json
mailgun:
domain: sandbox69b93297d9f045b5ae2383ee3b5d234c.mailgun.org
apikey: 0b6326227e0797740c93e5cfffc901c1-49a2671e-e9e05eca
domain: mailgun-bp.comsolvia.se
apikey: 68efe0d516a7f70133fee60a2cd5ceba-6140bac2-41d4c8d2
error_report:
error_sender: qa@parkwaylabs.com
error_head: Email Worker Crashed
......
......@@ -10,14 +10,14 @@ package main
*/
import (
"context"
"encoding/base64"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"net/http"
"os"
"path"
"strconv"
"strings"
"sync"
"time"
......@@ -106,7 +106,7 @@ var waitGroup sync.WaitGroup
var mailData chan string
var outboxReadTime chan string
var outboxDeleteTime chan string
var fileName = ""
var filename = ""
func main() {
// get configurations
......@@ -122,7 +122,8 @@ func main() {
_, reqErrOutbox := http.NewRequest(config.Requests.Get, config.Curl.CheckMail, nil)
if reqErrOutbox != nil {
fmt.Println("Error Connectiong to CouchDB")
fmt.Println("Error Connectiong to CouchDB. Error is :\n" + reqErrOutbox.Error())
// panic(reqErrOutbox)
os.Exit(1)
} else {
......@@ -342,11 +343,41 @@ func worker(i int) {
}
if len(attachment) > 0 {
//url := "http://www.orimi.com/pdf-test.pdf"
r, _ := http.NewRequest("GET", attachment, nil)
fileName = path.Base(r.URL.Path)
getFile(fileName, attachment)
message.AddHeader("Content-Type", "multipart/form-data")
message.AddAttachment(fileName)
attachReq, _ := http.NewRequest("GET", attachment, nil)
attchResp, err := http.DefaultClient.Do(attachReq)
// if
//if(attachErr != nil)
//attchResp, err := http.DefaultClient.Do(attachReq)
if err != nil {
panic(err)
}
defer attchResp.Body.Close()
respbody, _ := ioutil.ReadAll(attchResp.Body)
resp := string(respbody)
time := time.Now().UnixNano()
filename = strconv.FormatInt(time, 10) + ".pdf"
dec, err := base64.StdEncoding.DecodeString(resp)
if err != nil {
panic(err)
}
f, err := os.Create(filename)
if err != nil {
panic(err)
}
//defer f.Close()
if _, err := f.Write(dec); err != nil {
panic(err)
}
if err := f.Sync(); err != nil {
panic(err)
}
//message.AddHeader("Content-Type", "multipart/form-data")
message.AddAttachment(filename)
// message.AddReaderAttachment(filename, f)
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second*30)
......@@ -356,8 +387,8 @@ func worker(i int) {
log.Fatal(err)
//alertAdmin(" MAilgun Error \n" + err.Error())
}
if len(attachment) > 0 {
os.Remove(fileName)
if len(filename) > 0 {
os.Remove(filename)
}
//fmt.Println(resp)
if config.AppMod.Production == "0" {
......@@ -452,32 +483,6 @@ func alertAdmin(err string) {
}
/**
* Gets the file from given URL
*/
func getFile(fileName, url string) {
// Get the data
resp, err := http.Get(url)
if err != nil {
panic(err)
}
defer resp.Body.Close()
// Create the file
out, err := os.Create(fileName)
if err != nil {
panic(err)
}
defer out.Close()
// Write the body to file
_, err = io.Copy(out, resp.Body)
if err != nil {
panic(err)
}
}
/**
* log worker tasks
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment