83 lines
1.6 KiB
Go
83 lines
1.6 KiB
Go
|
|
package cmpSnipper
|
|
|
|
import (
|
|
"reflect"
|
|
"errors"
|
|
)
|
|
|
|
func (app *App) SnipExists(funcName string) bool {
|
|
snipName := app.UpperFirst(funcName) + "Snip"
|
|
refCls := reflect.ValueOf(app)
|
|
refMth := refCls.MethodByName(snipName)
|
|
|
|
if !refMth.IsValid() {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
func (app *App) SnipCall(cmpWbsCli cmpWbsCliStruct, fnName string, ifcII interface{}) (interface{}, error) {
|
|
snName := app.UpperFirst(fnName) + "Snip"
|
|
refCls := reflect.ValueOf(app)
|
|
refMth := refCls.MethodByName(snName)
|
|
|
|
if !refMth.IsValid() {
|
|
app.Log("Call method \"%s\" not found", snName)
|
|
return nil, errors.New("Call method not founnd")
|
|
}
|
|
|
|
app.Log("Call method \"%s\"", snName)
|
|
|
|
ifcIM := map[string]interface{}{
|
|
"InputArgument" : ifcII,
|
|
"HostPort" : cmpWbsCli.HostPort,
|
|
}
|
|
|
|
refIL := []reflect.Value{
|
|
reflect.ValueOf(ifcIM),
|
|
}
|
|
|
|
app.CliCur = &cmpWbsCli
|
|
|
|
refOL := refMth.Call(refIL)
|
|
|
|
// app.CliCur = nil ???
|
|
|
|
infOI := refOL[0].Interface()
|
|
|
|
app.Log("Interface output item %+v", infOI)
|
|
|
|
return infOI, nil
|
|
}
|
|
|
|
func (app *App) SnipGetCli(parm any) (cmpWbsCliStruct, error) {
|
|
var err error
|
|
var cmpWbsCli cmpWbsCliStruct
|
|
|
|
HostPortIfc, err := app.IfcGet(parm.(map[string]interface{}), "HostPort")
|
|
|
|
if err != nil {
|
|
app.Log("Invalid iterface")
|
|
return cmpWbsCli, err
|
|
}
|
|
|
|
HostPort, ok := HostPortIfc.(string)
|
|
|
|
if !ok {
|
|
app.Log("Invalid string")
|
|
return cmpWbsCli, errors.New("Can't covert to string")
|
|
}
|
|
|
|
for _, ii := range app.CliList {
|
|
if HostPort != ii.HostPort {
|
|
continue
|
|
}
|
|
|
|
return ii, nil
|
|
}
|
|
|
|
return cmpWbsCli, errors.New("Client " + HostPort + " not found")
|
|
}
|