package rpc import "github.com/kaspanet/kaspad/rpc/model" // handleWebsocketHelp implements the help command for websocket connections. func handleWebsocketHelp(wsc *wsClient, icmd interface{}) (interface{}, error) { cmd, ok := icmd.(*model.HelpCmd) if !ok { return nil, model.ErrRPCInternal } // Provide a usage overview of all commands when no specific command // was specified. var command string if cmd.Command != nil { command = *cmd.Command } if command == "" { usage, err := wsc.server.helpCacher.rpcUsage(true) if err != nil { context := "Failed to generate RPC usage" return nil, internalRPCError(err.Error(), context) } return usage, nil } // Check that the command asked for is supported and implemented. // Search the list of websocket handlers as well as the main list of // handlers since help should only be provided for those cases. valid := true if _, ok := rpcHandlers[command]; !ok { if _, ok := wsHandlers[command]; !ok { valid = false } } if !valid { return nil, &model.RPCError{ Code: model.ErrRPCInvalidParameter, Message: "Unknown command: " + command, } } // Get the help for the command. help, err := wsc.server.helpCacher.rpcMethodHelp(command) if err != nil { context := "Failed to generate help" return nil, internalRPCError(err.Error(), context) } return help, nil }