Exemplo n.º 1
0
        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 }));
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
 public override void Visit(ContractMessage node) { this.action(node); }
 public override void ExplicitVisit(ContractMessage fragment)
 {
     _fragments.Add(fragment);
 }