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 }