You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

httplistener.go 986B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package httplistener
  2. import (
  3. "github.com/irccloud/go-ircevent"
  4. "github.com/juju/loggo"
  5. "github.com/spf13/viper"
  6. "net/http"
  7. )
  8. var log = loggo.GetLogger("HTTPListener")
  9. type HTTPListener struct {
  10. http http.Server
  11. irc *irc.Connection
  12. }
  13. func New(irc *irc.Connection) (*HTTPListener, error) {
  14. hl := HTTPListener{}
  15. hl.irc = irc
  16. hl.http = http.Server{Addr: viper.GetString("http.listen")}
  17. mux := http.NewServeMux()
  18. mux.HandleFunc("/send", hl.genericHandler)
  19. if viper.IsSet("http.listeners.grafana") {
  20. mux.HandleFunc("/grafana", hl.grafanaAlertHandler)
  21. }
  22. if viper.IsSet("http.listeners.github-releases") {
  23. mux.HandleFunc("/github-releases", hl.githubReleasesHandler)
  24. }
  25. hl.http.Handler = mux
  26. log.Infof("Listening for HTTP requests on %s", viper.GetString("http.listen"))
  27. if viper.GetBool("http.tls") {
  28. go hl.http.ListenAndServeTLS(viper.GetString("http.tls_cert"), viper.GetString("http.tls_key"))
  29. } else {
  30. go hl.http.ListenAndServe()
  31. }
  32. return &hl, nil
  33. }