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
}