Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

50 rindas
1.1 KiB

  1. package apiclient
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. "net/url"
  8. "strings"
  9. "github.com/AFASystems/presence/internal/pkg/config"
  10. )
  11. type response struct {
  12. Token string `json:"access_token"`
  13. }
  14. func GetToken(ctx context.Context, cfg *config.Config, client *http.Client) (string, error) {
  15. formData := url.Values{}
  16. formData.Set("grant_type", "password")
  17. formData.Set("client_id", cfg.HTTPClientID)
  18. formData.Set("client_secret", cfg.ClientSecret)
  19. formData.Set("username", cfg.HTTPUsername)
  20. formData.Set("password", cfg.HTTPPassword)
  21. formData.Set("audience", cfg.HTTPAudience)
  22. req, err := http.NewRequest("POST", fmt.Sprintf("%s/realms/API.Server.local/protocol/openid-connect/token", cfg.APIAuthURL), strings.NewReader(formData.Encode()))
  23. if err != nil {
  24. fmt.Println("error", err)
  25. return "", err
  26. }
  27. req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
  28. req = req.WithContext(ctx)
  29. res, err := client.Do(req)
  30. if err != nil {
  31. fmt.Println("error", err)
  32. return "", err
  33. }
  34. var j response
  35. if err := json.NewDecoder(res.Body).Decode(&j); err != nil {
  36. fmt.Println("error", err)
  37. return "", err
  38. }
  39. return j.Token, nil
  40. }