public async Task <Validation> SubmitAsync(FileInfo fileInfo, MediaTypeHeaderValue contentType = default, QualityLevelName quality = default, DeduplicationMode deduplication = default, WaitingStrategy waitingStrategy = default, CancellationToken cancellationToken = default) { if (fileInfo == null) { throw new ArgumentNullException(nameof(fileInfo)); } using var request = new FileValidationRequest(fileInfo, contentType, quality, deduplication); return(await SubmitAsync(request, waitingStrategy, cancellationToken) .ConfigureAwait(false)); }
public virtual SubmitResult ValidateFile(FileValidationRequest req) { var res = new SubmitResult(); var cat = unit.AttachmentCategoryRepository.FindSingle(req.AttachmentType); if (cat == null) { return(new SubmitResult(1, "MSG_unknown_category")); } if (!cat.ValidateFile(req, out ValidationResult val)) { return(new SubmitResult(1, val.ErrorMessage)); } return(res); }
public virtual SubmitResult ValidateFile([FromBody] FileValidationRequest req) => service.ValidateFile(req);
public async Task <Validation> SubmitAsync(FileValidationRequest request, WaitingStrategy waitingStrategy = default, CancellationToken cancellationToken = default) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var restClient = _restClientFactory.Build(); // Serialize the validation request (settings only) to JSON var settingsContent = restClient .Serialize(new { quality = request.Quality?.NameOrGuid, deduplication = request.Deduplication?.NameOrGuid, priority = request.Priority?.Value, name = request.Name, // Strips the milliseconds portion from the specified retention period, if any retention = request.Retention == null ? null : new TimeSpan(request.Retention.Value.Days, request.Retention.Value.Hours, request.Retention.Value.Minutes, request.Retention.Value.Seconds) .ToString(), callback = request.CompletionCallback == null ? null : new { url = request.CompletionCallback.ToString() }, // File-specific startingRow = request.StartingRow, endingRow = request.EndingRow, column = request.Column, sheet = request.Sheet, lineEnding = request.LineEnding, delimiter = request.Delimiter, }); // Send the request to the Verifalia servers using (var postedFileContent = new StreamContent(request.File)) using (var postedSettingsContent = new StringContent(settingsContent, Encoding.UTF8, WellKnownMimeContentTypes.ApplicationJson)) { postedFileContent.Headers.ContentType = request.ContentType; postedSettingsContent.Headers.ContentType = new MediaTypeHeaderValue(WellKnownMimeContentTypes.ApplicationJson); return(await SubmitAsync(restClient, contentFactory : _ => { var postedContent = new MultipartFormDataContent(); postedContent.Add(postedFileContent, "inputFile", // HACK: Must send a filename, as the backend expects one // see https://github.com/dotnet/aspnetcore/blob/425c196cba530b161b120a57af8f1dd513b96f67/src/Http/Headers/src/ContentDispositionHeaderValueIdentityExtensions.cs#L27 "dummy"); postedContent.Add(postedSettingsContent, "settings"); return Task.FromResult <HttpContent>(postedContent); }, waitingStrategy, cancellationToken) .ConfigureAwait(false)); } }