11package main
22
33import (
4+ "errors"
45 "fmt"
6+ "github.com/kataras/iris/v12"
57)
68
79func GetUser (username string ) (data map [string ]interface {}, err error ) {
@@ -24,6 +26,13 @@ func GetLanguages(username string, repo string) (data map[string]interface{}, er
2426 return data , err
2527}
2628
29+ func getLicense (license interface {}) string {
30+ if license != nil {
31+ return license .(map [string ]interface {})["spdx_id" ].(string )
32+ }
33+ return "Empty"
34+ }
35+
2736func GetUserExist (username string ) bool {
2837 res , err := GetUser (username )
2938 if err != nil {
@@ -84,3 +93,58 @@ func CollectLanguages(username string, repos []interface{}) (data map[string]flo
8493
8594 return data , nil
8695}
96+
97+ func AnalysisUser (username string ) (data iris.Map , err error , code int ) {
98+ if GetUserExist (username ) {
99+ res , err := GetUser (username )
100+ if err != nil {
101+ return nil , err , iris .StatusInternalServerError
102+ }
103+ repos , err := iterRepos (username )
104+ if err != nil {
105+ return nil , err , iris .StatusInternalServerError
106+ }
107+ languages , err := CollectLanguages (username , repos )
108+ if err != nil {
109+ return nil , err , iris .StatusInternalServerError
110+ }
111+ return iris.Map {
112+ "username" : username ,
113+ "location" : res ["location" ],
114+ "org" : res ["type" ] != "User" ,
115+ "repos" : res ["public_repos" ],
116+ "follower" : ScaleConvert (res ["followers" ].(float64 ), true ),
117+ "stars" : ScaleConvert (Sum (repos , "stargazers_count" ), true ),
118+ "forks" : ScaleConvert (Sum (repos , "forks_count" ), true ),
119+ "issues" : ScaleConvert (Sum (repos , "open_issues_count" ), true ),
120+ "watchers" : ScaleConvert (Sum (repos , "watchers_count" ), true ),
121+ "languages" : languages ,
122+ }, nil , iris .StatusOK
123+ }
124+ return nil , errors .New ("user not found" ), iris .StatusNotFound
125+ }
126+
127+ func AnalysisRepo (username string , repo string ) (data iris.Map , err error , code int ) {
128+ if GetRepoExist (username , repo ) {
129+ res , err := GetRepo (username , repo )
130+ if err != nil {
131+ return nil , err , iris .StatusInternalServerError
132+ }
133+ languages , err := GetLanguages (username , repo )
134+ if err != nil {
135+ return nil , err , iris .StatusInternalServerError
136+ }
137+ return iris.Map {
138+ "username" : username ,
139+ "repo" : repo ,
140+ "size" : SizeConvert (res ["size" ].(float64 ), 1 ),
141+ "stars" : ScaleConvert (res ["stargazers_count" ].(float64 ), true ),
142+ "forks" : ScaleConvert (res ["forks_count" ].(float64 ), true ),
143+ "watchers" : ScaleConvert (res ["watchers_count" ].(float64 ), true ),
144+ "issues" : ScaleConvert (res ["open_issues_count" ].(float64 ), false ),
145+ "license" : getLicense (res ["license" ]),
146+ "languages" : languages ,
147+ }, nil , iris .StatusOK
148+ }
149+ return nil , errors .New ("repo not found" ), iris .StatusNotFound
150+ }
0 commit comments