public StorageEntity <TValue> Put(PackageKey key, TValue value) { var storageEntity = Save(key, value); _cache[key] = storageEntity; return(storageEntity); }
private StorageEntity <TValue> Load(PackageKey key) { var filePath = ComposeFilePath(key); var json = File.ReadAllText(filePath); var deserializeObject = JsonConvert.DeserializeObject <TValue>(json); var lastModified = File.GetLastWriteTime(filePath); return(new StorageEntity <TValue>(lastModified, deserializeObject)); }
public bool HasKey(PackageKey key) { if (_cache.ContainsKey(key)) { return(true); } if (File.Exists(ComposeFilePath(key))) { _cache[key] = Load(key); return(true); } return(false); }
private PackageDto RetrieveAndSaveInternal(PackageKey key) { Debug.WriteLine($"FindPackage {key}"); var package = _packageRepository.FindPackage(key.Id, new SemanticVersion(key.Version)); if (package == null) { return(null); } var packageDto = new PackageDto(package); _storage.Put(key, packageDto); return(packageDto); }
private IEnumerable <PackageDto> GetPackageDto(PackageKey key) { if (string.IsNullOrEmpty(key.Version)) { return(_nugetLibraryProxy.GetById(key.Id)); } var package = _nugetLibraryProxy.GetByKey(key); if (package == null) { return(new PackageDto[0]); } return(new[] { package }); }
public PackageDto GetByKey(PackageKey key) { if (!_storage.HasKey(key)) { return(RetrieveAndSaveInternal(key)); } var storageEntity = _storage.GetByKey(key); if (IsOutdated(storageEntity)) { return(RetrieveAndSaveInternal(key)); } return(storageEntity.Value); }
private StorageEntity <TValue> Save(PackageKey key, TValue value) { var filePath = ComposeFilePath(key); var directoryPath = ComposeDirectoryPath(key); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(directoryPath); } var json = JsonConvert.SerializeObject(value); File.WriteAllText(filePath, json); var lastModifiedTime = File.GetLastWriteTime(filePath); UpdateLastWriteDateTimeMarkerFile(directoryPath); return(new StorageEntity <TValue>(lastModifiedTime, value)); }
private string ComposeDirectoryPath(PackageKey key) { return(ComposeDirectoryPath(key.Id)); }
private string ComposeFilePath(PackageKey key) { return(Path.Combine(_rootFolder, key.FullPath)); }
public StorageEntity <TValue> GetByKey(PackageKey key) { return(HasKey(key) ? _cache[key] : default(StorageEntity <TValue>)); }
protected bool Equals(PackageKey other) { return(string.Equals(FullPath, other.FullPath)); }