@@ -53,23 +53,36 @@ public async Task<GitHubUser> FetchUserData(string username)
5353 return user ;
5454 }
5555
56- public async Task < bool > UserHasStarred ( string username )
56+ public async Task < bool > UserHasStarred ( string username , string pageCursor )
5757 {
58- var request = new DefaultRequest ( )
58+ do
5959 {
60- Query = GithubOptions . UserStarredRepositories ,
61- OperationName = GithubOptions . OperationName ,
62- Variables = new { login = username }
63- } ;
64- var response = await _policy . ExecuteAndCaptureAsync ( ( ) => _client . PostAsJsonAsync ( "graphql" , request , GithubOptions . DefaultJson ) ) ;
60+ var request = new DefaultRequest ( )
61+ {
62+ Query = GithubOptions . UserStarredRepositories ,
63+ OperationName = GithubOptions . OperationName ,
64+ Variables = new { login = username , after = pageCursor }
65+ } ;
66+ var response = await _policy . ExecuteAndCaptureAsync ( ( ) => _client . PostAsJsonAsync ( "graphql" , request , GithubOptions . DefaultJson ) ) ;
6567
66- if ( response . Outcome != OutcomeType . Successful || ! response . Result . IsSuccessStatusCode ) return false ;
68+ if ( response . Outcome != OutcomeType . Successful || ! response . Result . IsSuccessStatusCode ) return false ;
6769
68- var userInfo =
69- await JsonSerializer . DeserializeAsync < DefaultResponse < UserData > > (
70- await response . Result . Content . ReadAsStreamAsync ( ) , GithubOptions . DefaultJson ) ;
70+ var userInfo = await JsonSerializer . DeserializeAsync < DefaultResponse < UserData > > ( await response . Result . Content . ReadAsStreamAsync ( ) , GithubOptions . DefaultJson ) ;
71+
72+ if ( userInfo . Data . User . StarredRepositories . Nodes . Any ( a => a . NameWithOwner . Equals ( "brunobritodev/awesome-github-portfolio" ) ) )
73+ return true ;
74+
75+ if ( userInfo . Data . User . StarredRepositories . PageInfo . HasNextPage )
76+ {
77+ pageCursor = userInfo . Data . User . StarredRepositories . PageInfo . EndCursor ;
78+ }
79+ else
80+ {
81+ pageCursor = null ;
82+ }
83+ } while ( pageCursor != null ) ;
7184
72- return userInfo . Data . User . StarredRepositories . Nodes . Any ( a => a . NameWithOwner . Equals ( "brunobritodev/awesome-github-portfolio" ) ) ;
85+ return false ;
7386 }
7487
7588 public async Task < string > FetchUserReadme ( string githubUserLogin )
@@ -96,26 +109,35 @@ public async Task<PortfolioViewModel> FetchCustomPortfolioFromFork(string userna
96109 return JsonSerializer . Deserialize < PortfolioViewModel > ( data , GithubOptions . DefaultJson ) ;
97110 }
98111
99- public async Task < string > ChooseModel ( string username )
112+ public async Task < string > ChooseModel ( string username , string pageCursor )
100113 {
101- var request = new DefaultRequest ( )
114+ do
102115 {
103- Query = GithubOptions . UserFollowers ,
104- OperationName = GithubOptions . OperationName ,
105- Variables = new { login = username }
106- } ;
107- var response = await _policy . ExecuteAndCaptureAsync ( ( ) => _client . PostAsJsonAsync ( "graphql" , request , GithubOptions . DefaultJson ) ) ;
116+ var request = new DefaultRequest ( )
117+ {
118+ Query = GithubOptions . UserFollowers ,
119+ OperationName = GithubOptions . OperationName ,
120+ Variables = new { login = username , after = pageCursor }
121+ } ;
122+ var response = await _policy . ExecuteAndCaptureAsync ( ( ) => _client . PostAsJsonAsync ( "graphql" , request , GithubOptions . DefaultJson ) ) ;
108123
109- if ( response . Outcome != OutcomeType . Successful || ! response . Result . IsSuccessStatusCode ) return "gpt-4o-mini" ;
124+ if ( response . Outcome != OutcomeType . Successful || ! response . Result . IsSuccessStatusCode ) return "gpt-4o-mini" ;
110125
111- var userInfo =
112- await JsonSerializer . DeserializeAsync < DefaultResponse < UserData > > (
113- await response . Result . Content . ReadAsStreamAsync ( ) , GithubOptions . DefaultJson ) ;
126+ var userInfo = await JsonSerializer . DeserializeAsync < DefaultResponse < UserData > > ( await response . Result . Content . ReadAsStreamAsync ( ) , GithubOptions . DefaultJson ) ;
114127
128+ var followingMe = userInfo ? . Data ? . User . Following . Nodes . Any ( a => a . Login . Equals ( "brunobritodev" ) ) ;
129+ if ( followingMe is not null && followingMe . Value ) return "gpt-4o" ;
115130
116- var followingMe = userInfo ? . Data ? . User . Following . Nodes . Any ( a => a . Login . Equals ( "brunobritodev" ) ) ;
117- if ( followingMe is not null && followingMe . Value )
118- return "gpt-4o" ;
131+ if ( userInfo ? . Data is not null & userInfo . Data . User . Following . PageInfo . HasNextPage )
132+ {
133+ pageCursor = userInfo ? . Data ? . User . Following . PageInfo . EndCursor ;
134+ }
135+ else
136+ {
137+ pageCursor = null ;
138+ }
139+
140+ } while ( pageCursor != null ) ;
119141
120142 return "gpt-4o-mini" ;
121143 }
0 commit comments