/
user.go
40 lines (35 loc) · 867 Bytes
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package concourse
import (
"encoding/json"
"io"
"net/http"
"github.com/concourse/concourse/atc"
"github.com/concourse/concourse/go-concourse/concourse/internal"
)
func (client *client) UserInfo() (atc.UserInfo, error) {
resp, err := client.httpAgent.Send(internal.Request{
RequestName: atc.GetUser,
})
if err != nil {
return atc.UserInfo{}, err
}
defer resp.Body.Close()
switch resp.StatusCode {
case http.StatusOK:
var userInfo atc.UserInfo
err = json.NewDecoder(resp.Body).Decode(&userInfo)
if err != nil {
return atc.UserInfo{}, err
}
return userInfo, nil
case http.StatusUnauthorized:
return atc.UserInfo{}, ErrUnauthorized
default:
body, _ := io.ReadAll(resp.Body)
return atc.UserInfo{}, internal.UnexpectedResponseError{
StatusCode: resp.StatusCode,
Status: resp.Status,
Body: string(body),
}
}
}