verifycode-reconstruct/func.go

84 lines
2.4 KiB
Go

package main
import (
"fmt"
"io"
"net/http"
"net/url"
"strings"
)
// 处理字节切片,返回结构体
func (O OriginContent) Dealwithbody(body []byte) OriginContent {
alreadyDealwithbody := string(body)
spiltdecodedvalue := strings.Split(alreadyDealwithbody, "&")
value := make(map[int][]string)
for k := range spiltdecodedvalue {
value[k] = strings.Split(spiltdecodedvalue[k], "=")
}
urlDecode, err := url.QueryUnescape(value[1][1])
if err != nil {
fmt.Printf("urldecode失败,错误为:%v", err)
}
var wow = NewOrignContent(value[0][1], urlDecode, value[2][1])
fmt.Println(wow)
return wow
}
func verificationCodeHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "方法不允许哦^ ^", http.StatusMethodNotAllowed)
return
}
// 读取请求体数据
body, err := io.ReadAll(r.Body)
if err != nil {
http.Error(w, "读取请求体失败", http.StatusInternalServerError)
return
}
// 把返回体通过方法赋值给全局对象
newObj = newObj.Dealwithbody(body)
//fmt.Printf("%s%s%s\n", time.Now(), " ", content)
// 如果请求内容包含 "验证码",则发送到企业微信机器人
if strings.Contains(newObj.content, "验证码") || strings.Contains(newObj.content, "华为") {
sendToWechatBot(newObj)
}
// 返回响应
w.Write([]byte("请求企业微信~"))
}
func (O OriginContent) Send() {
// 这里实现发送信息到企业微信机器人的逻辑
var message string
if strings.Contains(newObj.content, "华为") {
// 如果 content 中包含 "华为"
message = fmt.Sprintf(`{"msgtype": "text", "text": {"content": "%s","mentioned_mobile_list":["18701488607"]}}`, newObj.content)
} else {
// 如果 content 中不包含 "华为"
message = fmt.Sprintf(`{"msgtype": "text", "text": {"content": "%s"}}`, newObj.content)
}
// 发送 HTTP POST 请求到企业微信机器人的 Webhook
resp, err := http.Post(webhookURLVerCode, "application/json", strings.NewReader(message))
if err != nil {
fmt.Println("Error sending message to Wechat Bot:", err)
return
}
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
fmt.Printf("关闭返回体失败,错误是:%v", err)
}
}(resp.Body)
// 读取响应
respBody, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("读取返回体失败~:", err)
return
}
fmt.Println("发送webhook成功~", string(respBody))
}