func()

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
}