OlbrcConfiguration.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.IO.Abstractions;
  2. using System.Text.Json;
  3. namespace Quadarax.Application.QLiberace.Common.Configuration
  4. {
  5. public static class OlbrcConfiguration
  6. {
  7. public static IFileSystem FileSystem { get; set; }
  8. public static string ConfigurationFileName{ get; set; }
  9. static OlbrcConfiguration()
  10. {
  11. FileSystem = new FileSystem();
  12. ConfigurationFileName = "qlbrc.json";
  13. }
  14. public static Settings? Get()
  15. {
  16. if (!FileSystem.File.Exists(ConfigurationFileName))
  17. return null;
  18. return JsonSerializer.Deserialize<Settings>(FileSystem.File.ReadAllText(ConfigurationFileName));
  19. }
  20. public static ModuleConfiguration Get(string moduleName)
  21. {
  22. var result = Get();
  23. if (result == null)
  24. throw new InvalidOperationException(
  25. $"Cannot obtain configuration from file '{ConfigurationFileName}'.");
  26. var module = result.Modules.FirstOrDefault(x =>
  27. string.Equals(x.Code, moduleName, StringComparison.InvariantCultureIgnoreCase));
  28. if (module==null)
  29. throw new InvalidOperationException(
  30. $"Module '{moduleName}' not found in configuration file '{ConfigurationFileName}'.");
  31. return module;
  32. }
  33. }
  34. }