public async Task <IActionResult> Get([FromBody][Required] TranslationParameters parameters, [FromHeader][Required] string accept) { TranslationResponse response = await Task.FromResult <TranslationResponse>(this._translationService.Tanslate(parameters)); if (response.AreErrors) { return(BadRequest(error: response.Exceptions.Select(e => e.Message).ToArray())); } return(accept switch { "text/plain" => File(GenerateStreamFromString(response.Result), "text/plain", "result.txt"), "application/json" => Ok(GenerateJsonFromString(response.Result)), _ => Ok(response.Result) });
public TranslationResponse Tanslate(TranslationParameters parameters) { this._dataModelAggregator.EnvironmentMapper.Mapping = parameters.DataMappers; this._dataModelAggregator.DefaultNamespace = parameters.DefaultNamespace; this._dataModelAggregator.DataModelsCollection.Clear(); foreach (var dataSource in parameters.DataSources) { switch (dataSource.Type.ToLower()) { case "json": this._dataModelAggregator.AddJsonModel(dataSource.Localization); break; case "sdmx": this._dataModelAggregator.AddSdmxModel(dataSource.Localization, dataSource.Namespace); break; case "tsql": this._dataModelAggregator.AddSqlServerModel(dataSource.Localization); break; default: return(new TranslationResponse(new ArgumentException("Unexpected model type."))); } } ITransformationSchema schema = this._treeGenerator.BuildTransformationSchema(parameters.Experession); this._schemaModifiersApplier.Process(schema); bool areErrors = this._errorCollectorProvider.ErrorCollectors.Sum(counter => counter.Errors.Count) > 0; if (areErrors) { return(new TranslationResponse(this._errorCollectorProvider.ErrorCollectors.SelectMany(ec => ec.Errors).ToList())); } ITargetRenderer target = this._targetRenderers.FirstOrDefault(tr => tr.Name == parameters.Target); if (target == null) { return(new TranslationResponse(new ArgumentException("Unexpected target type."))); } return(new TranslationResponse(target.Render(schema))); }
public void TranslationService_Target_NotExist() { TranslationParameters parameters = new TranslationParameters() { DataMappers = new Dictionary <string, string>(), DefaultNamespace = string.Empty, DataSources = new List <DataSource>() { }, Experession = string.Empty, Target = "test" }; TranslationResponse response = _translationService.Tanslate(parameters); Assert.True(response.AreErrors); Assert.Equal("Unexpected target type.", response.Exceptions.First().Message); }