in core/octclient.go [53:95]
func (o *Octclient) GetRepositoriesContributedTo(ctx context.Context, isSortBySize bool, reverse bool) (*Results, error) {
result, err := o.callQueryRepositoriesContributedTo(ctx)
if err != nil {
return nil, err
}
var allLanguageSize int
languageMap := map[string]int{}
for _, node := range result.User.RepositoriesContributedTo.Nodes {
o.updateUpdatedTime(node.UpdatedAt.Time)
edges := node.Languages.Edges
for _, language := range edges {
languageMap[string(language.Node.Name)] += int(language.Size)
allLanguageSize += int(language.Size)
}
}
var languages []LanguageSize
for k, v := range languageMap {
languages = append(languages, LanguageSize{
Name: k,
Size: v,
Percentage: math.Round(float64(v)/float64(allLanguageSize)*10000) / 100,
})
}
if isSortBySize {
sort.Slice(languages, func(i, j int) bool { return languages[i].Size > languages[j].Size })
}
if reverse {
reverseSlice(languages)
}
return &Results{
UpdatedRange: UpdatedRange{
Oldest: o.oldestUpdatedAt,
Latest: o.latestUpdatedAt,
},
LanguageSizes: languages,
}, nil
}