You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.6 KiB

  1. using ApiGw_Base.Enums;
  2. using Microsoft.AspNetCore.Mvc;
  3. using System;
  4. using System.IO;
  5. using System.Text;
  6. namespace ApiGw_Base.Controllers
  7. {
  8. [Route("[controller]")]
  9. [ApiController]
  10. public class ConfigurationController : ControllerBase
  11. {
  12. [HttpGet("mobile/marketing")]
  13. public IActionResult MobileMarketing() => ReadConfigurationFile(ConfigurationType.Mobile, ConfigurationBffType.Marketing);
  14. [HttpGet("mobile/shopping")]
  15. public IActionResult MobileShopping() => ReadConfigurationFile(ConfigurationType.Mobile, ConfigurationBffType.Shopping);
  16. [HttpGet("web/marketing")]
  17. public IActionResult WebMarketing() => ReadConfigurationFile(ConfigurationType.Web, ConfigurationBffType.Marketing);
  18. [HttpGet("web/shopping")]
  19. public IActionResult WebShopping() => ReadConfigurationFile(ConfigurationType.Web, ConfigurationBffType.Shopping);
  20. private IActionResult ReadConfigurationFile(ConfigurationType configurationType, ConfigurationBffType configurationBffType)
  21. {
  22. var path = $"{AppDomain.CurrentDomain.BaseDirectory}/Configurations/configuration.{configurationType}.Bff.{configurationBffType}.json";
  23. using (var streamReader = new StreamReader(path, Encoding.UTF8))
  24. {
  25. var jsonString = streamReader.ReadToEnd();
  26. if (string.IsNullOrWhiteSpace(jsonString))
  27. {
  28. return BadRequest($"Configuration file 'configuration.{configurationType}.Bff.{configurationBffType}.json' not found");
  29. }
  30. return Ok(jsonString);
  31. }
  32. }
  33. }
  34. }