func()

in pkg/client/jenkins/jenkins.go [254:293]


func (jc JenkinsClient) GetAdminToken() (*string, error) {
	crumb, err := jc.GetCrumb()
	if err != nil {
		return nil, err
	}

	headers := make(map[string]string)
	if crumb != "" {
		headers[jenkinsCrumbKey] = crumb
	}

	params := map[string]string{"newTokenName": "admin"}

	resp, err := jc.resty.R().
		SetQueryParams(params).
		SetHeaders(headers).
		Post("/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken")
	if err != nil {
		return nil, fmt.Errorf("failed to perform POST request: %w", err)
	}

	if resp.IsError() {
		return nil, fmt.Errorf("failed to process request: returns error: %v", resp.Status())
	}

	var parsedResponse map[string]interface{}

	if err = json.Unmarshal(resp.Body(), &parsedResponse); err != nil {
		return nil, fmt.Errorf("failed to unmarshal Jenkins response %v: %w", resp.Body(), err)
	}

	parsedData, valid := parsedResponse["data"].(map[string]interface{})
	if valid {
		token := fmt.Sprintf("%v", parsedData["tokenValue"])

		return &token, nil
	}

	return nil, errors.New("failed to find token for admin")
}