github.com/jcarley/cli@v0.0.0-20180201210820-966d90434c30/commands/users/list.go (about)

     1  package users
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/Sirupsen/logrus"
     8  	"github.com/daticahealth/cli/commands/invites"
     9  	"github.com/daticahealth/cli/models"
    10  	"github.com/olekukonko/tablewriter"
    11  )
    12  
    13  func CmdList(myUsersID string, iu IUsers, ii invites.IInvites) error {
    14  	orgUsers, err := iu.List()
    15  	if err != nil {
    16  		return err
    17  	}
    18  	if orgUsers == nil || len(*orgUsers) == 0 {
    19  		logrus.Println("No users found")
    20  		return nil
    21  	}
    22  	orgGroups, err := ii.ListOrgGroups()
    23  	if err != nil {
    24  		return err
    25  	}
    26  	members := make(map[string][]string)
    27  	for _, group := range *orgGroups {
    28  		groupMembers := group.Members
    29  		for _, member := range *groupMembers {
    30  			members[member.Email] = append(members[member.Email], group.Name)
    31  		}
    32  	}
    33  	data := [][]string{{"EMAIL", "GROUP(S)"}}
    34  	for _, user := range *orgUsers {
    35  		if val, ok := members[user.Email]; ok {
    36  			data = append(data, []string{user.Email, strings.Join(val, ", ")})
    37  		} else {
    38  			data = append(data, []string{user.Email, "none"})
    39  		}
    40  	}
    41  	table := tablewriter.NewWriter(logrus.StandardLogger().Out)
    42  	table.SetBorder(false)
    43  	table.SetRowLine(false)
    44  	table.SetCenterSeparator("")
    45  	table.SetColumnSeparator("")
    46  	table.SetRowSeparator("")
    47  	table.AppendBulk(data)
    48  	table.Render()
    49  	return nil
    50  }
    51  
    52  func (u *SUsers) List() (*[]models.OrgUser, error) {
    53  	headers := u.Settings.HTTPManager.GetHeaders(u.Settings.SessionToken, u.Settings.Version, u.Settings.Pod, u.Settings.UsersID)
    54  	resp, statusCode, err := u.Settings.HTTPManager.Get(nil, fmt.Sprintf("%s%s/orgs/%s/users", u.Settings.AuthHost, u.Settings.AuthHostVersion, u.Settings.OrgID), headers)
    55  	if err != nil {
    56  		return nil, err
    57  	}
    58  	var users []models.OrgUser
    59  	err = u.Settings.HTTPManager.ConvertResp(resp, statusCode, &users)
    60  	if err != nil {
    61  		return nil, err
    62  	}
    63  	return &users, nil
    64  }