Feat(webhook-type): Initial webhook type support

This commit is contained in:
2022-09-13 23:40:45 +08:00
parent ad69c0470d
commit 0d38e24b3e
4 changed files with 68 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
package webhookeverything
import (
"io/ioutil"
"log"
"net/http"
"net/http/httputil"
@@ -14,6 +15,21 @@ func (env *Env) forwardHookToTelegram(r *http.Request, routeID string) error {
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 {
@@ -28,3 +44,26 @@ func (env *Env) forwardHookToTelegram(r *http.Request, routeID string) error {
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
}