Browse Source

Generic HTTP endpoint

tags/v0.1.0
Russ Garrett 7 years ago
parent
commit
781e3326cd
No account linked to committer's email address
3 changed files with 36 additions and 1 deletions
  1. 30
    0
      httplistener/generic.go
  2. 3
    0
      httplistener/httplistener.go
  3. 3
    1
      main.go

+ 30
- 0
httplistener/generic.go View File

@@ -0,0 +1,30 @@
1
+package httplistener
2
+
3
+import (
4
+	"bytes"
5
+	"encoding/json"
6
+	"net/http"
7
+)
8
+
9
+type genericMessage struct {
10
+	To   string
11
+	Body string
12
+}
13
+
14
+func (hl *HTTPListener) genericHandler(w http.ResponseWriter, request *http.Request) {
15
+	if request.Method != "POST" {
16
+		http.NotFound(w, request)
17
+		return
18
+	}
19
+
20
+	var message genericMessage
21
+	buf := new(bytes.Buffer)
22
+	buf.ReadFrom(request.Body)
23
+	json.Unmarshal(buf.Bytes(), &message)
24
+
25
+	log.Infof("[%s] %s", message.To, message.Body)
26
+
27
+	if message.To != "" && message.Body != "" {
28
+		hl.irc.Privmsgf(message.To, message.Body)
29
+	}
30
+}

+ 3
- 0
httplistener/httplistener.go View File

@@ -20,6 +20,9 @@ func New(irc *irc.Connection) (*HTTPListener, error) {
20 20
 	hl.http = http.Server{Addr: viper.GetString("http.listen")}
21 21
 
22 22
 	mux := http.NewServeMux()
23
+
24
+	mux.HandleFunc("/send", hl.genericHandler)
25
+
23 26
 	if viper.IsSet("http.listeners.grafana") {
24 27
 		mux.HandleFunc("/grafana", hl.grafanaAlertHandler)
25 28
 	}

+ 3
- 1
main.go View File

@@ -53,7 +53,9 @@ func main() {
53 53
 		return
54 54
 	}
55 55
 
56
-	httplistener.New(irccat.irc)
56
+	if viper.IsSet("http") {
57
+		httplistener.New(irccat.irc)
58
+	}
57 59
 
58 60
 	irccat.tcp.Run(irccat.irc)
59 61
 	irccat.irc.Loop()

Loading…
Cancel
Save