@@ -9,7 +9,7 @@ namespace GithubStarSearch;
99/// <summary>
1010/// Background worker that periodically updates repositories.
1111/// </summary>
12- public class Indexer ( ILogger < Indexer > logger , IServiceProvider serviceProvider ) : BackgroundService
12+ public class RepositoryUpdater ( ILogger < RepositoryUpdater > logger , IServiceProvider serviceProvider ) : BackgroundService
1313{
1414 private const int RequestLimit = 200 ;
1515 private readonly PeriodicTimer _timer = new ( TimeSpan . FromMinutes ( 5 ) ) ;
@@ -66,7 +66,7 @@ private async Task<ResourceResults<IEnumerable<Repository>>> DoWork(int offset)
6666
6767 private async Task UpdateRepository ( Repository repository , GitHubClient github )
6868 {
69- var details = await github . Repository . Get ( repository . Owner , repository . Slug ) ;
69+ var details = await GetDetails ( repository , github ) ;
7070 if ( details is null )
7171 {
7272 logger . LogWarning ( "Repository {Owner}/{Slug} not found" , repository . Owner , repository . Slug ) ;
@@ -80,6 +80,25 @@ private async Task UpdateRepository(Repository repository, GitHubClient github)
8080 repository . Readme = readme ;
8181 }
8282
83+ private async Task < Octokit . Repository ? > GetDetails ( Repository repository , GitHubClient github )
84+ {
85+ try
86+ {
87+ return await github . Repository . Get ( repository . Owner , repository . Slug ) ;
88+ }
89+ catch ( ForbiddenException e )
90+ {
91+ logger . LogWarning ( e , "Forbidden while fetching details for {Owner}/{Slug}" , repository . Owner ,
92+ repository . Slug ) ;
93+ return null ;
94+ }
95+ catch ( NotFoundException e )
96+ {
97+ logger . LogWarning ( e , "Repository {Owner}/{Slug} not found" , repository . Owner , repository . Slug ) ;
98+ return null ;
99+ }
100+ }
101+
83102 private GitHubClient CreateClient ( )
84103 {
85104 using var scope = serviceProvider . CreateScope ( ) ;
0 commit comments