8da763ec2f
- Fixed issue with webhooks
88 lines
1.8 KiB
Go
88 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"net/http"
|
|
"net/http/httputil"
|
|
|
|
"github.com/pusher/pusher-http-go"
|
|
)
|
|
|
|
var client pusher.Client
|
|
|
|
func init() {
|
|
client = pusher.Client{
|
|
AppId: "1",
|
|
Key: "278d525bdf162c739803",
|
|
Secret: "7ad3753142a6693b25b9",
|
|
Host: ":8080",
|
|
Cluster: "hello",
|
|
}
|
|
}
|
|
|
|
func pusherPresenceAuth(res http.ResponseWriter, req *http.Request) {
|
|
log.Println("Presence Request")
|
|
presenceData := pusher.MemberData{
|
|
UserId: "1",
|
|
UserInfo: map[string]string{},
|
|
}
|
|
|
|
params, _ := ioutil.ReadAll(req.Body)
|
|
response, err := client.AuthenticatePresenceChannel(params, presenceData)
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
_, _ = fmt.Fprint(res, string(response))
|
|
}
|
|
|
|
func pusherPrivateAuth(res http.ResponseWriter, req *http.Request) {
|
|
params, _ := ioutil.ReadAll(req.Body)
|
|
response, err := client.AuthenticatePrivateChannel(params)
|
|
|
|
log.Printf("Private Request %s", params)
|
|
log.Printf("Auth %s", response)
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
_, _ = fmt.Fprint(res, string(response))
|
|
}
|
|
|
|
func triggerMessage(res http.ResponseWriter, _ *http.Request) {
|
|
_, err := client.Trigger("private-messages", "messages", "The message from server")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
_, _ = fmt.Fprint(res, "OK")
|
|
}
|
|
|
|
func hookcallback(res http.ResponseWriter, r *http.Request) {
|
|
bytes, err := httputil.DumpRequest(r, true)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Println(string(bytes))
|
|
|
|
_, err = client.Trigger("private-webhook", "mywebhook", "The Webhoook from server")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
_, _ = fmt.Fprint(res, "OK")
|
|
}
|
|
|
|
func main() {
|
|
http.HandleFunc("/pusher/presence/auth", pusherPresenceAuth)
|
|
http.HandleFunc("/pusher/private/auth", pusherPrivateAuth)
|
|
http.HandleFunc("/trigger", triggerMessage)
|
|
http.HandleFunc("/hook", hookcallback)
|
|
http.Handle("/", http.FileServer(http.Dir("./")))
|
|
_ = http.ListenAndServe(":5000", nil)
|
|
}
|