Files
cmp-go-snippet/cmpSnipper/cmpSnipperSnip.go
2024-05-08 09:05:36 +03:00

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")
}