| 225 | } |
| 226 | |
| 227 | func (API) GetAutoPAT(ctx context.Context, audience string, res TokenResponse) (string, error) { |
| 228 | patURL := audience + "/v2/access-tokens/desktop-generate" |
| 229 | req, err := http.NewRequestWithContext(ctx, http.MethodPost, patURL, nil) |
| 230 | if err != nil { |
| 231 | return "", err |
| 232 | } |
| 233 | |
| 234 | req.Header.Set("Authorization", "Bearer "+res.AccessToken) |
| 235 | req.Header.Set("Content-Type", "application/json") |
| 236 | resp, err := http.DefaultClient.Do(req) |
| 237 | if err != nil { |
| 238 | return "", err |
| 239 | } |
| 240 | defer func() { |
| 241 | _ = resp.Body.Close() |
| 242 | }() |
| 243 | |
| 244 | if resp.StatusCode != http.StatusCreated { |
| 245 | return "", fmt.Errorf("unexpected response from Hub: %s", resp.Status) |
| 246 | } |
| 247 | |
| 248 | var response patGenerateResponse |
| 249 | err = json.NewDecoder(resp.Body).Decode(&response) |
| 250 | if err != nil { |
| 251 | return "", err |
| 252 | } |
| 253 | |
| 254 | return response.Data.Token, nil |
| 255 | } |
| 256 | |
| 257 | type patGenerateResponse struct { |
| 258 | Data struct { |