-
Notifications
You must be signed in to change notification settings - Fork 0
/
handler.go
39 lines (33 loc) · 863 Bytes
/
handler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package main
func getLanguagesFromRepos(repos []repoEntry) []langEntry {
langMap := make(map[string]int)
var langSlice []langEntry
for _, repo := range repos {
for _, lang := range repo.langs {
langMap[lang.name] += lang.size
}
}
for lang, size := range langMap {
langSlice = append(langSlice, langEntry{lang, size})
}
return langSlice
}
type reposQuery interface {
GetRepositories() repoResult
GetRateLimit() rateLimitResult
}
func extractReposFromQuery(q reposQuery) []repoEntry {
repos := []repoEntry{}
queryRepos := q.GetRepositories()
for _, repo := range queryRepos.Nodes {
e := repoEntry{
nameWithOwner: repo.NameWithOwner,
langs: []langEntry{},
}
for _, lang := range repo.Languages.Edges {
e.langs = append(e.langs, langEntry{lang.Node.Name, lang.Size})
}
repos = append(repos, e)
}
return repos
}