EncodingConfigurationStore.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Globalization;
  4. using System.IO;
  5. using MediaBrowser.Common.Configuration;
  6. using MediaBrowser.Model.Configuration;
  7. namespace MediaBrowser.MediaEncoding.Configuration
  8. {
  9. public class EncodingConfigurationStore : ConfigurationStore, IValidatingConfiguration
  10. {
  11. public EncodingConfigurationStore()
  12. {
  13. ConfigurationType = typeof(EncodingOptions);
  14. Key = "encoding";
  15. }
  16. public void Validate(object oldConfig, object newConfig)
  17. {
  18. var oldEncodingOptions = (EncodingOptions)oldConfig;
  19. var newEncodingOptions = (EncodingOptions)newConfig;
  20. ArgumentNullException.ThrowIfNull(oldEncodingOptions, nameof(oldConfig));
  21. ArgumentNullException.ThrowIfNull(newEncodingOptions, nameof(newConfig));
  22. var newPath = newEncodingOptions.TranscodingTempPath;
  23. if (!string.IsNullOrWhiteSpace(newPath)
  24. && !string.Equals(oldEncodingOptions.TranscodingTempPath, newPath, StringComparison.Ordinal))
  25. {
  26. // Validate
  27. if (!Directory.Exists(newPath))
  28. {
  29. throw new DirectoryNotFoundException(
  30. string.Format(
  31. CultureInfo.InvariantCulture,
  32. "{0} does not exist.",
  33. newPath));
  34. }
  35. }
  36. if (!string.IsNullOrWhiteSpace(newEncodingOptions.EncoderAppPath)
  37. && !string.Equals(oldEncodingOptions.EncoderAppPath, newEncodingOptions.EncoderAppPath, StringComparison.Ordinal))
  38. {
  39. throw new InvalidOperationException("Unable to update encoder app path.");
  40. }
  41. }
  42. }
  43. }