mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
fix: Use HttpErrors instead of Errors
This commit is contained in:
parent
a00de24ec0
commit
218c8f4662
@ -1,4 +1,5 @@
|
||||
import type { HttpRequest } from '../../server/HttpRequest';
|
||||
import { InternalServerError } from '../../util/errors/InternalServerError';
|
||||
import type { Operation } from '../operations/Operation';
|
||||
import type { BodyParser } from './BodyParser';
|
||||
import type { MetadataExtractor } from './metadata/MetadataExtractor';
|
||||
@ -34,7 +35,7 @@ export class BasicRequestParser extends RequestParser {
|
||||
public async handle(request: HttpRequest): Promise<Operation> {
|
||||
const { method } = request;
|
||||
if (!method) {
|
||||
throw new Error('No method specified on the HTTP request');
|
||||
throw new InternalServerError('No method specified on the HTTP request');
|
||||
}
|
||||
const target = await this.targetExtractor.handleSafe({ request });
|
||||
const preferences = await this.preferenceParser.handleSafe({ request });
|
||||
|
@ -1,5 +1,7 @@
|
||||
import type { TLSSocket } from 'tls';
|
||||
import type { HttpRequest } from '../../server/HttpRequest';
|
||||
import { BadRequestHttpError } from '../../util/errors/BadRequestHttpError';
|
||||
import { InternalServerError } from '../../util/errors/InternalServerError';
|
||||
import { parseForwarded } from '../../util/HeaderUtil';
|
||||
import { toCanonicalUriPath } from '../../util/PathUtil';
|
||||
import type { ResourceIdentifier } from '../representation/ResourceIdentifier';
|
||||
@ -18,7 +20,7 @@ export class OriginalUrlExtractor extends TargetExtractor {
|
||||
|
||||
public async handle({ request: { url, connection, headers }}: { request: HttpRequest }): Promise<ResourceIdentifier> {
|
||||
if (!url) {
|
||||
throw new Error('Missing URL');
|
||||
throw new InternalServerError('Missing URL');
|
||||
}
|
||||
|
||||
// Extract host and protocol (possibly overridden by the Forwarded/X-Forwarded-* header)
|
||||
@ -36,10 +38,10 @@ export class OriginalUrlExtractor extends TargetExtractor {
|
||||
|
||||
// Perform a sanity check on the host
|
||||
if (!host) {
|
||||
throw new Error('Missing Host header');
|
||||
throw new BadRequestHttpError('Missing Host header');
|
||||
}
|
||||
if (/[/\\*]/u.test(host)) {
|
||||
throw new Error(`The request has an invalid Host header: ${host}`);
|
||||
throw new BadRequestHttpError(`The request has an invalid Host header: ${host}`);
|
||||
}
|
||||
|
||||
// URL object applies punycode encoding to domain
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { DataFactory, Store } from 'n3';
|
||||
import type { BlankNode, Literal, NamedNode, Quad, Term } from 'rdf-js';
|
||||
import { getLoggerFor } from '../../logging/LogUtil';
|
||||
import { InternalServerError } from '../../util/errors/InternalServerError';
|
||||
import { toSubjectTerm, toObjectTerm, toCachedNamedNode, isTerm } from '../../util/TermUtil';
|
||||
import { CONTENT_TYPE, CONTENT_TYPE_TERM } from '../../util/Vocabularies';
|
||||
import type { ResourceIdentifier } from './ResourceIdentifier';
|
||||
@ -265,7 +266,9 @@ export class RepresentationMetadata {
|
||||
}
|
||||
if (terms.length > 1) {
|
||||
this.logger.error(`Multiple results for ${typeof predicate === 'string' ? predicate : predicate.value}`);
|
||||
throw new Error(`Multiple results for ${typeof predicate === 'string' ? predicate : predicate.value}`);
|
||||
throw new InternalServerError(
|
||||
`Multiple results for ${typeof predicate === 'string' ? predicate : predicate.value}`,
|
||||
);
|
||||
}
|
||||
return terms[0];
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ import arrayifyStream from 'arrayify-stream';
|
||||
import type { NamedNode } from 'rdf-js';
|
||||
import { RepresentationMetadata } from '../../ldp/representation/RepresentationMetadata';
|
||||
import type { ResourceIdentifier } from '../../ldp/representation/ResourceIdentifier';
|
||||
import { InternalServerError } from '../../util/errors/InternalServerError';
|
||||
import { NotFoundHttpError } from '../../util/errors/NotFoundHttpError';
|
||||
import type { Guarded } from '../../util/GuardedStream';
|
||||
import type { IdentifierStrategy } from '../../util/identifiers/IdentifierStrategy';
|
||||
@ -121,7 +122,7 @@ export class InMemoryDataAccessor implements DataAccessor {
|
||||
throw new NotFoundHttpError();
|
||||
}
|
||||
if (this.isDataEntry(parent)) {
|
||||
throw new Error('Invalid path.');
|
||||
throw new InternalServerError('Invalid path.');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
import type { Representation } from '../../ldp/representation/Representation';
|
||||
import { getLoggerFor } from '../../logging/LogUtil';
|
||||
import { InternalServerError } from '../../util/errors/InternalServerError';
|
||||
import { matchesMediaType } from './ConversionUtil';
|
||||
import type { RepresentationConverterArgs } from './RepresentationConverter';
|
||||
import { TypedRepresentationConverter } from './TypedRepresentationConverter';
|
||||
@ -79,7 +80,7 @@ export class ChainedConverter extends TypedRepresentationConverter {
|
||||
|
||||
if (bestMatch.weight === 0) {
|
||||
this.logger.warn(`No match found between ${leftKeys} and ${rightKeys}`);
|
||||
throw new Error(`No match found between ${leftKeys} and ${rightKeys}`);
|
||||
throw new InternalServerError(`No match found between ${leftKeys} and ${rightKeys}`);
|
||||
}
|
||||
|
||||
this.logger.debug(`${bestMatch.type} is the best match between ${leftKeys} and ${rightKeys}`);
|
||||
|
@ -2,6 +2,7 @@ import type { ResourceIdentifier } from '../../ldp/representation/ResourceIdenti
|
||||
import { getLoggerFor } from '../../logging/LogUtil';
|
||||
import { APPLICATION_OCTET_STREAM } from '../../util/ContentTypes';
|
||||
import { BadRequestHttpError } from '../../util/errors/BadRequestHttpError';
|
||||
import { InternalServerError } from '../../util/errors/InternalServerError';
|
||||
import { NotFoundHttpError } from '../../util/errors/NotFoundHttpError';
|
||||
import {
|
||||
decodeUriPathComponents,
|
||||
@ -98,7 +99,7 @@ export class BaseFileIdentifierMapper implements FileIdentifierMapper {
|
||||
public async mapFilePathToUrl(filePath: string, isContainer: boolean): Promise<ResourceLink> {
|
||||
if (!filePath.startsWith(this.rootFilepath)) {
|
||||
this.logger.error(`Trying to access file ${filePath} outside of ${this.rootFilepath}`);
|
||||
throw new Error(`File ${filePath} is not part of the file storage at ${this.rootFilepath}`);
|
||||
throw new InternalServerError(`File ${filePath} is not part of the file storage at ${this.rootFilepath}`);
|
||||
}
|
||||
const relative = filePath.slice(this.rootFilepath.length);
|
||||
let url: string;
|
||||
|
@ -48,7 +48,7 @@ export class WaterfallHandler<TIn, TOut> implements AsyncHandler<TIn, TOut> {
|
||||
handler = await this.findHandler(input);
|
||||
} catch {
|
||||
this.logger.warn('All handlers failed. This might be the consequence of calling handle before canHandle.');
|
||||
throw new Error('All handlers failed');
|
||||
throw new InternalServerError('All handlers failed');
|
||||
}
|
||||
|
||||
return handler.handle(input);
|
||||
|
Loading…
x
Reference in New Issue
Block a user