package main import ( "encoding/json" "io/ioutil" "log" "net/http" "os" ) func IndexHandler(w http.ResponseWriter, r *http.Request) { log.Println("Wrong URL.") w.WriteHeader(400) w.Write([]byte("Wrong URL.")) } func WebhookFailureHandler(w http.ResponseWriter, r *http.Request) { log.Println("Getting not-Post request on /webhook") w.WriteHeader(400) w.Write([]byte("Accepts only POST requests.")) } func WebhookHandler(w http.ResponseWriter, r *http.Request) { decoder := json.NewDecoder(r.Body) var hook Webhook err := decoder.Decode(&hook) if err != nil { var body string defer r.Body.Close() content, cError := ioutil.ReadAll(r.Body) if err != nil { log.Println("Can't read r.Body.", cError) body = "Message not readable." } else { body = string(content) } log.Print("Wrong JSON.", err, "Original message: "+body) w.WriteHeader(400) w.Write([]byte("Wrong JSON. " + err.Error() + " Original message: " + body)) return } if hook.Join != "" { log.Println("Joining #" + hook.Join) con.Join("#" + hook.Join) log.Println("Sending private message to " + hook.Join + ": " + hook.Message) con.Privmsg("#"+hook.Join, hook.Message) if fjoin := os.Getenv("WEB2IRC_IRC_JOIN"); fjoin != hook.Join { log.Println("Leaving #" + hook.Join) con.Part("#" + hook.Join) } if hook.Target != "" { log.Println("Sending private message to " + hook.Target + ": " + hook.Message) con.Privmsg(hook.Target, hook.Message) } } else { log.Println("Sending private message to " + hook.Target + ": " + hook.Message) con.Privmsg(hook.Target, hook.Message) } }