public async Task <IActionResult> OnPostAsync(int?contractId, string postMessage) { var contract = await DbContext.Contracts.FindAsync(contractId); if (contract == null) { return(NotFound()); } if (!string.IsNullOrEmpty(postMessage)) { var userContext = CoreService.GetUserContext(); var cm = new ContractMessage { Message = postMessage, ContractId = contract.Id, VetMemberId = userContext.CurrentUser.Id }; DbContext.ContractMessage.Add(cm); DbContext.SaveChanges(); PostMessage = null; await SendMessages(contract, userContext.CurrentUser, postMessage); } return(RedirectToPage("./Index", new { contractId = contractId })); }
public static async Task Run( [QueueTrigger("%Storage:ContractPoisonQueue%", Connection = "Storage:Connection")] ContractMessage message, [Queue("%Storage:ContractQueue%", Connection = "Storage:Connection")] CloudQueue contractQueue, ILogger log) { string msg = JsonConvert.SerializeObject(message); var visibilityDelay = TimeSpan.FromHours(1); await contractQueue.AddMessageAsync(new CloudQueueMessage(msg), null, visibilityDelay, null, null); }
public static async Task Run( [QueueTrigger("%Storage:ContractQueue%", Connection = "Storage:Connection")] ContractMessage message, [Queue("%Storage:AnalysisQueue%", Connection = "Storage:Connection")] CloudQueue analysisQueue, ILogger log, ExecutionContext context) { IConfigurationRoot config = new ConfigurationBuilder() .SetBasePath(context.FunctionAppDirectory) .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .Build(); var web3 = new Web3(config.GetValue <string>("Blockchain:Endpoint")); var tx = await web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync(message.TxHash); var code = tx.Input; if (string.IsNullOrEmpty(code) || code == "0x") { return; } System.Threading.Thread.Sleep(2000); var policy = new AnalysisExecutionPolicy(config, log); var analysis = await policy.AnalyzeAsync(code); var response = JsonConvert.DeserializeObject <AnalysisResponse>(analysis); await Blob.WriteAsync( config.GetValue <string>("Storage:Connection"), config.GetValue <string>("Storage:ContractInputContainer"), message.Address, code); string msg = JsonConvert.SerializeObject(new AnalysisMessage { Address = message.Address, TxHash = message.TxHash, Account = policy.Account, AnalysisId = response.UUID, Version = 2 }); await analysisQueue.AddMessageAsync(new CloudQueueMessage(msg)); }
public override void Visit(ContractMessage node) { this.action(node); }
public override void ExplicitVisit(ContractMessage fragment) { _fragments.Add(fragment); }