func processStreamError()

in internal/beater/api/intake/handler.go [144:180]


func processStreamError(err error) (request.ResultID, jsonError) {
	errID := request.IDResponseErrorsInternal

	var invalidInput *elasticapm.InvalidInputError
	if errors.As(err, &invalidInput) {
		if invalidInput.TooLarge {
			errID = request.IDResponseErrorsRequestTooLarge
		} else {
			errID = request.IDResponseErrorsValidate
		}
		return errID, jsonError{
			Message:  invalidInput.Message,
			Document: invalidInput.Document,
		}
	}

	if errors.As(err, &compressedRequestReaderError{}) {
		errID = request.IDResponseErrorsValidate
	} else {
		switch {
		case errors.Is(err, publish.ErrChannelClosed):
			errID = request.IDResponseErrorsShuttingDown
			err = errServerShuttingDown
		case errors.Is(err, publish.ErrFull):
			errID = request.IDResponseErrorsFullQueue
		case errors.Is(err, errMethodNotAllowed):
			errID = request.IDResponseErrorsMethodNotAllowed
		case errors.Is(err, errInvalidContentType):
			errID = request.IDResponseErrorsValidate
		case errors.Is(err, ratelimit.ErrRateLimitExceeded):
			errID = request.IDResponseErrorsRateLimit
		case errors.Is(err, auth.ErrUnauthorized):
			errID = request.IDResponseErrorsForbidden
		}
	}
	return errID, jsonError{Message: err.Error()}
}