2026-07-22 12:16:27 +08:00
|
|
|
|
package rongxing
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"strings"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// generateCurlCommand 生成可直接复现的 curl 命令,便于联调排查。
|
2026-07-23 15:59:00 +08:00
|
|
|
|
// proxyURL 非空时附加 -x,便于确认线上是否应走 SOCKS。
|
|
|
|
|
|
func generateCurlCommand(method, requestURL string, headers map[string]string, body, proxyURL string) string {
|
2026-07-22 12:16:27 +08:00
|
|
|
|
var cmd strings.Builder
|
|
|
|
|
|
cmd.WriteString("curl -X ")
|
|
|
|
|
|
cmd.WriteString(method)
|
|
|
|
|
|
cmd.WriteString(" '")
|
2026-07-23 15:59:00 +08:00
|
|
|
|
cmd.WriteString(requestURL)
|
2026-07-22 12:16:27 +08:00
|
|
|
|
cmd.WriteString("'")
|
|
|
|
|
|
|
2026-07-23 15:59:00 +08:00
|
|
|
|
if p := strings.TrimSpace(proxyURL); p != "" {
|
|
|
|
|
|
cmd.WriteString(" \\\n -x '")
|
|
|
|
|
|
cmd.WriteString(escapeSingleQuotes(p))
|
|
|
|
|
|
cmd.WriteString("'")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-07-22 12:16:27 +08:00
|
|
|
|
for key, value := range headers {
|
|
|
|
|
|
cmd.WriteString(" \\\n -H '")
|
|
|
|
|
|
cmd.WriteString(key)
|
|
|
|
|
|
cmd.WriteString(": ")
|
|
|
|
|
|
cmd.WriteString(escapeSingleQuotes(value))
|
|
|
|
|
|
cmd.WriteString("'")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if body != "" {
|
|
|
|
|
|
cmd.WriteString(" \\\n -d '")
|
|
|
|
|
|
cmd.WriteString(escapeSingleQuotes(body))
|
|
|
|
|
|
cmd.WriteString("'")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return cmd.String()
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func escapeSingleQuotes(s string) string {
|
|
|
|
|
|
return strings.ReplaceAll(s, "'", `'\''`)
|
|
|
|
|
|
}
|