github.com/1and1/oneandone-cloudserver-sdk-go@v1.4.1/users.go (about) 1 package oneandone 2 3 import "net/http" 4 5 type User struct { 6 Identity 7 descField 8 CreationDate string `json:"creation_date,omitempty"` 9 Email string `json:"email,omitempty"` 10 State string `json:"state,omitempty"` 11 Role *Identity `json:"role,omitempty"` 12 Api *UserApi `json:"api,omitempty"` 13 ApiPtr 14 } 15 16 type UserApi struct { 17 Active bool `json:"active"` 18 AllowedIps []string `json:"allowed_ips,omitempty"` 19 UserApiKey 20 ApiPtr 21 } 22 23 type UserApiKey struct { 24 Key string `json:"key,omitempty"` 25 } 26 27 type UserRequest struct { 28 Name string `json:"name,omitempty"` 29 Description string `json:"description,omitempty"` 30 Password string `json:"password,omitempty"` 31 Email string `json:"email,omitempty"` 32 State string `json:"state,omitempty"` 33 } 34 35 // GET /users 36 func (api *API) ListUsers(args ...interface{}) ([]User, error) { 37 url, err := processQueryParams(createUrl(api, userPathSegment), args...) 38 if err != nil { 39 return nil, err 40 } 41 result := []User{} 42 err = api.Client.Get(url, &result, http.StatusOK) 43 if err != nil { 44 return nil, err 45 } 46 for index, _ := range result { 47 result[index].api = api 48 } 49 return result, nil 50 } 51 52 // POST /users 53 func (api *API) CreateUser(user *UserRequest) (string, *User, error) { 54 result := new(User) 55 url := createUrl(api, userPathSegment) 56 err := api.Client.Post(url, &user, &result, http.StatusCreated) 57 if err != nil { 58 return "", nil, err 59 } 60 result.api = api 61 return result.Id, result, nil 62 } 63 64 // GET /users/{id} 65 func (api *API) GetUser(user_id string) (*User, error) { 66 result := new(User) 67 url := createUrl(api, userPathSegment, user_id) 68 err := api.Client.Get(url, &result, http.StatusOK) 69 if err != nil { 70 return nil, err 71 } 72 result.api = api 73 return result, nil 74 } 75 76 // DELETE /users/{id} 77 func (api *API) DeleteUser(user_id string) (*User, error) { 78 result := new(User) 79 url := createUrl(api, userPathSegment, user_id) 80 err := api.Client.Delete(url, nil, &result, http.StatusOK) 81 if err != nil { 82 return nil, err 83 } 84 result.api = api 85 return result, nil 86 } 87 88 // PUT /users/{id} 89 func (api *API) ModifyUser(user_id string, user *UserRequest) (*User, error) { 90 result := new(User) 91 url := createUrl(api, userPathSegment, user_id) 92 err := api.Client.Put(url, &user, &result, http.StatusOK) 93 if err != nil { 94 return nil, err 95 } 96 result.api = api 97 return result, nil 98 } 99 100 // GET /users/{id}/api 101 func (api *API) GetUserApi(user_id string) (*UserApi, error) { 102 result := new(UserApi) 103 url := createUrl(api, userPathSegment, user_id, "api") 104 err := api.Client.Get(url, &result, http.StatusOK) 105 if err != nil { 106 return nil, err 107 } 108 result.api = api 109 return result, nil 110 } 111 112 // PUT /users/{id}/api 113 func (api *API) ModifyUserApi(user_id string, active bool) (*User, error) { 114 result := new(User) 115 req := struct { 116 Active bool `json:"active"` 117 }{active} 118 url := createUrl(api, userPathSegment, user_id, "api") 119 err := api.Client.Put(url, &req, &result, http.StatusOK) 120 if err != nil { 121 return nil, err 122 } 123 result.api = api 124 return result, nil 125 } 126 127 // GET /users/{id}/api/key 128 func (api *API) GetUserApiKey(user_id string) (*UserApiKey, error) { 129 result := new(UserApiKey) 130 url := createUrl(api, userPathSegment, user_id, "api/key") 131 err := api.Client.Get(url, &result, http.StatusOK) 132 if err != nil { 133 return nil, err 134 } 135 return result, nil 136 } 137 138 // PUT /users/{id}/api/key 139 func (api *API) RenewUserApiKey(user_id string) (*User, error) { 140 result := new(User) 141 url := createUrl(api, userPathSegment, user_id, "api/key") 142 err := api.Client.Put(url, nil, &result, http.StatusOK) 143 if err != nil { 144 return nil, err 145 } 146 result.api = api 147 return result, nil 148 } 149 150 // GET /users/{id}/api/ips 151 func (api *API) ListUserApiAllowedIps(user_id string) ([]string, error) { 152 result := []string{} 153 url := createUrl(api, userPathSegment, user_id, "api/ips") 154 err := api.Client.Get(url, &result, http.StatusOK) 155 if err != nil { 156 return nil, err 157 } 158 return result, nil 159 } 160 161 // POST /users/{id}/api/ips 162 func (api *API) AddUserApiAlowedIps(user_id string, ips []string) (*User, error) { 163 result := new(User) 164 req := struct { 165 Ips []string `json:"ips"` 166 }{ips} 167 url := createUrl(api, userPathSegment, user_id, "api/ips") 168 err := api.Client.Post(url, &req, &result, http.StatusCreated) 169 if err != nil { 170 return nil, err 171 } 172 result.api = api 173 return result, nil 174 } 175 176 // DELETE /users/{id}/api/ips/{ip} 177 func (api *API) RemoveUserApiAllowedIp(user_id string, ip string) (*User, error) { 178 result := new(User) 179 url := createUrl(api, userPathSegment, user_id, "api/ips", ip) 180 err := api.Client.Delete(url, nil, &result, http.StatusOK) 181 if err != nil { 182 return nil, err 183 } 184 result.api = api 185 return result, nil 186 } 187 188 // GET /users/{id}/api/ips 189 func (api *API) GetCurrentUserPermissions() (*Permissions, error) { 190 result := new(Permissions) 191 url := createUrl(api, userPathSegment, "current_user_permissions") 192 err := api.Client.Get(url, &result, http.StatusOK) 193 if err != nil { 194 return nil, err 195 } 196 return result, nil 197 } 198 199 func (u *User) GetState() (string, error) { 200 in, err := u.api.GetUser(u.Id) 201 if in == nil { 202 return "", err 203 } 204 return in.State, err 205 }