public async Task <HttpActionResult <DeploymentResult, bool> > Report([FromBody] DeploymentResult deploymentResult) => await this.WithResponseContainer( deploymentResult, async result => { string sourceIp = Request?.HttpContext?.Connection?.RemoteIpAddress?.ToString(); result.AgentInfo.IpAddress = sourceIp; long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); result.AgentInfo.LastUpdate = now; List <DeploymentResult> deploymentResults = await RedisDatabase.GetAsync <List <DeploymentResult> >(CacheKeys.DeploymentResults); deploymentResults = deploymentResults ?? new List <DeploymentResult>(); deploymentResults.Add(result); await RedisDatabase.ReplaceAsync(CacheKeys.DeploymentResults, deploymentResults); return(true); });