コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
        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
            }
        }
コード例 #3
0
        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>());
        }
コード例 #4
0
 internal bool CheckWithUpdateFrequency(UpdateCheckFrequency frequency)
 {
     //TODO implement. store and check last update timestamp...
     return true;
 }
コード例 #5
0
 internal bool CheckWithUpdateFrequency(UpdateCheckFrequency frequency)
 {
     //TODO implement. store and check last update timestamp...
     return(true);
 }