func()

in pkg/client/sonar/sonar.go [451:481]


func (sc Client) GenerateUserToken(userName string) (*string, error) {
	emptyString := ""

	log.Info(fmt.Sprintf("Start generating token for user %v in Sonar", userName))

	resp, err := sc.jsonTypeRequest().
		SetQueryParams(map[string]string{
			loginField: userName,
			nameField:  cases.Title(language.English).String(userName),
		}).
		Post("/user_tokens/generate")
	if err != nil {
		return &emptyString, fmt.Errorf("failed to send request for user token generation: %w", err)
	}

	if resp.IsError() {
		return nil, fmt.Errorf("failed to generate token for user %s with response %s", userName, resp.Status())
	}

	log.Info(fmt.Sprintf("Token for user %v has been generated", userName))

	var userTokensGenerateResponse UserTokensGenerateResponse

	if err = json.Unmarshal(resp.Body(), &userTokensGenerateResponse); err != nil {
		return nil, fmt.Errorf(cantUnmarshalMsg, resp.Body(), err)
	}

	token := userTokensGenerateResponse.Token

	return &token, nil
}