| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- using System;
 
- using System.IO;
 
- using System.Text;
 
- using MediaBrowser.Common.Configuration;
 
- using MediaBrowser.Model.IO;
 
- using MediaBrowser.Model.Logging;
 
- namespace Emby.Server.Implementations.Devices
 
- {
 
-     public class DeviceId
 
-     {
 
-         private readonly IApplicationPaths _appPaths;
 
- 		private readonly ILogger _logger;
 
- 		private readonly IFileSystem _fileSystem;
 
-         private readonly object _syncLock = new object();
 
-         private string CachePath
 
-         {
 
-             get { return Path.Combine(_appPaths.DataPath, "device.txt"); }
 
-         }
 
-         private string GetCachedId()
 
-         {
 
-             try
 
-             {
 
-                 lock (_syncLock)
 
-                 {
 
- 					var value = File.ReadAllText(CachePath, Encoding.UTF8);
 
-                     Guid guid;
 
-                     if (Guid.TryParse(value, out guid))
 
-                     {
 
-                         return value;
 
-                     }
 
-                     _logger.Error("Invalid value found in device id file");
 
-                 }
 
-             }
 
-             catch (DirectoryNotFoundException)
 
-             {
 
-             }
 
-             catch (FileNotFoundException)
 
-             {
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _logger.ErrorException("Error reading file", ex);
 
-             }
 
-             return null;
 
-         }
 
-         private void SaveId(string id)
 
-         {
 
-             try
 
-             {
 
-                 var path = CachePath;
 
- 				_fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path));
 
-                 lock (_syncLock)
 
-                 {
 
-                     _fileSystem.WriteAllText(path, id, Encoding.UTF8);
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _logger.ErrorException("Error writing to file", ex);
 
-             }
 
-         }
 
-         private string GetNewId()
 
-         {
 
-             return Guid.NewGuid().ToString("N");
 
-         }
 
-         private string GetDeviceId()
 
-         {
 
-             var id = GetCachedId();
 
-             if (string.IsNullOrWhiteSpace(id))
 
-             {
 
-                 id = GetNewId();
 
-                 SaveId(id);
 
-             }
 
-             return id;
 
-         }
 
-         private string _id;
 
-         public DeviceId(IApplicationPaths appPaths, ILogger logger, IFileSystem fileSystem)
 
-         {
 
- 			if (fileSystem == null) {
 
- 				throw new ArgumentNullException ("fileSystem");
 
- 			}
 
-             _appPaths = appPaths;
 
-             _logger = logger;
 
- 			_fileSystem = fileSystem;
 
-         }
 
-         public string Value
 
-         {
 
-             get { return _id ?? (_id = GetDeviceId()); }
 
-         }
 
-     }
 
- }
 
 
  |