98 lines
2.2 KiB
Go
98 lines
2.2 KiB
Go
|
package gogitlab
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"strconv"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
users_url = "/users" // Get users list
|
||
|
user_url = "/users/:id" // Get a single user.
|
||
|
current_user_url = "/user" // Get current user
|
||
|
)
|
||
|
|
||
|
type User struct {
|
||
|
Id int `json:"id,omitempty"`
|
||
|
Username string `json:"username,omitempty"`
|
||
|
Email string `json:"email,omitempty"`
|
||
|
AvatarUrl string `json:"avatar_url,omitempty"`
|
||
|
Name string `json:"name,omitempty"`
|
||
|
State string `json:"state,omitempty"`
|
||
|
CreatedAt string `json:"created_at,omitempty"`
|
||
|
Bio string `json:"bio,omitempty"`
|
||
|
Skype string `json:"skype,omitempty"`
|
||
|
LinkedIn string `json:"linkedin,omitempty"`
|
||
|
Twitter string `json:"twitter,omitempty"`
|
||
|
ExternUid string `json:"extern_uid,omitempty"`
|
||
|
Provider string `json:"provider,omitempty"`
|
||
|
ThemeId int `json:"theme_id,omitempty"`
|
||
|
ColorSchemeId int `json:"color_scheme_id,color_scheme_id"`
|
||
|
}
|
||
|
|
||
|
func (g *Gitlab) Users(page int, per_page int) ([]*User, error) {
|
||
|
|
||
|
qry := map[string]string{
|
||
|
"page": strconv.Itoa(page),
|
||
|
"per_page": strconv.Itoa(per_page)}
|
||
|
url := g.ResourceUrlQuery(users_url, nil, qry)
|
||
|
|
||
|
var users []*User
|
||
|
|
||
|
contents, err := g.buildAndExecRequest("GET", url, nil)
|
||
|
if err == nil {
|
||
|
err = json.Unmarshal(contents, &users)
|
||
|
}
|
||
|
|
||
|
return users, err
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Get a single user.
|
||
|
|
||
|
GET /users/:id
|
||
|
|
||
|
Parameters:
|
||
|
|
||
|
id The ID of a user
|
||
|
|
||
|
Usage:
|
||
|
|
||
|
user, err := gitlab.User("your_user_id")
|
||
|
if err != nil {
|
||
|
fmt.Println(err.Error())
|
||
|
}
|
||
|
fmt.Printf("%+v\n", user)
|
||
|
*/
|
||
|
func (g *Gitlab) User(id string) (*User, error) {
|
||
|
|
||
|
url := g.ResourceUrl(user_url, map[string]string{":id": id})
|
||
|
|
||
|
user := new(User)
|
||
|
|
||
|
contents, err := g.buildAndExecRequest("GET", url, nil)
|
||
|
if err == nil {
|
||
|
err = json.Unmarshal(contents, &user)
|
||
|
}
|
||
|
|
||
|
return user, err
|
||
|
}
|
||
|
|
||
|
func (g *Gitlab) DeleteUser(id string) error {
|
||
|
url := g.ResourceUrl(user_url, map[string]string{":id": id})
|
||
|
var err error
|
||
|
_, err = g.buildAndExecRequest("DELETE", url, nil)
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (g *Gitlab) CurrentUser() (User, error) {
|
||
|
url := g.ResourceUrl(current_user_url, nil)
|
||
|
var user User
|
||
|
|
||
|
contents, err := g.buildAndExecRequest("GET", url, nil)
|
||
|
if err == nil {
|
||
|
err = json.Unmarshal(contents, &user)
|
||
|
}
|
||
|
|
||
|
return user, err
|
||
|
}
|