Esempio n. 1
0
        public virtual async Task <IActionResult> PostAsync([FromBody] Entities.EventInfo eventRequest)
        {
            try
            {
                if (eventRequest == null)
                {
                    return(BadRequest("No Event data"));
                }

                var eventInfo = new Entities.EventInfo
                {
                    Id      = string.IsNullOrEmpty(eventRequest.Id) ? Guid.NewGuid().ToString() : eventRequest.Id,
                    Source  = eventRequest.Source,
                    Name    = eventRequest.Name,
                    Time    = eventRequest.Time,
                    Payload = eventRequest.Payload
                };
                await eventsRepository.CreateAsync(eventInfo);
                await PublishEventAsync(eventRequest.Name, JsonConvert.SerializeObject(eventInfo));

                return(Created(this.BuildLink($"/events/{eventInfo.Id}"), eventInfo));
            }
            catch (Exception e)
            {
                return(this.InternalServerError(e.FlattenMessages()));
            }
        }
Esempio n. 2
0
        public virtual async Task <IActionResult> PostFileAsync(
            [FromForm] string source,
            [FromForm] string assetId,
            [FromForm] string filename,
            [FromForm] string format,
            [FromForm(Name = FileOperationFilter.FILE_PAYLOAD_PARM)] IFormFile fileData)
        {
            try
            {
                if (fileData == null)
                {
                    return(BadRequest("No file data"));
                }

                var id       = Guid.NewGuid().ToString();
                var fileInfo = new Entities.FileInfo
                {
                    Id          = id,
                    Source      = source,
                    AssetId     = assetId,
                    Filename    = filename,
                    Format      = format,
                    DownloadUri = this.BuildLink($"/files/{id}/payload")
                };

                await filesRepository.CreateAsync(fileInfo);

                using (var stream = fileData.OpenReadStream())
                {
                    await blobRepository.UploadAsync(new BlobInfo(id), stream);
                }

                return(Created(this.BuildLink($"/files/{id}"), fileInfo));
            }
            catch (Exception e)
            {
                return(this.InternalServerError(e.FlattenMessages()));
            }
        }