client/auth.go (61 lines of code) (raw):
package client
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"terraform-provider-teamcity/models"
)
type AuthSettings struct {
AllowGuest bool `json:"allowGuest"`
GuestUsername string `json:"guestUsername"`
WelcomeText string `json:"welcomeText"`
CollapseLoginForm bool `json:"collapseLoginForm"`
TwoFactorMode string `json:"twoFactorMode"`
PerProjectPermissions bool `json:"perProjectPermissions"`
EmailVerification bool `json:"emailVerification"`
Modules Modules `json:"modules"`
}
type Modules struct {
Module []Module `json:"module"`
}
type Module struct {
Name string `json:"name"`
Properties *models.Properties `json:"properties,omitempty"`
}
func (c *Client) GetAuthSettings() (AuthSettings, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/server/authSettings", c.RestURL), nil)
if err != nil {
return AuthSettings{}, err
}
body, err := c.doRequest(req)
if err != nil {
return AuthSettings{}, err
}
actual := AuthSettings{}
err = json.Unmarshal(body, &actual)
if err != nil {
return AuthSettings{}, err
}
return actual, nil
}
func (c *Client) SetAuthSettings(settings AuthSettings) (AuthSettings, error) {
rb, err := json.Marshal(settings)
if err != nil {
return AuthSettings{}, err
}
req, err := http.NewRequest("PUT", fmt.Sprintf("%s/server/authSettings", c.RestURL), bytes.NewReader(rb))
if err != nil {
return AuthSettings{}, err
}
body, err := c.doRequest(req)
if err != nil {
return AuthSettings{}, err
}
actual := AuthSettings{}
err = json.Unmarshal(body, &actual)
if err != nil {
return AuthSettings{}, err
}
return actual, nil
}