hide noneed method and struct
This commit is contained in:
parent
adc50c8a62
commit
26d20bfb5b
52
base.go
52
base.go
@ -4,11 +4,11 @@ import (
|
|||||||
"container/heap"
|
"container/heap"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Nodes for Heap, Container List
|
// parseQueue for Heap, Container List
|
||||||
type Nodes []*ParseFunction
|
type parseQueue []*parseFunction
|
||||||
|
|
||||||
// ParseFunction 优先执行参数
|
// parseFunction 优先执行参数
|
||||||
type ParseFunction struct {
|
type parseFunction struct {
|
||||||
ExecuteFunction func(u *CURL, soption string)
|
ExecuteFunction func(u *CURL, soption string)
|
||||||
ParamCURL *CURL
|
ParamCURL *CURL
|
||||||
ParamData string
|
ParamData string
|
||||||
@ -16,29 +16,29 @@ type ParseFunction struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute 执行 函数
|
// Execute 执行 函数
|
||||||
func (pf *ParseFunction) Execute() {
|
func (pf *parseFunction) Execute() {
|
||||||
pf.ExecuteFunction(pf.ParamCURL, pf.ParamData)
|
pf.ExecuteFunction(pf.ParamCURL, pf.ParamData)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Swap 实现sort.Iterface
|
// Swap 实现sort.Iterface
|
||||||
func (nodes *Nodes) Swap(i, j int) {
|
func (nodes *parseQueue) Swap(i, j int) {
|
||||||
ns := *nodes
|
ns := *nodes
|
||||||
ns[i], ns[j] = ns[j], ns[i]
|
ns[i], ns[j] = ns[j], ns[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Less Priority Want Less
|
// Less Priority Want Less
|
||||||
func (nodes *Nodes) Less(i, j int) bool {
|
func (nodes *parseQueue) Less(i, j int) bool {
|
||||||
ns := *nodes
|
ns := *nodes
|
||||||
return ns[i].Prioty < ns[j].Prioty
|
return ns[i].Prioty < ns[j].Prioty
|
||||||
}
|
}
|
||||||
|
|
||||||
// Push 实现heap.Interface接口定义的额外方法
|
// Push 实现heap.Interface接口定义的额外方法
|
||||||
func (nodes *Nodes) Push(exec interface{}) {
|
func (nodes *parseQueue) Push(exec interface{}) {
|
||||||
*nodes = append(*nodes, exec.(*ParseFunction))
|
*nodes = append(*nodes, exec.(*parseFunction))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pop 堆顶
|
// Pop 堆顶
|
||||||
func (nodes *Nodes) Pop() (exec interface{}) {
|
func (nodes *parseQueue) Pop() (exec interface{}) {
|
||||||
nlen := nodes.Len()
|
nlen := nodes.Len()
|
||||||
exec = (*nodes)[nlen-1] // 返回删除的元素
|
exec = (*nodes)[nlen-1] // 返回删除的元素
|
||||||
*nodes = (*nodes)[:nlen-1] // [n:m]不包括下标为m的元素
|
*nodes = (*nodes)[:nlen-1] // [n:m]不包括下标为m的元素
|
||||||
@ -46,39 +46,39 @@ func (nodes *Nodes) Pop() (exec interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Len len(nodes)
|
// Len len(nodes)
|
||||||
func (nodes *Nodes) Len() int {
|
func (nodes *parseQueue) Len() int {
|
||||||
return len(*nodes)
|
return len(*nodes)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PQueueExecute 优先函数队列
|
// pQueueExecute 优先函数队列
|
||||||
type PQueueExecute struct {
|
type pQueueExecute struct {
|
||||||
nodes Nodes
|
nodes parseQueue
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPQueueExecute Create A PQueueExecute
|
// newPQueueExecute Create A pQueueExecute
|
||||||
func NewPQueueExecute() *PQueueExecute {
|
func newPQueueExecute() *pQueueExecute {
|
||||||
pe := &PQueueExecute{}
|
pe := &pQueueExecute{}
|
||||||
pe.nodes = make(Nodes, 0)
|
pe.nodes = make(parseQueue, 0)
|
||||||
heap.Init(&pe.nodes)
|
heap.Init(&pe.nodes)
|
||||||
return pe
|
return pe
|
||||||
}
|
}
|
||||||
|
|
||||||
// Push Create A PQueueExecute
|
// Push Create A pQueueExecute
|
||||||
func (pqe *PQueueExecute) Push(exec *ParseFunction) {
|
func (pqe *pQueueExecute) Push(exec *parseFunction) {
|
||||||
heap.Push(&pqe.nodes, exec)
|
heap.Push(&pqe.nodes, exec)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pop Create A PQueueExecute
|
// Pop Create A pQueueExecute
|
||||||
func (pqe *PQueueExecute) Pop() *ParseFunction {
|
func (pqe *pQueueExecute) Pop() *parseFunction {
|
||||||
return heap.Pop(&pqe.nodes).(*ParseFunction)
|
return heap.Pop(&pqe.nodes).(*parseFunction)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Len Create A PQueueExecute
|
// Len Create A pQueueExecute
|
||||||
func (pqe *PQueueExecute) Len() int {
|
func (pqe *pQueueExecute) Len() int {
|
||||||
return pqe.nodes.Len()
|
return pqe.nodes.Len()
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (pqe *PQueueExecute) String() string {
|
// func (pqe *pQueueExecute) String() string {
|
||||||
// content := ""
|
// content := ""
|
||||||
// for _, node := range pqe.nodes {
|
// for _, node := range pqe.nodes {
|
||||||
// content += strconv.Itoa(node.Prioty)
|
// content += strconv.Itoa(node.Prioty)
|
||||||
|
16
base_test.go
16
base_test.go
@ -6,14 +6,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestPQueue(t *testing.T) {
|
func TestPQueue(t *testing.T) {
|
||||||
PQExec := NewPQueueExecute()
|
PQExec := newPQueueExecute()
|
||||||
PQExec.Push(&ParseFunction{Prioty: 5})
|
PQExec.Push(&parseFunction{Prioty: 5})
|
||||||
PQExec.Push(&ParseFunction{Prioty: 10})
|
PQExec.Push(&parseFunction{Prioty: 10})
|
||||||
PQExec.Push(&ParseFunction{Prioty: 4})
|
PQExec.Push(&parseFunction{Prioty: 4})
|
||||||
PQExec.Push(&ParseFunction{Prioty: 4})
|
PQExec.Push(&parseFunction{Prioty: 4})
|
||||||
PQExec.Push(&ParseFunction{Prioty: 20})
|
PQExec.Push(&parseFunction{Prioty: 20})
|
||||||
PQExec.Push(&ParseFunction{Prioty: 10})
|
PQExec.Push(&parseFunction{Prioty: 10})
|
||||||
PQExec.Push(&ParseFunction{Prioty: 15})
|
PQExec.Push(&parseFunction{Prioty: 15})
|
||||||
|
|
||||||
content := ""
|
content := ""
|
||||||
for PQExec.Len() > 0 {
|
for PQExec.Len() > 0 {
|
||||||
|
@ -54,8 +54,11 @@ func NewCURL(scurl ...string) *CURL {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (curl *CURL) String() string {
|
func (curl *CURL) String() string {
|
||||||
return fmt.Sprintf("Method: %s\nParsedURL: %s\nHeader: %s\nCookie: %s",
|
if curl != nil {
|
||||||
curl.Method, curl.ParsedURL.String(), curl.Header, curl.Cookies)
|
return fmt.Sprintf("Method: %s\nParsedURL: %s\nHeader: %s\nCookie: %s",
|
||||||
|
curl.Method, curl.ParsedURL.String(), curl.Header, curl.Cookies)
|
||||||
|
}
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateSession 创建Session
|
// CreateSession 创建Session
|
||||||
@ -110,7 +113,7 @@ func ParseRawCURL(scurl string) (cURL *CURL, err error) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
executor := NewPQueueExecute()
|
executor := newPQueueExecute()
|
||||||
|
|
||||||
curl := NewCURL()
|
curl := NewCURL()
|
||||||
scurl = strings.TrimSpace(scurl)
|
scurl = strings.TrimSpace(scurl)
|
||||||
@ -145,32 +148,32 @@ func ParseRawCURL(scurl string) (cURL *CURL, err error) {
|
|||||||
return curl, nil
|
return curl, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func judgeAndParseOptions(u *CURL, soption string) *ParseFunction {
|
func judgeAndParseOptions(u *CURL, soption string) *parseFunction {
|
||||||
switch prefix := soption[0:2]; prefix {
|
switch prefix := soption[0:2]; prefix {
|
||||||
case "-H":
|
case "-H":
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseHeader, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseHeader, Prioty: 10}
|
||||||
case "-X":
|
case "-X":
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseOptX, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseOptX, Prioty: 10}
|
||||||
case "-A": // User-Agent 先后顺序的问题
|
case "-A": // User-Agent 先后顺序的问题
|
||||||
data := extractData("^-A +(.+)", soption)
|
data := extractData("^-A +(.+)", soption)
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUserAgent, Prioty: 15}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUserAgent, Prioty: 15}
|
||||||
case "-I":
|
case "-I":
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseOptI, Prioty: 15}
|
return &parseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseOptI, Prioty: 15}
|
||||||
case "--":
|
case "--":
|
||||||
return parseLongOption(u, soption)
|
return parseLongOption(u, soption)
|
||||||
case "-d":
|
case "-d":
|
||||||
data := extractData("^-d +(.+)", soption)
|
data := extractData("^-d +(.+)", soption)
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyASCII, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyASCII, Prioty: 10}
|
||||||
case "-u":
|
case "-u":
|
||||||
data := extractData("^-u +(.+)", soption)
|
data := extractData("^-u +(.+)", soption)
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUser, Prioty: 15}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUser, Prioty: 15}
|
||||||
case "-k": // -k, --insecure Allow insecure server connections when using SSL
|
case "-k": // -k, --insecure Allow insecure server connections when using SSL
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseInsecure, Prioty: 15}
|
return &parseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseInsecure, Prioty: 15}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseLongOption(u *CURL, soption string) *ParseFunction {
|
func parseLongOption(u *CURL, soption string) *parseFunction {
|
||||||
// -d, --data <data> HTTP POST data
|
// -d, --data <data> HTTP POST data
|
||||||
// --data-ascii <data> HTTP POST ASCII data
|
// --data-ascii <data> HTTP POST ASCII data
|
||||||
// --data-binary <data> HTTP POST binary data
|
// --data-binary <data> HTTP POST binary data
|
||||||
@ -190,27 +193,27 @@ func parseLongOption(u *CURL, soption string) *ParseFunction {
|
|||||||
|
|
||||||
switch dtype {
|
switch dtype {
|
||||||
case "binary":
|
case "binary":
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyBinary, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyBinary, Prioty: 10}
|
||||||
case "ascii":
|
case "ascii":
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyASCII, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyASCII, Prioty: 10}
|
||||||
case "raw":
|
case "raw":
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyRaw, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyRaw, Prioty: 10}
|
||||||
case "urlencode":
|
case "urlencode":
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyURLEncode, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyURLEncode, Prioty: 10}
|
||||||
case "data":
|
case "data":
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyASCII, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseBodyASCII, Prioty: 10}
|
||||||
}
|
}
|
||||||
|
|
||||||
case regexp.MustCompile("^--header").MatchString(soption):
|
case regexp.MustCompile("^--header").MatchString(soption):
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseHeader, Prioty: 10}
|
return &parseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseHeader, Prioty: 10}
|
||||||
case regexp.MustCompile("^--user-agent").MatchString(soption):
|
case regexp.MustCompile("^--user-agent").MatchString(soption):
|
||||||
data := extractData("^--user-agent +(.+)", soption)
|
data := extractData("^--user-agent +(.+)", soption)
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUserAgent, Prioty: 15}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUserAgent, Prioty: 15}
|
||||||
case regexp.MustCompile("^--user").MatchString(soption):
|
case regexp.MustCompile("^--user").MatchString(soption):
|
||||||
data := extractData("^--user +(.+)", soption)
|
data := extractData("^--user +(.+)", soption)
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUser, Prioty: 15}
|
return &parseFunction{ParamCURL: u, ParamData: data, ExecuteFunction: parseUser, Prioty: 15}
|
||||||
case regexp.MustCompile("^--insecure").MatchString(soption):
|
case regexp.MustCompile("^--insecure").MatchString(soption):
|
||||||
return &ParseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseInsecure, Prioty: 15}
|
return &parseFunction{ParamCURL: u, ParamData: soption, ExecuteFunction: parseInsecure, Prioty: 15}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Println("can't parseOption", soption)
|
log.Println("can't parseOption", soption)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user