public async Task <APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest req, ILambdaContext context) { context.Logger.LogLine(JsonConvert.SerializeObject(req)); var detailsReq = JsonConvert.DeserializeObject <DownloadDetailsReq>(req.Body); using (var storageService = _storageService == null? new DynamoDbStorageService() : _storageService) { var res = new DownloadDetailsRes() { challenge = Guid.NewGuid().To32CharactesString(), secret = Guid.NewGuid().To32CharactesString(), }; var success = await storageService.PutSecret(res.secret, res.challenge, detailsReq.address, detailsReq.fileHash); if (success) { return(new APIGatewayProxyResponse() { Headers = APIGatewayHelpers.GetResponseHeaders(), Body = JsonConvert.SerializeObject(res), StatusCode = 200 }); } throw new SoarException("Error during inserting secret in db."); } }
public async Task <APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest req, ILambdaContext context) { context.Logger.LogLine(JsonConvert.SerializeObject(req)); var baseUrl = req.Headers["Host"]; var stage = req.RequestContext.Stage; var soarS3Base = req.StageVariables["soar_s3_base"]; var soarPreviewsBucketName = req.StageVariables["soar_previews_bucket_name"]; var reqDetails = JsonConvert.DeserializeObject <UploadDetailsReq>(req.Body); string extension = GetExtensionForContentType(reqDetails.contentType); using (var storageService = _storageService == null ? new DynamoDbStorageService() : _storageService) { var fileName = $"{reqDetails.fileHash}.{extension}"; var details = new UploadDetailsRes() { challenge = Guid.NewGuid().To32CharactesString(), secret = Guid.NewGuid().To32CharactesString(), uploadUrl = $"https://{baseUrl}/{stage}/upload/{fileName}", previewUrl = $"{soarS3Base}/{soarPreviewsBucketName}/{fileName}", downloadUrl = $"https://{baseUrl}/{stage}/download/{fileName}" }; var success = await storageService.PutSecret(details.secret, details.challenge, reqDetails.address, reqDetails.fileHash); if (!success) { throw new SoarException("Error during storing verification secret in db"); } var res = new APIGatewayProxyResponse() { Headers = APIGatewayHelpers.GetResponseHeaders(), Body = JsonConvert.SerializeObject(details), StatusCode = 200 }; return(res); } }