Exemplo n.º 1
0
        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.");
            }
        }
Exemplo n.º 2
0
        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);
            }
        }