func NewRequest()

in internal/api/api.go [31:68]


func NewRequest(ctx context.Context, params InternalAPIRequestParams) (*http.Request, error) {
	if len(params.Secret) == 0 {
		return nil, fmt.Errorf("secret is empty")
	}
	secret, err := generateJWTForRailsAPI(params.Secret)
	if err != nil {
		return nil, err
	}

	endpoint, err := url.JoinPath(params.GitlabURL, apiBasePath, params.NodeUUID, params.Path)
	if err != nil {
		return nil, err
	}

	var body io.Reader
	if params.BodyParams != nil {
		jsonParams, marshalErr := json.Marshal(params.BodyParams)
		if marshalErr != nil {
			return nil, marshalErr
		}
		body = bytes.NewReader(jsonParams)
	}

	req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint, body)

	if err != nil {
		return nil, err
	}

	req.Header = http.Header{
		"Accept":         []string{"application/json"},
		jwtRequestHeader: []string{secret},
	}
	if body != nil {
		req.Header.Set("Content-Type", "application/json")
	}
	return req, nil
}