From f44346a1d7ee32deb1706aa4e3888d3f180022f7 Mon Sep 17 00:00:00 2001 From: huangsimin Date: Wed, 21 Nov 2018 18:58:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BC=98=E5=85=88=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F,=20=E8=BF=98=E6=B2=A1=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parse_curl.go | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/parse_curl.go b/parse_curl.go index 2b40e06..338a38c 100644 --- a/parse_curl.go +++ b/parse_curl.go @@ -120,14 +120,20 @@ func ParseRawCURL(scurl string) (cURL *CURL, err error) { return curl, nil } -func judgeAndParseOptions(u *CURL, soption string) { +// ParseFunction 优先执行参数 +type ParseFunction struct { + ExecuteFunction func(u *CURL, soption string) + ParamCURL *CURL + ParamData string + Prioty int +} + +func judgeAndParseOptions(u *CURL, soption string) *ParseFunction { switch prefix := soption[0:2]; prefix { case "-H": - parseHeader(u, soption) + return &ParseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseHeader, Prioty: 1} case "-X": - matches := regexp.MustCompile("-X +(.+)").FindStringSubmatch(soption) - method := strings.Trim(matches[1], "'") - u.Method = method + return &ParseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseOptX, Prioty: 1} case "-A": // User-Agent 先后顺序的问题 parseHeader(u, soption) case "-I": @@ -137,6 +143,12 @@ func judgeAndParseOptions(u *CURL, soption string) { } } +func parseOptX(u *CURL, soption string) { + matches := regexp.MustCompile("-X +(.+)").FindStringSubmatch(soption) + method := strings.Trim(matches[1], "'") + u.Method = method +} + func parseLongOption(u *CURL, soption string) { // -d, --data HTTP POST data // --data-ascii HTTP POST ASCII data