ProjectConfiguration.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System.Collections.Generic;
  2. using System.Globalization;
  3. using System.Linq;
  4. using Newtonsoft.Json;
  5. using Unity.Services.Core.Configuration.Internal;
  6. namespace Unity.Services.Core.Configuration
  7. {
  8. class ProjectConfiguration : IProjectConfiguration
  9. {
  10. string m_JsonCache;
  11. readonly IReadOnlyDictionary<string, ConfigurationEntry> m_ConfigValues;
  12. public ProjectConfiguration(IReadOnlyDictionary<string, ConfigurationEntry> configValues)
  13. {
  14. m_ConfigValues = configValues;
  15. }
  16. public bool GetBool(string key, bool defaultValue = default)
  17. {
  18. var stringConfig = GetString(key);
  19. if (bool.TryParse(stringConfig, out var parsedValue))
  20. {
  21. return parsedValue;
  22. }
  23. return defaultValue;
  24. }
  25. public int GetInt(string key, int defaultValue = default)
  26. {
  27. var stringConfig = GetString(key);
  28. if (int.TryParse(stringConfig, out var parsedValue))
  29. {
  30. return parsedValue;
  31. }
  32. return defaultValue;
  33. }
  34. public float GetFloat(string key, float defaultValue = default)
  35. {
  36. var stringConfig = GetString(key);
  37. if (float.TryParse(stringConfig, NumberStyles.Float, CultureInfo.InvariantCulture, out var parsedValue))
  38. {
  39. return parsedValue;
  40. }
  41. return defaultValue;
  42. }
  43. public string GetString(string key, string defaultValue = default)
  44. {
  45. if (m_ConfigValues.TryGetValue(key, out var configValue))
  46. {
  47. return configValue.Value;
  48. }
  49. return defaultValue;
  50. }
  51. public string ToJson()
  52. {
  53. if (m_JsonCache == null)
  54. {
  55. var dict = m_ConfigValues.ToDictionary(pair => pair.Key, pair => pair.Value.Value);
  56. m_JsonCache = JsonConvert.SerializeObject(dict);
  57. }
  58. return m_JsonCache;
  59. }
  60. }
  61. }