76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
package url
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
|
|
"github.com/yaoapp/gou/process"
|
|
"github.com/yaoapp/gou/types"
|
|
"github.com/yaoapp/kun/exception"
|
|
)
|
|
|
|
// ProcessParseQuery utils.url.ParseQuery
|
|
func ProcessParseQuery(process *process.Process) interface{} {
|
|
process.ValidateArgNums(1)
|
|
queryString := process.ArgsString(0)
|
|
params, err := url.ParseQuery(queryString)
|
|
if err != nil {
|
|
exception.New("make audio captcha error: %s", 500, err).Throw()
|
|
}
|
|
return params
|
|
}
|
|
|
|
// ProcessParseURL utils.url.ParseURL
|
|
func ProcessParseURL(process *process.Process) interface{} {
|
|
process.ValidateArgNums(1)
|
|
rawurl := process.ArgsString(0)
|
|
u, err := url.Parse(rawurl)
|
|
if err != nil {
|
|
exception.New("parse url error: %s", 500, err).Throw()
|
|
}
|
|
return map[string]interface{}{
|
|
"scheme": u.Scheme,
|
|
"host": u.Host,
|
|
"domain": u.Hostname(),
|
|
"path": u.Path,
|
|
"port": u.Port(),
|
|
"query": u.Query(),
|
|
"url": u.String(),
|
|
}
|
|
}
|
|
|
|
// ProcessQueryParam handle the get Template request
|
|
func ProcessQueryParam(process *process.Process) interface{} {
|
|
process.ValidateArgNums(1)
|
|
switch v := process.Args[0].(type) {
|
|
|
|
case url.Values:
|
|
return types.URLToQueryParam(v)
|
|
|
|
case map[string][]string:
|
|
return types.URLToQueryParam(v)
|
|
|
|
case map[string]interface{}:
|
|
values := url.Values{}
|
|
for key, value := range v {
|
|
switch val := value.(type) {
|
|
case []string:
|
|
for _, v := range val {
|
|
values.Add(key, v)
|
|
}
|
|
|
|
case []interface{}:
|
|
for _, v := range val {
|
|
values.Add(key, fmt.Sprintf("%v", v))
|
|
}
|
|
|
|
default:
|
|
values.Set(key, fmt.Sprintf("%v", value))
|
|
}
|
|
}
|
|
return types.URLToQueryParam(values)
|
|
}
|
|
|
|
v, _ := types.AnyToQueryParam(process.Args[0])
|
|
return v
|
|
}
|