public string GenerateMethod(FunctionABI functionABI) { var messageType = _functionCQSMessageModel.GetFunctionMessageTypeName(functionABI); var messageVariableName = _functionCQSMessageModel.GetFunctionMessageVariableName(functionABI); if (_functionOutputDTOModel.CanGenerateOutputDTO(functionABI)) { var functionOutputDTOType = _functionOutputDTOModel.GetFunctionOutputTypeName(functionABI); return ($@"{SpaceUtils.TwoTabs}public Task<{functionOutputDTOType}> {_commonGenerators.GenerateClassName(functionABI.Name)}QueryAsync({messageType} {messageVariableName}, BlockParameter blockParameter = null) {SpaceUtils.TwoTabs}{{ {SpaceUtils.ThreeTabs}return ContractHandler.QueryDeserializingToObjectAsync<{messageType}, {functionOutputDTOType}>({messageVariableName}, blockParameter); {SpaceUtils.TwoTabs}}}"); } if (functionABI.OutputParameters != null && functionABI.OutputParameters.Length == 1 && functionABI.Constant) { var type = _abiTypeToCSharpType.GetTypeMap(functionABI.OutputParameters[0].Type); return ($@"{SpaceUtils.TwoTabs}public Task<{type}> {_commonGenerators.GenerateClassName(functionABI.Name)}QueryAsync({messageType} {messageVariableName}, BlockParameter blockParameter = null) {SpaceUtils.TwoTabs}{{ {SpaceUtils.ThreeTabs}return ContractHandler.QueryAsync<{messageType}, {type}>({messageVariableName}, blockParameter); {SpaceUtils.TwoTabs}}}"); } if (functionABI.Constant == false || (functionABI.OutputParameters == null || functionABI.OutputParameters.Length == 0)) { var transactionRequest = $@"{SpaceUtils.TwoTabs}public Task<string> {_commonGenerators.GenerateClassName(functionABI.Name)}RequestAsync({messageType} {messageVariableName}) {SpaceUtils.TwoTabs}{{ {SpaceUtils.ThreeTabs} return ContractHandler.SendRequestAsync({messageVariableName}); {SpaceUtils.TwoTabs}}}"; var transactionRequestAndReceipt = $@"{SpaceUtils.TwoTabs}public Task<TransactionReceipt> {_commonGenerators.GenerateClassName(functionABI.Name)}RequestAndWaitForReceiptAsync({messageType} {messageVariableName}, CancellationTokenSource cancellationToken = null) {SpaceUtils.TwoTabs}{{ {SpaceUtils.ThreeTabs} return ContractHandler.SendRequestAndWaitForReceiptAsync({messageVariableName}, cancellationToken); {SpaceUtils.TwoTabs}}}"; return(transactionRequest + Environment.NewLine + transactionRequestAndReceipt); } return(null); }
public string GenerateClass(FunctionABI functionABI) { var header = ""; if (_functionABIModel.IsMultipleOutput(functionABI)) { header = $@"{SpaceUtils.OneTab}[Function(""{functionABI.Name}"", typeof({_functionOutputDTOModel.GetFunctionOutputTypeName(functionABI)}))]"; } if (_functionABIModel.IsSingleOutput(functionABI)) { header = $@"{SpaceUtils.OneTab}[Function(""{functionABI.Name}"", ""{_functionABIModel.GetSingleAbiReturnType(functionABI)}""))]"; } if (_functionABIModel.HasNoReturn(functionABI)) { header = $@"{SpaceUtils.OneTab}[Function(""{functionABI.Name}""]"; } return($@"{header} {SpaceUtils.OneTab}public class {_functionCQSMessageModel.GetFunctionMessageTypeName(functionABI)}:ContractMessage {SpaceUtils.OneTab}{{ {_parameterABIFunctionDTOTemplate.GenerateAllProperties(functionABI.InputParameters)} {SpaceUtils.OneTab}}}"); }