func TestDemo(ot *testing.T) { importPath := "github.com/bronze1man/kmg/kmgGoSource" kmgCmd.MustRun("kmg go test -i " + importPath) pkgDir := kmgConfig.DefaultEnv().MustGetPathFromImportPath(importPath) fset := token.NewFileSet() astPkgMap, err := parser.ParseDir(fset, pkgDir, nil, 0) if err != nil { panic(err) } astPkg := astPkgMap["kmgGoSource_test"] astFileList := []*ast.File{} for _, file := range astPkg.Files { astFileList = append(astFileList, file) } //os.Chdir(kmgConfig.DefaultEnv().ProjectPath) pkg, err := types.Check(pkgDir, fset, astFileList) if err != nil { panic(err) } funcA := pkg.Scope().Lookup("FuncA") recvPkg := types.NewPackage("github.com/bronze1man/kmg/kmgGoSource", "kmgGoSource") kmgDebug.Println(types.TypeString(recvPkg, funcA.Type())) funTypParams := funcA.Type().(*types.Signature).Params() for i := 0; i < funTypParams.Len(); i++ { kmgDebug.Println(funTypParams.At(i).Name()) kmgDebug.Println(funTypParams.At(i).Type().String()) } //for _,p:=range funcA.Type().(*types.Signature).Params(). //kmgDebug.Println(funcA.Type().(*types.Signature).Params().String()) }
func XSendMessage(message Message) (err error) { subMessageUrl := "https://api.submail.cn/message/xsend.json" kmgDebug.Println(message.Vars) response, err := http.PostForm(subMessageUrl, url.Values{ "appid": {MessageConfig.Appid}, "signature": {MessageConfig.Signature}, "to": {message.To}, "project": {kmgStrconv.InterfaceToString(message.Project)}, "vars": {message.Vars}, }) defer response.Body.Close() if err != nil { return err } body, err := ioutil.ReadAll(response.Body) if err != nil { return err } kmgLog.Log("SubMessage", string(body), message) data := kmgJson.MustUnmarshalToMapDeleteBOM(body) if data["status"] == "error" { return errors.New(kmgStrconv.InterfaceToString(data["msg"])) } return nil }
func main() { // run the server in a new thread. // 在一个新线程里面一直运行服务器. kmgRadius.RunServer(":1812", []byte("sEcReT"), kmgRadius.Handler{ Auth: func(username string) (password string, exist bool) { if username != "a" { return "", false } return "b", true }, AcctStart: func(req kmgRadius.AcctRequest) { kmgDebug.Println("start", req) }, AcctUpdate: func(req kmgRadius.AcctRequest) { kmgDebug.Println("update", req) }, AcctStop: func(req kmgRadius.AcctRequest) { kmgDebug.Println("stop", req) }, }) // wait for the system sign or ctrl-c to close the process. // 等待系统信号或者ctrl-c 关闭进程 kmgConsole.WaitForExit() }