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