OlbrcConfiguration.cs 1.4 KB

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