public async Task RefreshUpdateInfo(UpdateCheckFrequency frequency) { if (!CheckUpdateNeeded(frequency)) { return; } LastCheckError = null; using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Add("Cache-Control", "no-cache"); client.DefaultRequestHeaders.UserAgent.TryParseAdd(UserAgent); UriBuilder uriBuilder = new UriBuilder(settings.UpdateSource + versionFile); try { string versions = await client.GetStringAsync(uriBuilder.Uri).ConfigureAwait(false); File.WriteAllText(VersionFile, versions); channels = ResolveUpdateChannels(); } catch (HttpRequestException httpException) { Trace.WriteLine(httpException); LastCheckError = httpException; } } }
public static bool CheckUpdateNeeded(UpdateCheckFrequency target) { //we just check the update file's timestamp against the target switch (target) { case UpdateCheckFrequency.Never: return(false); case UpdateCheckFrequency.Daily: return(File.Exists(VersionFile) && File.GetLastWriteTime(VersionFile).AddDays(1) < DateTime.Now); case UpdateCheckFrequency.Weekly: return(File.Exists(VersionFile) && File.GetLastWriteTime(VersionFile).AddDays(7) < DateTime.Now); case UpdateCheckFrequency.Biweekly: return(File.Exists(VersionFile) && File.GetLastWriteTime(VersionFile).AddDays(14) < DateTime.Now); case UpdateCheckFrequency.Monthly: return(File.Exists(VersionFile) && File.GetLastWriteTime(VersionFile).AddMonths(1) < DateTime.Now); default: return(true); //Always } }
public async Task <IEnumerable <NuGetVersion> > RefreshUpdateInfo(UpdateCheckFrequency frequency) { if (!CheckUpdateNeeded(frequency)) { return(CachedUpdateVersions()); } await updateVersions.WaitAsync().ConfigureAwait(false); LastCheckError = null; ILogger logger = NullLogger.Instance; CancellationToken cancellationToken = CancellationToken.None; using (SourceCacheContext cache = new SourceCacheContext { DirectDownload = true, NoCache = true }) { try { SourceRepository repository = Repository.Factory.GetCoreV3(settings.UpdateSource); FindPackageByIdResource resource = await repository.GetResourceAsync <FindPackageByIdResource>().ConfigureAwait(false); IEnumerable <NuGetVersion> result = await resource.GetAllVersionsAsync(VersionInfo.PackageId, cache, logger, cancellationToken).ConfigureAwait(false); string versions = result.ToJson(Formatting.Indented); File.WriteAllText(VersionFile, versions); return(result); } catch (NuGetProtocolException exception) { Trace.WriteLine(exception); LastCheckError = exception; } catch (IOException) { } finally { updateVersions.Release(); } } return(Enumerable.Empty <NuGetVersion>()); }
internal bool CheckWithUpdateFrequency(UpdateCheckFrequency frequency) { //TODO implement. store and check last update timestamp... return true; }
internal bool CheckWithUpdateFrequency(UpdateCheckFrequency frequency) { //TODO implement. store and check last update timestamp... return(true); }