@@ -305,37 +305,40 @@ public class DownloadsModel : PageModel, IHaveServiceLocator
305305 /// <returns>A Task representing the asynchronous operation.</returns>
306306 public async Task OnGetAsync ( )
307307 {
308- await this . GetDnnReleasesAsync ( ) ;
308+ var githubClient = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
309309
310- await this . GetSampleApplicationReleasesAsync ( ) ;
310+ await this . GetDnnReleasesAsync ( githubClient ) ;
311311
312- await this . GetSampleAppReleasesAsync ( ) ;
312+ var sampleAppReleases = await githubClient . Repository . Release . GetAll ( "YAFNET" , "YAF.SampleWebApplication" ) ;
313313
314- await this . GetMySqlReleasesAsync ( ) ;
314+ await this . GetSampleApplicationReleasesAsync ( sampleAppReleases ) ;
315315
316- await this . GetMsSqlReleasesAsync ( ) ;
316+ await this . GetSampleAppReleasesAsync ( sampleAppReleases ) ;
317317
318- await this . GetSqliteReleasesAsync ( ) ;
318+ await this . GetMySqlReleasesAsync ( githubClient ) ;
319319
320- await this . GetPostgreSqlReleasesAsync ( ) ;
320+ await this . GetMsSqlReleasesAsync ( githubClient ) ;
321321
322- await this . GetNetCoreReleasesAsync ( ) ;
322+ await this . GetSqliteReleasesAsync ( githubClient ) ;
323+
324+ await this . GetPostgreSqlReleasesAsync ( githubClient ) ;
325+
326+ await this . GetNetCoreReleasesAsync ( githubClient ) ;
323327 }
324328
325329 /// <summary>
326330 /// Gets the net core releases.
327331 /// </summary>
328- private async Task GetNetCoreReleasesAsync ( )
332+ /// <param name="githubClient"></param>
333+ private async Task GetNetCoreReleasesAsync ( GitHubClient githubClient )
329334 {
330- var github = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
331-
332335 Release release ;
333336
334337 if ( this . Get < IDataCache > ( ) . Get ( "ReleaseNetCore" ) == null )
335338 {
336- var releases = await github . Repository . Release . GetAll ( "YAFNET" , "YAFNET" ) ;
339+ var releases = await githubClient . Repository . Release . GetAll ( "YAFNET" , "YAFNET" ) ;
337340
338- release = releases . First ( r => r . TagName . StartsWith ( "v4" ) ) ;
341+ release = releases . First ( r => r . TagName . StartsWith ( "v4" ) && ! r . Prerelease ) ;
339342
340343 this . Get < IDataCache > ( ) . Set ( "ReleaseNetCore" , release ) ;
341344 }
@@ -363,23 +366,21 @@ private async Task GetNetCoreReleasesAsync()
363366 /// <summary>
364367 /// Gets my SQL releases.
365368 /// </summary>
366- private async Task GetMySqlReleasesAsync ( )
369+ /// <param name="githubClient"></param>
370+ private async Task GetMySqlReleasesAsync ( GitHubClient githubClient )
367371 {
368- var github = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
369-
370372 Release release ;
371373
372374 if ( this . Get < IDataCache > ( ) . Get ( "Release" ) == null )
373375 {
374- release = await github . Repository . Release . GetLatest ( "YAFNET" , "YAFNET" ) ;
376+ release = await githubClient . Repository . Release . GetLatest ( "YAFNET" , "YAFNET" ) ;
375377 this . Get < IDataCache > ( ) . Set ( "Release" , release ) ;
376378 }
377379 else
378380 {
379381 release = this . Get < IDataCache > ( ) . Get ( "Release" ) . ToType < Release > ( ) ;
380382 }
381383
382-
383384 ReleaseMySqlInstall = release . Assets [ 1 ] . BrowserDownloadUrl ;
384385 ReleaseMySqlInstallDownloads = $ "{ release . Assets [ 1 ] . DownloadCount } downloads";
385386 ReleaseMySqlUpgrade = release . Assets [ 2 ] . BrowserDownloadUrl ;
@@ -392,23 +393,21 @@ private async Task GetMySqlReleasesAsync()
392393 /// <summary>
393394 /// Gets the ms SQL releases.
394395 /// </summary>
395- private async Task GetMsSqlReleasesAsync ( )
396+ /// <param name="githubClient"></param>
397+ private async Task GetMsSqlReleasesAsync ( GitHubClient githubClient )
396398 {
397- var github = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
398-
399399 Release release ;
400400
401401 if ( this . Get < IDataCache > ( ) . Get ( "Release" ) == null )
402402 {
403- release = await github . Repository . Release . GetLatest ( "YAFNET" , "YAFNET" ) ;
403+ release = await githubClient . Repository . Release . GetLatest ( "YAFNET" , "YAFNET" ) ;
404404 this . Get < IDataCache > ( ) . Set ( "Release" , release ) ;
405405 }
406406 else
407407 {
408408 release = this . Get < IDataCache > ( ) . Get ( "Release" ) . ToType < Release > ( ) ;
409409 }
410410
411-
412411 ReleaseMsSqlInstall = release . Assets [ 6 ] . BrowserDownloadUrl ;
413412 ReleaseMsSqlInstallDownloads = $ "{ release . Assets [ 6 ] . DownloadCount } downloads";
414413 ReleaseMsSqlUpgrade = release . Assets [ 7 ] . BrowserDownloadUrl ;
@@ -418,23 +417,21 @@ private async Task GetMsSqlReleasesAsync()
418417 /// <summary>
419418 /// Gets the sqlite releases.
420419 /// </summary>
421- private async Task GetSqliteReleasesAsync ( )
420+ /// <param name="githubClient"></param>
421+ private async Task GetSqliteReleasesAsync ( GitHubClient githubClient )
422422 {
423- var github = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
424-
425423 Release release ;
426424
427425 if ( this . Get < IDataCache > ( ) . Get ( "Release" ) == null )
428426 {
429- release = await github . Repository . Release . GetLatest ( "YAFNET" , "YAFNET" ) ;
427+ release = await githubClient . Repository . Release . GetLatest ( "YAFNET" , "YAFNET" ) ;
430428 this . Get < IDataCache > ( ) . Set ( "Release" , release ) ;
431429 }
432430 else
433431 {
434432 release = this . Get < IDataCache > ( ) . Get ( "Release" ) . ToType < Release > ( ) ;
435433 }
436434
437-
438435 ReleaseSqliteInstall = release . Assets [ 5 ] . BrowserDownloadUrl ;
439436 ReleaseSqliteInstallDownloads = $ "{ release . Assets [ 5 ] . DownloadCount } downloads";
440437 ReleaseSqliteUpgrade = release . Assets [ 0 ] . BrowserDownloadUrl ;
@@ -444,23 +441,21 @@ private async Task GetSqliteReleasesAsync()
444441 /// <summary>
445442 /// Gets the postgre SQL releases.
446443 /// </summary>
447- private async Task GetPostgreSqlReleasesAsync ( )
444+ /// <param name="githubClient"></param>
445+ private async Task GetPostgreSqlReleasesAsync ( GitHubClient githubClient )
448446 {
449- var github = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
450-
451447 Release release ;
452448
453449 if ( this . Get < IDataCache > ( ) . Get ( "Release" ) == null )
454450 {
455- release = await github . Repository . Release . GetLatest ( "YAFNET" , "YAFNET" ) ;
451+ release = await githubClient . Repository . Release . GetLatest ( "YAFNET" , "YAFNET" ) ;
456452 this . Get < IDataCache > ( ) . Set ( "Release" , release ) ;
457453 }
458454 else
459455 {
460456 release = this . Get < IDataCache > ( ) . Get ( "Release" ) . ToType < Release > ( ) ;
461457 }
462458
463-
464459 ReleasePostgreSqlInstall = release . Assets [ 3 ] . BrowserDownloadUrl ;
465460 ReleasePostgreSqlInstallDownloads = $ "{ release . Assets [ 3 ] . DownloadCount } downloads";
466461 ReleasePostgreSqlUpgrade = release . Assets [ 4 ] . BrowserDownloadUrl ;
@@ -470,15 +465,14 @@ private async Task GetPostgreSqlReleasesAsync()
470465 /// <summary>
471466 /// Gets the DNN releases.
472467 /// </summary>
473- private async Task GetDnnReleasesAsync ( )
468+ /// <param name="githubClient"></param>
469+ private async Task GetDnnReleasesAsync ( GitHubClient githubClient )
474470 {
475- var github = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
476-
477471 Release dnnRelease ;
478472
479473 if ( this . Get < IDataCache > ( ) . Get ( "DnnRelease" ) == null )
480474 {
481- dnnRelease = await github . Repository . Release . GetLatest ( "YAFNET" , "YAFNET-DNN" ) ;
475+ dnnRelease = await githubClient . Repository . Release . GetLatest ( "YAFNET" , "YAFNET-DNN" ) ;
482476 this . Get < IDataCache > ( ) . Set ( "DnnRelease" , dnnRelease ) ;
483477 }
484478 else
@@ -495,17 +489,15 @@ private async Task GetDnnReleasesAsync()
495489 /// <summary>
496490 /// Gets the Sample Application (v3) releases.
497491 /// </summary>
498- private async Task GetSampleApplicationReleasesAsync ( )
492+ ///
493+ /// <param name="sampleAppReleases">list of Releases.</param>
494+ private Task GetSampleApplicationReleasesAsync ( IReadOnlyList < Release > sampleAppReleases )
499495 {
500- var github = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
501-
502496 Release release ;
503497
504498 if ( this . Get < IDataCache > ( ) . Get ( "SampleApplicationRelease" ) == null )
505499 {
506- var releases = await github . Repository . Release . GetAll ( "YAFNET" , "YAFNET" ) ;
507-
508- release = releases . First ( r => r . TagName . StartsWith ( "v3" ) ) ;
500+ release = sampleAppReleases . First ( r => r . TagName . StartsWith ( "v3" ) && ! r . Prerelease ) ;
509501
510502 this . Get < IDataCache > ( ) . Set ( "SampleApplicationRelease" , release ) ;
511503 }
@@ -516,22 +508,20 @@ private async Task GetSampleApplicationReleasesAsync()
516508
517509 ReleaseSampleApplication = release . ZipballUrl ;
518510 ReleaseSampleApplicationTitle = release . Name ;
511+ return Task . CompletedTask ;
519512 }
520513
521514 /// <summary>
522515 /// Gets the Sample App (v4) releases.
523516 /// </summary>
524- private async Task GetSampleAppReleasesAsync ( )
517+ /// <param name="sampleAppReleases">list of Releases.</param>
518+ private Task GetSampleAppReleasesAsync ( IReadOnlyList < Release > sampleAppReleases )
525519 {
526- var github = new GitHubClient ( new ProductHeaderValue ( "YAF.NET" ) ) ;
527-
528520 Release release ;
529521
530522 if ( this . Get < IDataCache > ( ) . Get ( "SampleAppRelease" ) == null )
531523 {
532- var releases = await github . Repository . Release . GetAll ( "YAFNET" , "YAFNET" ) ;
533-
534- release = releases . First ( r => r . TagName . StartsWith ( "v4" ) ) ;
524+ release = sampleAppReleases . First ( r => r . TagName . StartsWith ( "v4" ) && ! r . Prerelease ) ;
535525
536526 this . Get < IDataCache > ( ) . Set ( "SampleAppRelease" , release ) ;
537527 }
@@ -542,5 +532,6 @@ private async Task GetSampleAppReleasesAsync()
542532
543533 ReleaseSampleApp = release . ZipballUrl ;
544534 ReleaseSampleAppTitle = release . Name ;
535+ return Task . CompletedTask ;
545536 }
546537}
0 commit comments