Go-based webhook generic handler
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.
 
 
 

69 lines
1.5 KiB

package webhookeverything
import (
"io/ioutil"
"log"
"net/http"
"net/http/httputil"
)
func (env *Env) forwardHookToTelegram(r *http.Request, routeID string) error {
// Get Telegram code
var routeResult WebhookRoute
err := env.DB.Where(&WebhookRoute{WebhookID: routeID}).First(&routeResult).Error
if err != nil {
return err
}
if routeResult.WebhookType == "body" {
return env.forwardHookToTelegramBody(r, routeID)
} else {
return env.forwardHookToTelegramRaw(r, routeID)
}
}
func (env *Env) forwardHookToTelegramRaw(r *http.Request, routeID string) error {
// Get Telegram code
var routeResult WebhookRoute
err := env.DB.Where(&WebhookRoute{WebhookID: routeID}).First(&routeResult).Error
if err != nil {
return err
}
// Dump request as string
responseBytes, err := httputil.DumpRequest(r, true)
if err != nil {
return err
}
// Print on screenn
log.Println(string(responseBytes))
// Send telegram
env.TelegramEnv.TelegramSend(routeResult.TelegramShortCode, string(responseBytes))
return nil
}
func (env *Env) forwardHookToTelegramBody(r *http.Request, routeID string) error {
// Get Telegram code
var routeResult WebhookRoute
err := env.DB.Where(&WebhookRoute{WebhookID: routeID}).First(&routeResult).Error
if err != nil {
return err
}
// Dump request as string
responseBytes, err := ioutil.ReadAll(r.Body)
if err != nil {
return err
}
// Print on screenn
log.Println(string(responseBytes))
// Send telegram
env.TelegramEnv.TelegramSend(routeResult.TelegramShortCode, string(responseBytes))
return nil
}