Skip to content

Commit f5733ed

Browse files
authored
Merge pull request #8 from gofr-dev/add-stargazers-cron
add stargazers metric push as a cron
2 parents c31adb4 + 0f3070e commit f5733ed

4 files changed

Lines changed: 310 additions & 612 deletions

File tree

githubmetrics/service.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package githubmetrics
2+
3+
import (
4+
"context"
5+
"gofr.dev/pkg/gofr"
6+
"gofr.dev/pkg/service"
7+
)
8+
9+
type GithubStats struct {
10+
StargazersCount int `json:"stargazers_count"`
11+
SubscribersCount int `json:"subscribers_count"`
12+
ForksCount int `json:"forks"`
13+
}
14+
15+
type Service struct {
16+
app *gofr.Gofr
17+
}
18+
19+
func New(app *gofr.Gofr) Service {
20+
return struct{ app *gofr.Gofr }{app: app}
21+
}
22+
23+
func (s *Service) Process() {
24+
svc := service.NewHTTPServiceWithOptions("https://api.github.com/", s.app.Logger,
25+
&service.Options{
26+
SurgeProtectorOption: &service.SurgeProtectorOption{
27+
Disable: true,
28+
},
29+
})
30+
31+
data := getGofrRepoStats(svc)
32+
s.app.Logger.Debugf("Got stargazer count: %d, subscribers: %d, Forks: %d",
33+
data.StargazersCount, data.SubscribersCount, data.ForksCount)
34+
35+
err := s.app.Metric.SetGauge("gofr_repo_stargazers", float64(data.StargazersCount))
36+
if err != nil {
37+
s.app.Logger.Error(err)
38+
}
39+
40+
err = s.app.Metric.SetGauge("gofr_repo_subscribers", float64(data.SubscribersCount))
41+
if err != nil {
42+
s.app.Logger.Error(err)
43+
}
44+
45+
err = s.app.Metric.SetGauge("gofr_repo_forks", float64(data.ForksCount))
46+
if err != nil {
47+
s.app.Logger.Error(err)
48+
}
49+
}
50+
51+
func getGofrRepoStats(svc service.HTTP) (data GithubStats) {
52+
res, err := svc.Get(context.Background(), "/repos/gofr-dev/gofr", nil)
53+
if err != nil {
54+
return
55+
}
56+
57+
err = svc.Bind(res.Body, &data)
58+
59+
if err != nil {
60+
return
61+
}
62+
63+
return data
64+
}

go.mod

Lines changed: 61 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,33 @@ module test-service
22

33
go 1.21.0
44

5-
require gofr.dev v0.0.0-20231024191048-16feb3c32c3d
5+
require gofr.dev v1.0.1
66

