Added Client V1 API to allow speed tests

This commit is contained in:
2019-11-29 16:16:18 +08:00
parent fbc2301287
commit be1053921b
4 changed files with 98 additions and 6 deletions

View File

@ -27,6 +27,7 @@ var (
requiredFunc = map[string]struct{}{
"getMapping": struct{}{},
"getNodes": struct{}{},
"getSuffix": struct{}{},
}
parsedFunc *starlark.StringDict
parseThread = &starlark.Thread{
@ -152,3 +153,42 @@ func GetMapping(ip string) string {
log.Println("Script returned unexpected result:", ret.String())
return ""
}
func GetNodes() (res []string) {
thread := pool.Get()
ret, err := starlark.Call(thread, (*parsedFunc)["getNodes"], nil, nil)
if err != nil {
log.Println("Starlark execute error:", err.Error())
return nil
}
if r, ok := ret.(*starlark.List); ok {
res = make([]string, r.Len())
for i := 0; i < r.Len(); i++ {
v := r.Index(i)
if s, ok := v.(starlark.String); ok {
res[i] = string(s)
} else {
log.Println("Script returned unexpected result:",
ret.String())
}
}
} else {
log.Println("Script returned unexpected result:", ret.String())
}
return
}
func GetSuffix(ip string) string {
thread := pool.Get()
ret, err := starlark.Call(thread, (*parsedFunc)["getSuffix"],
starlark.Tuple{starlark.String(ip)}, nil)
if err != nil {
log.Println("Starlark execute error:", err.Error())
return ""
}
if r, ok := ret.(starlark.String); ok {
return string(r)
}
log.Println("Script returned unexpected result:", ret.String())
return ""
}

View File

@ -8,7 +8,10 @@ import (
var (
defaultServer = flag.String("fallback-node",
"xe-mci1-us.edge.eve.network",
"Default CDN node in case of any error when executing script")
"Default CDN node in case of any script error")
defaultSuffix = flag.String("fallback-suffix",
".edge.eve.network",
"Default CDN suffix in case of any script error")
)
func Initialize() {
@ -22,3 +25,15 @@ func Get(ip string) string {
}
return ret
}
func GetSuffix(ip string) string {
ret := elf.GetSuffix(ip)
if ret == "" {
return *defaultSuffix
}
return ret
}
func GetNodes() []string {
return elf.GetNodes()
}