public static async Task <IActionResult> RegisterDeployedContracts( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log, [Inject(typeof(AsymmetricAuthenticationHandler))] AsymmetricAuthenticationHandler auth, [Inject(typeof(IRepository <DeployedContract>))] IRepository <DeployedContract> repo) { var authResult = await auth.HandleAuthenticateAsync(req, log); if (!authResult.Succeeded) { return(new UnauthorizedResult()); } var user = authResult.Principal.Identity.Name; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); DeployedContract contract = JsonConvert.DeserializeObject <DeployedContract>(requestBody); // Reset owner to address of authenticated user contract.OwnerAddress = user; var result = await repo.AddNew(contract); return(new OkObjectResult(result)); }
public static async Task <IActionResult> GetDeployedContracts( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log, [Inject(typeof(AsymmetricAuthenticationHandler))] AsymmetricAuthenticationHandler auth, [Inject(typeof(IRepository <DeployedContract>))] IRepository <DeployedContract> repo) { var authResult = await auth.HandleAuthenticateAsync(req, log); if (!authResult.Succeeded) { return(new UnauthorizedResult()); } var user = authResult.Principal.Identity.Name; var result = await repo.Find(c => c.OwnerAddress == user); if (req.Query.ContainsKey("id")) { result = result.Where(c => c.ContractFile.Id == long.Parse(req.Query["id"])); } if (req.Query.ContainsKey("fileid")) { result = result.Where(c => c.ContractFile.Id == long.Parse(req.Query["fileid"])); } return(new OkObjectResult(result)); }
public static async Task <IActionResult> CreateUpdateDeleteContractFile( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", "put", "delete", Route = null)] HttpRequest req, ILogger log, [Inject(typeof(AsymmetricAuthenticationHandler))] AsymmetricAuthenticationHandler auth, [Inject(typeof(IBlobContractFileRepository))] IBlobContractFileRepository blobContractFileRepository, [Inject(typeof(IReferenceBlobContractFileRepository))] IReferenceBlobContractFileRepository referenceBlobContractFileRepository, [Inject(typeof(IRepository <ContractFile>))] IRepository <ContractFile> repo) { if (req.Method.ToUpper() == "GET") { string id = req.Query["id"]; long userId; if (long.TryParse(id, out userId)) { var result = await repo.Get(userId); if (req.Query.ContainsKey("include")) { var includedItems = req.Query["include"].ToString().Split(','); var blobContractFile = await blobContractFileRepository.GetBlobContractFile(result.OwnerAddress, result.Name, includedItems.Contains("abi", StringComparer.InvariantCultureIgnoreCase), includedItems.Contains("bytecode", StringComparer.InvariantCultureIgnoreCase), includedItems.Contains("sourcecode", StringComparer.InvariantCultureIgnoreCase) || includedItems.Contains("source", StringComparer.InvariantCultureIgnoreCase)); result.Abi = blobContractFile.Abi; result.Bytecode = blobContractFile.Bytecode; result.SourceCode = blobContractFile.SourceCode; } return(new OkObjectResult(result)); } else { return(new BadRequestObjectResult("Please include parameter user")); } } else { var authResult = await auth.HandleAuthenticateAsync(req, log); if (!authResult.Succeeded) { return(new UnauthorizedResult()); } var user = authResult.Principal.Identity.Name; switch (req.Method.ToUpper()) { case "POST": return(await CreateContractFile(user, req, log, repo, blobContractFileRepository, referenceBlobContractFileRepository)); case "PUT": return(await UpdateContractFile(user, req, repo)); case "DELETE": return(await DeleteContractFile(user, req, repo, blobContractFileRepository)); default: return(new BadRequestObjectResult($"Unexpected operation: {req.Method}")); } } }
public static async Task <IActionResult> AddFee( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log, [Inject(typeof(AsymmetricAuthenticationHandler))] AsymmetricAuthenticationHandler auth, [Inject(typeof(IRepository <Fee>))] IRepository <Fee> repo) { var authResult = await auth.HandleAuthenticateAsync(req, log); if (!authResult.Succeeded) { return(new UnauthorizedResult()); } var user = authResult.Principal.Identity.Name; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); Fee fee = JsonConvert.DeserializeObject <Fee>(requestBody); fee.Timestamp = DateTime.UtcNow; fee.IsConfirmed = false; var result = await repo.AddNew(fee); return(new OkObjectResult(result)); }
public static async Task <IActionResult> GetContractFiles( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log, [Inject(typeof(AsymmetricAuthenticationHandler))] AsymmetricAuthenticationHandler auth, [Inject(typeof(IBlobContractFileRepository))] IBlobContractFileRepository blobContractFileRepository, [Inject(typeof(IRepository <ContractFile>))] IRepository <ContractFile> repo) { var authResult = await auth.HandleAuthenticateAsync(req, log); if (!authResult.Succeeded) { return(new UnauthorizedResult()); } var user = authResult.Principal.Identity.Name; var result = await repo.Find(c => c.OwnerAddress == user); return(new OkObjectResult(result)); }