77
require (
8-
cloud.google.com/go v0.110.2 // indirect
9-
cloud.google.com/go/compute v1.19.3 // indirect
8+
cloud.google.com/go v0.110.8 // indirect
9+
cloud.google.com/go/compute v1.23.1 // indirect
1010
cloud.google.com/go/compute/metadata v0.2.3 // indirect
11-
cloud.google.com/go/iam v1.1.0 // indirect
12-
cloud.google.com/go/pubsub v1.32.0 // indirect
13-
cloud.google.com/go/trace v1.9.0 // indirect
11+
cloud.google.com/go/iam v1.1.3 // indirect
12+
cloud.google.com/go/pubsub v1.33.0 // indirect
13+
cloud.google.com/go/trace v1.10.2 // indirect
1414
github.com/Azure/azure-amqp-common-go/v3 v3.2.3 // indirect
1515
github.com/Azure/azure-event-hubs-go/v3 v3.3.20 // indirect
1616
github.com/Azure/azure-sdk-for-go v67.3.0+incompatible // indirect
1717
github.com/Azure/go-amqp v0.17.5 // indirect
1818
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
19-
github.com/Azure/go-autorest/autorest v0.11.28 // indirect
20-
github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect
19+
github.com/Azure/go-autorest/autorest v0.11.29 // indirect
20+
github.com/Azure/go-autorest/autorest/adal v0.9.22 // indirect
2121
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
2222
github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
2323
github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
2424
github.com/Azure/go-autorest/logger v0.2.1 // indirect
2525
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
2626
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect
27-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.10.2 // indirect
28-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.34.2 // indirect
27+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.21.0 // indirect
28+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.45.0 // indirect
2929
github.com/Shopify/sarama v1.38.0 // indirect
30-
github.com/XSAM/otelsql v0.10.0 // indirect
31-
github.com/aws/aws-sdk-go v1.44.178 // indirect
30+
github.com/XSAM/otelsql v0.26.0 // indirect
31+
github.com/aws/aws-sdk-go v1.47.13 // indirect
3232
github.com/beorn7/perks v1.0.1 // indirect
3333
github.com/cespare/xxhash/v2 v2.2.0 // indirect
3434
github.com/davecgh/go-spew v1.1.1 // indirect
@@ -37,41 +37,40 @@ require (
3737
github.com/eapache/go-resiliency v1.3.0 // indirect
3838
github.com/eapache/go-xerial-snappy v0.0.0-20230111030713-bf00bc1b83b6 // indirect
3939
github.com/eapache/queue v1.1.0 // indirect
40-
github.com/elastic/go-elasticsearch/v7 v7.17.7 // indirect
41-
github.com/felixge/httpsnoop v1.0.3 // indirect
42-
github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect
43-
github.com/go-ldap/ldap/v3 v3.4.4 // indirect
44-
github.com/go-logr/logr v1.2.4 // indirect
40+
github.com/elastic/go-elasticsearch/v7 v7.17.10 // indirect
41+
github.com/felixge/httpsnoop v1.0.4 // indirect
42+
github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect
43+
github.com/go-ldap/ldap/v3 v3.4.6 // indirect
44+
github.com/go-logr/logr v1.3.0 // indirect
4545
github.com/go-logr/stdr v1.2.2 // indirect
4646
github.com/go-redis/redis/extra/rediscmd v0.2.0 // indirect
4747
github.com/go-redis/redis/extra/redisotel v0.3.0 // indirect
4848
github.com/go-redis/redis/v8 v8.11.5 // indirect
49-
github.com/go-sql-driver/mysql v1.7.0 // indirect
50-
github.com/gocql/gocql v0.0.0-20211222173705-d73e6b1002a7 // indirect
51-
github.com/golang-jwt/jwt/v4 v4.4.3 // indirect
49+
github.com/go-sql-driver/mysql v1.7.1 // indirect
50+
github.com/gocql/gocql v1.6.0 // indirect
51+
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
5252
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
5353
github.com/golang-sql/sqlexp v0.1.0 // indirect
5454
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
5555
github.com/golang/mock v1.6.0 // indirect
5656
github.com/golang/protobuf v1.5.3 // indirect
5757
github.com/golang/snappy v0.0.4 // indirect
58-
github.com/google/go-cmp v0.5.9 // indirect
59-
github.com/google/s2a-go v0.1.4 // indirect
60-
github.com/google/uuid v1.3.0 // indirect
61-
github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
62-
github.com/googleapis/gax-go/v2 v2.11.0 // indirect
63-
github.com/gookit/color v1.5.2 // indirect
64-
github.com/gorilla/mux v1.8.0 // indirect
58+
github.com/google/s2a-go v0.1.7 // indirect
59+
github.com/google/uuid v1.4.0 // indirect
60+
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
61+
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
62+
github.com/gookit/color v1.5.4 // indirect
63+
github.com/gorilla/mux v1.8.1 // indirect
6564
github.com/gorilla/websocket v1.5.0 // indirect
66-
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
65+
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
6766
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect
68-
github.com/hamba/avro/v2 v2.14.1 // indirect
67+
github.com/hamba/avro/v2 v2.17.2 // indirect
6968
github.com/hashicorp/errwrap v1.1.0 // indirect
7069
github.com/hashicorp/go-multierror v1.1.1 // indirect
7170
github.com/hashicorp/go-uuid v1.0.3 // indirect
7271
github.com/jackc/pgpassfile v1.0.0 // indirect
7372
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
74-
github.com/jackc/pgx/v5 v5.2.0 // indirect
73+
github.com/jackc/pgx/v5 v5.3.0 // indirect
7574
github.com/jcmturner/aescts/v2 v2.0.0 // indirect
7675
github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect
7776
github.com/jcmturner/gofork v1.7.6 // indirect
@@ -81,11 +80,11 @@ require (
8180
github.com/jinzhu/now v1.1.5 // indirect
8281
github.com/jmespath/go-jmespath v0.4.0 // indirect
8382
github.com/jmoiron/sqlx v1.3.5 // indirect
84-
github.com/joho/godotenv v1.4.0 // indirect
83+
github.com/joho/godotenv v1.5.1 // indirect
8584
github.com/jpillora/backoff v1.0.0 // indirect
8685
github.com/json-iterator/go v1.1.12 // indirect
87-
github.com/klauspost/compress v1.15.14 // indirect
88-
github.com/lib/pq v1.10.7 // indirect
86+
github.com/klauspost/compress v1.16.6 // indirect
87+
github.com/lib/pq v1.10.9 // indirect
8988
github.com/mattn/go-sqlite3 v1.14.16 // indirect
9089
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
9190
github.com/microsoft/go-mssqldb v0.19.0 // indirect
@@ -94,13 +93,13 @@ require (
9493
github.com/modern-go/reflect2 v1.0.2 // indirect
9594
github.com/montanaflynn/stats v0.7.0 // indirect
9695
github.com/newrelic/go-agent v3.20.2+incompatible // indirect
97-
github.com/openzipkin/zipkin-go v0.4.1 // indirect
96+
github.com/openzipkin/zipkin-go v0.4.2 // indirect
9897
github.com/pierrec/lz4/v4 v4.1.17 // indirect
9998
github.com/pkg/errors v0.9.1 // indirect
100-
github.com/prometheus/client_golang v1.13.0 // indirect
101-
github.com/prometheus/client_model v0.3.0 // indirect
102-
github.com/prometheus/common v0.37.0 // indirect
103-
github.com/prometheus/procfs v0.9.0 // indirect
99+
github.com/prometheus/client_golang v1.17.0 // indirect
100+
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
101+
github.com/prometheus/common v0.44.0 // indirect
102+
github.com/prometheus/procfs v0.11.1 // indirect
104103
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
105104
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
106105
github.com/xdg-go/scram v1.1.2 // indirect
@@ -109,38 +108,37 @@ require (
109108
github.com/xdg/stringprep v1.0.3 // indirect
110109
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
111110
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
112-
github.com/yugabyte/gocql v0.0.0-20220204171058-0bd8e6cb12d0 // indirect
111+
github.com/yugabyte/gocql v0.0.0-20230831121436-1e2272bb6bb6 // indirect
113112
github.com/zopsmart/gorm-opentelemetry v1.0.1-0.20211208062846-bf802ea1c033 // indirect
114-
go.mongodb.org/mongo-driver v1.11.7 // indirect
113+
go.mongodb.org/mongo-driver v1.11.9 // indirect
115114
go.opencensus.io v0.24.0 // indirect
116115
go.opentelemetry.io/contrib v1.12.0 // indirect
117116
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0 // indirect
118-
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.44.0 // indirect
119-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 // indirect
120-
go.opentelemetry.io/otel v1.18.0 // indirect
121-
go.opentelemetry.io/otel/exporters/zipkin v1.16.0 // indirect
122-
go.opentelemetry.io/otel/metric v1.18.0 // indirect
123-
go.opentelemetry.io/otel/sdk v1.16.0 // indirect
124-
go.opentelemetry.io/otel/trace v1.18.0 // indirect
125-
go.uber.org/atomic v1.10.0 // indirect
126-
go.uber.org/multierr v1.9.0 // indirect
127-
golang.org/x/crypto v0.14.0 // indirect
128-
golang.org/x/net v0.17.0 // indirect
129-
golang.org/x/oauth2 v0.8.0 // indirect
130-
golang.org/x/sync v0.2.0 // indirect
131-
golang.org/x/sys v0.13.0 // indirect
132-
golang.org/x/term v0.13.0 // indirect
133-
golang.org/x/text v0.13.0 // indirect
134-
google.golang.org/api v0.126.0 // indirect
117+
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 // indirect
118+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
119+
go.opentelemetry.io/otel v1.21.0 // indirect
120+
go.opentelemetry.io/otel/exporters/zipkin v1.21.0 // indirect
121+
go.opentelemetry.io/otel/metric v1.21.0 // indirect
122+
go.opentelemetry.io/otel/sdk v1.21.0 // indirect
123+
go.opentelemetry.io/otel/trace v1.21.0 // indirect
124+
golang.org/x/crypto v0.15.0 // indirect
125+
golang.org/x/net v0.18.0 // indirect
126+
golang.org/x/oauth2 v0.13.0 // indirect
127+
golang.org/x/sync v0.5.0 // indirect
128+
golang.org/x/sys v0.14.0 // indirect
129+
golang.org/x/term v0.14.0 // indirect
130+
golang.org/x/text v0.14.0 // indirect
131+
golang.org/x/time v0.3.0 // indirect
132+
google.golang.org/api v0.150.0 // indirect
135133
google.golang.org/appengine v1.6.7 // indirect
136-
google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect
137-
google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect
138-
google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect
139-
google.golang.org/grpc v1.55.0 // indirect
140-
google.golang.org/protobuf v1.30.0 // indirect
134+
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect
135+
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect
136+
google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect
137+
google.golang.org/grpc v1.59.0 // indirect
138+
google.golang.org/protobuf v1.31.0 // indirect
141139
gopkg.in/inf.v0 v0.9.1 // indirect
142140
gorm.io/driver/mysql v1.4.5 // indirect
143-
gorm.io/driver/postgres v1.4.6 // indirect
141+
gorm.io/driver/postgres v1.4.8 // indirect
144142
gorm.io/driver/sqlite v1.4.4 // indirect
145143
gorm.io/driver/sqlserver v1.4.1 // indirect
146144
gorm.io/gorm v1.24.3 // indirect

0 commit comments

Comments
 (0)