From 22f27df93652990116fe28ed00ab59e34f2d6036 Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Wed, 2 Sep 2020 23:58:24 +0200 Subject: [PATCH] refactor: Introduce TEXT_TURTLE constant --- src/init/Setup.ts | 3 ++- src/storage/InMemoryResourceStore.ts | 3 ++- src/storage/conversion/QuadToTurtleConverter.ts | 8 ++++---- src/storage/conversion/TurtleToQuadConverter.ts | 6 +++--- src/util/ContentTypes.ts | 3 +++ src/util/MetadataController.ts | 5 +++-- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/init/Setup.ts b/src/init/Setup.ts index 1c26e2cf83..e54676749b 100644 --- a/src/init/Setup.ts +++ b/src/init/Setup.ts @@ -2,6 +2,7 @@ import streamifyArray from 'streamify-array'; import { AclManager } from '../authorization/AclManager'; import { ExpressHttpServer } from '../server/ExpressHttpServer'; import { ResourceStore } from '../storage/ResourceStore'; +import { TEXT_TURTLE } from '../util/ContentTypes'; import { RuntimeConfig, RuntimeConfigData } from './RuntimeConfig'; /** @@ -56,7 +57,7 @@ export class Setup { metadata: { raw: [], profiles: [], - contentType: 'text/turtle', + contentType: TEXT_TURTLE, }, }, ); diff --git a/src/storage/InMemoryResourceStore.ts b/src/storage/InMemoryResourceStore.ts index df11bf951b..f2cfb8d28a 100644 --- a/src/storage/InMemoryResourceStore.ts +++ b/src/storage/InMemoryResourceStore.ts @@ -3,6 +3,7 @@ import streamifyArray from 'streamify-array'; import { RuntimeConfig } from '../init/RuntimeConfig'; import { Representation } from '../ldp/representation/Representation'; import { ResourceIdentifier } from '../ldp/representation/ResourceIdentifier'; +import { TEXT_TURTLE } from '../util/ContentTypes'; import { NotFoundHttpError } from '../util/errors/NotFoundHttpError'; import { ensureTrailingSlash } from '../util/Util'; import { ResourceStore } from './ResourceStore'; @@ -28,7 +29,7 @@ export class InMemoryResourceStore implements ResourceStore { '': { binary: true, data: streamifyArray([]), - metadata: { raw: [], profiles: [], contentType: 'text/turtle' }, + metadata: { raw: [], profiles: [], contentType: TEXT_TURTLE }, }, }; } diff --git a/src/storage/conversion/QuadToTurtleConverter.ts b/src/storage/conversion/QuadToTurtleConverter.ts index 4e707c9651..460f9a90b4 100644 --- a/src/storage/conversion/QuadToTurtleConverter.ts +++ b/src/storage/conversion/QuadToTurtleConverter.ts @@ -1,7 +1,7 @@ import { StreamWriter } from 'n3'; import { Representation } from '../../ldp/representation/Representation'; import { RepresentationMetadata } from '../../ldp/representation/RepresentationMetadata'; -import { INTERNAL_QUADS } from '../../util/ContentTypes'; +import { INTERNAL_QUADS, TEXT_TURTLE } from '../../util/ContentTypes'; import { checkRequest } from './ConversionUtil'; import { RepresentationConverter, RepresentationConverterArgs } from './RepresentationConverter'; @@ -10,7 +10,7 @@ import { RepresentationConverter, RepresentationConverterArgs } from './Represen */ export class QuadToTurtleConverter extends RepresentationConverter { public async canHandle(input: RepresentationConverterArgs): Promise { - checkRequest(input, [ INTERNAL_QUADS ], [ 'text/turtle' ]); + checkRequest(input, [ INTERNAL_QUADS ], [ TEXT_TURTLE ]); } public async handle(input: RepresentationConverterArgs): Promise { @@ -18,10 +18,10 @@ export class QuadToTurtleConverter extends RepresentationConverter { } private quadsToTurtle(quads: Representation): Representation { - const metadata: RepresentationMetadata = { ...quads.metadata, contentType: 'text/turtle' }; + const metadata: RepresentationMetadata = { ...quads.metadata, contentType: TEXT_TURTLE }; return { binary: true, - data: quads.data.pipe(new StreamWriter({ format: 'text/turtle' })), + data: quads.data.pipe(new StreamWriter({ format: TEXT_TURTLE })), metadata, }; } diff --git a/src/storage/conversion/TurtleToQuadConverter.ts b/src/storage/conversion/TurtleToQuadConverter.ts index b1b1976fb4..d584cd5427 100644 --- a/src/storage/conversion/TurtleToQuadConverter.ts +++ b/src/storage/conversion/TurtleToQuadConverter.ts @@ -2,7 +2,7 @@ import { PassThrough } from 'stream'; import { StreamParser } from 'n3'; import { Representation } from '../../ldp/representation/Representation'; import { RepresentationMetadata } from '../../ldp/representation/RepresentationMetadata'; -import { INTERNAL_QUADS } from '../../util/ContentTypes'; +import { TEXT_TURTLE, INTERNAL_QUADS } from '../../util/ContentTypes'; import { UnsupportedHttpError } from '../../util/errors/UnsupportedHttpError'; import { checkRequest } from './ConversionUtil'; import { RepresentationConverter, RepresentationConverterArgs } from './RepresentationConverter'; @@ -12,7 +12,7 @@ import { RepresentationConverter, RepresentationConverterArgs } from './Represen */ export class TurtleToQuadConverter extends RepresentationConverter { public async canHandle(input: RepresentationConverterArgs): Promise { - checkRequest(input, [ 'text/turtle' ], [ INTERNAL_QUADS ]); + checkRequest(input, [ TEXT_TURTLE ], [ INTERNAL_QUADS ]); } public async handle(input: RepresentationConverterArgs): Promise { @@ -25,7 +25,7 @@ export class TurtleToQuadConverter extends RepresentationConverter { // Catch parsing errors and emit correct error // Node 10 requires both writableObjectMode and readableObjectMode const errorStream = new PassThrough({ writableObjectMode: true, readableObjectMode: true }); - const data = turtle.data.pipe(new StreamParser({ format: 'text/turtle', baseIRI })); + const data = turtle.data.pipe(new StreamParser({ format: TEXT_TURTLE, baseIRI })); data.pipe(errorStream); data.on('error', (error): boolean => errorStream.emit('error', new UnsupportedHttpError(error.message))); diff --git a/src/util/ContentTypes.ts b/src/util/ContentTypes.ts index 830ed54668..7623032874 100644 --- a/src/util/ContentTypes.ts +++ b/src/util/ContentTypes.ts @@ -1,2 +1,5 @@ +// Well-known content types +export const TEXT_TURTLE = 'text/turtle'; + // Internal (non-exposed) content types export const INTERNAL_QUADS = 'internal/quads'; diff --git a/src/util/MetadataController.ts b/src/util/MetadataController.ts index dcf8093c77..0ea896886c 100644 --- a/src/util/MetadataController.ts +++ b/src/util/MetadataController.ts @@ -4,6 +4,7 @@ import arrayifyStream from 'arrayify-stream'; import { DataFactory, StreamParser, StreamWriter } from 'n3'; import { NamedNode, Quad } from 'rdf-js'; import streamifyArray from 'streamify-array'; +import { TEXT_TURTLE } from '../util/ContentTypes'; import { LDP, RDF, STAT, TERMS, XML } from './Prefixes'; export const TYPE_PREDICATE = DataFactory.namedNode(`${RDF}type`); @@ -69,7 +70,7 @@ export class MetadataController { * @returns The Readable object. */ public generateReadableFromQuads(quads: Quad[]): Readable { - return streamifyArray(quads).pipe(new StreamWriter({ format: 'text/turtle' })); + return streamifyArray(quads).pipe(new StreamWriter({ format: TEXT_TURTLE })); } /** @@ -79,6 +80,6 @@ export class MetadataController { * @returns A promise containing the array of quads. */ public async generateQuadsFromReadable(readable: Readable): Promise { - return arrayifyStream(readable.pipe(new StreamParser({ format: 'text/turtle' }))); + return arrayifyStream(readable.pipe(new StreamParser({ format: TEXT_TURTLE }))); } }