53 lines
929 B
Go
53 lines
929 B
Go
package gitea
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"errors"
|
|
"io"
|
|
"log"
|
|
"net/http"
|
|
"net/url"
|
|
)
|
|
|
|
type User struct {
|
|
FullName string `json:"full_name"`
|
|
Login string `json:"login"`
|
|
}
|
|
|
|
type Gitea struct {
|
|
Url string
|
|
Username string
|
|
Password string
|
|
}
|
|
|
|
func (g Gitea) setAuth(req *http.Request) {
|
|
req.Header.Set("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(g.Username+":"+g.Password)))
|
|
|
|
}
|
|
|
|
func (g Gitea) GetUser() (u User, err error) {
|
|
ur, err := url.Parse(g.Url)
|
|
if err != nil {
|
|
return
|
|
}
|
|
ur.Path = "/api/v1/user"
|
|
req, err := http.NewRequest("GET", ur.String(), nil)
|
|
if err != nil {
|
|
return
|
|
}
|
|
g.setAuth(req)
|
|
res, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if res.StatusCode != http.StatusOK {
|
|
byt, err := io.ReadAll(res.Body)
|
|
log.Printf("%s %v", byt, err)
|
|
return u, errors.New("not 200")
|
|
}
|
|
|
|
err = json.NewDecoder(res.Body).Decode(&u)
|
|
return
|
|
}
|