@@ -34,6 +34,22 @@ func (e *Exporter) Collect(ch chan<- prometheus.Metric) {
3434
3535 data = append (data , repoMetrics ... )
3636
37+ userMetrics , err := e .getUserMetrics (ctx )
38+ if err != nil {
39+ log .Errorf ("getting user metrics: %v" , err )
40+ return
41+ }
42+
43+ data = append (data , userMetrics ... )
44+
45+ orgMetrics , err := e .getOrgMetrics (ctx )
46+ if err != nil {
47+ log .Errorf ("getting organisation metrics: %v" , err )
48+ return
49+ }
50+
51+ data = append (data , orgMetrics ... )
52+
3753 r , err := e .getRateLimits (ctx )
3854 if err != nil {
3955 log .Errorf ("getting rate limit metrics: %v" , err )
@@ -118,6 +134,54 @@ func (e *Exporter) getRepoMetrics(ctx context.Context) ([]*Datum, error) {
118134 return data , nil
119135}
120136
137+ // getUserMetrics fetches metrics for the configured users
138+ func (e * Exporter ) getUserMetrics (ctx context.Context ) ([]* Datum , error ) {
139+ var data []* Datum
140+ for _ , m := range e .Users {
141+ repos , _ , err := e .Client .Repositories .ListByUser (ctx , m , nil )
142+ if err != nil {
143+ log .Errorf ("Error fetching user data: %v" , err )
144+ continue
145+ }
146+
147+ for _ , repo := range repos {
148+ d , err := e .parseRepo (ctx , * repo )
149+ if err != nil {
150+ log .Errorf ("Error parsing user repository data: %v" , err )
151+ continue
152+ }
153+
154+ data = append (data , d )
155+ }
156+
157+ }
158+ return data , nil
159+ }
160+
161+ // getOrgMetrics fetches metrics for the configured organisations
162+ func (e * Exporter ) getOrgMetrics (ctx context.Context ) ([]* Datum , error ) {
163+ var data []* Datum
164+ for _ , m := range e .Organisations {
165+ repos , _ , err := e .Client .Repositories .ListByOrg (ctx , m , nil )
166+ if err != nil {
167+ log .Errorf ("Error fetching organisation data: %v" , err )
168+ continue
169+ }
170+
171+ for _ , repo := range repos {
172+ d , err := e .parseRepo (ctx , * repo )
173+ if err != nil {
174+ log .Errorf ("Error parsing organisation repository data: %v" , err )
175+ continue
176+ }
177+
178+ data = append (data , d )
179+ }
180+ }
181+
182+ return data , nil
183+ }
184+
121185func (e * Exporter ) parseRepo (ctx context.Context , repo github.Repository ) (* Datum , error ) {
122186 repoOwner := repo .GetOwner ().GetLogin ()
123187 repoName := repo .GetName ()
0 commit comments