62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"github.com/unrolled/render"
|
|
"github.com/vanng822/go-premailer/premailer"
|
|
"github.com/vanng822/r2router"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
)
|
|
|
|
func main() {
|
|
var (
|
|
host string
|
|
port int
|
|
)
|
|
|
|
flag.StringVar(&host, "h", "127.0.0.1", "Host to listen on")
|
|
flag.IntVar(&port, "p", 8080, "Port number to listen on")
|
|
flag.Parse()
|
|
|
|
sigc := make(chan os.Signal, 1)
|
|
signal.Notify(sigc, os.Kill, os.Interrupt, syscall.SIGTERM, syscall.SIGUSR2)
|
|
app := r2router.NewSeeforRouter()
|
|
|
|
r := render.New()
|
|
|
|
app.Get("/", func(w http.ResponseWriter, req *http.Request, _ r2router.Params) {
|
|
r.JSON(w, http.StatusOK, r2router.M{"usage": "POST / html=HTML&cssToAttributes=boolean&removeClasses=boolean"})
|
|
})
|
|
app.Post("/", func(w http.ResponseWriter, req *http.Request, _ r2router.Params) {
|
|
req.ParseForm()
|
|
html := req.Form.Get("html")
|
|
cssToAttributes := req.Form.Get("cssToAttributes")
|
|
removeClasses := req.Form.Get("removeClasses")
|
|
var result string
|
|
if html != "" {
|
|
options := premailer.NewOptions()
|
|
if removeClasses == "true" {
|
|
options.RemoveClasses = true
|
|
}
|
|
if cssToAttributes == "false" {
|
|
options.CssToAttributes = false
|
|
}
|
|
pre := premailer.NewPremailerFromString(html, options)
|
|
result, _ = pre.Transform()
|
|
} else {
|
|
result = ""
|
|
}
|
|
r.JSON(w, http.StatusOK, r2router.M{"result": result})
|
|
})
|
|
|
|
log.Printf("listening to address %s:%d", host, port)
|
|
go http.ListenAndServe(fmt.Sprintf("%s:%d", host, port), app)
|
|
sig := <-sigc
|
|
log.Printf("Got signal: %s", sig)
|
|
|
|
}
|