public async Task <IActionResult> InitiateDownload([FromBody] DownloadRequest downloadRequest) { if (!downloadRequest.IsValid()) { return(Json(ResponseModel <object> .CreateFailure("The request is invalid and does not meet the API-Requirements"))); } var userId = "Anonymous"; var traceId = Guid.NewGuid().ToString(); var downloadLink = downloadRequest.DownloadLink.Trim(); var downloadJobState = await _vidloadCache.GetJobStatus(downloadLink); if (downloadJobState.IsSuccess && downloadJobState.Value.HasValue) { return(Json(ResponseModel <object> .CreateSuccess(null))); } var existingMetaData = await _vidloadCache.GetMetadata(downloadLink); if (existingMetaData.IsSuccess && existingMetaData.Value.HasNoValue) { await _jobEnqueuer.Enqueue(new MediaMetadataJob { DownloadLink = downloadLink, TraceId = traceId, UserId = userId }); } var existingFileLocation = await _vidloadCache.GetMediaLocation(downloadLink); if (existingFileLocation.IsSuccess && existingFileLocation.Value.HasNoValue) { var targetFormat = (OutputFormat)Enum.Parse(typeof(OutputFormat), downloadRequest.OutputFormat, true); await _jobEnqueuer.Enqueue(new MediaDownloadJob { DownloadLink = downloadLink, TraceId = traceId, UserId = userId, TargetFormat = targetFormat }); } await _vidloadCache.SetJobStatus(traceId, JobStatus.Enqueued); return(Json(ResponseModel <object> .CreateSuccess(null))); }