mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 21:47:20 +00:00
This looks like a log but it's just moving the code that lived in cmd/gm/ui.go into it's own pkg that makes it clearer where each part of the UI lives. I am also adding the functionality for bulk sprint demo to grab names from github usernames.
47 lines
1,007 B
Go
47 lines
1,007 B
Go
package ghapi
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
var username_mapping = map[string]string{}
|
|
|
|
// ParseJSONtoUser converts JSON data to a slice of Issue structs.
|
|
func ParseJSONtoUser(jsonData []byte) (User, error) {
|
|
var user User
|
|
err := json.Unmarshal(jsonData, &user)
|
|
if err != nil {
|
|
return User{}, err
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
// GetIssues fetches issues from GitHub using optional search criteria.
|
|
func GetUserName(userLogin string) (User, error) {
|
|
var user User
|
|
|
|
if fullName, ok := username_mapping[userLogin]; ok {
|
|
user.Login = userLogin
|
|
user.Name = fullName
|
|
return user, nil
|
|
}
|
|
|
|
command := fmt.Sprintf("gh api /users/%s", userLogin)
|
|
|
|
results, err := RunCommandAndReturnOutput(command)
|
|
if err != nil {
|
|
return User{}, err
|
|
}
|
|
user, err = ParseJSONtoUser(results)
|
|
if err != nil {
|
|
return User{}, err
|
|
}
|
|
username_mapping[user.Login] = user.Name
|
|
return user, nil
|
|
}
|
|
|
|
func init() {
|
|
// Ensure any package-level initialization here if needed
|
|
username_mapping = make(map[string]string)
|
|
}
|