Skip to content

Commit

Permalink
refactor: Introduce TEXT_TURTLE constant
Browse files Browse the repository at this point in the history
  • Loading branch information
RubenVerborgh authored and joachimvh committed Sep 3, 2020
1 parent 85e3117 commit ee3b847
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 11 deletions.
3 changes: 2 additions & 1 deletion src/init/Setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';

/**
Expand Down Expand Up @@ -56,7 +57,7 @@ export class Setup {
metadata: {
raw: [],
profiles: [],
contentType: 'text/turtle',
contentType: TEXT_TURTLE,
},
},
);
Expand Down
3 changes: 2 additions & 1 deletion src/storage/InMemoryResourceStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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 },
},
};
}
Expand Down
8 changes: 4 additions & 4 deletions src/storage/conversion/QuadToTurtleConverter.ts
Original file line number Diff line number Diff line change
@@ -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';

Expand All @@ -10,18 +10,18 @@ import { RepresentationConverter, RepresentationConverterArgs } from './Represen
*/
export class QuadToTurtleConverter extends RepresentationConverter {
public async canHandle(input: RepresentationConverterArgs): Promise<void> {
checkRequest(input, [ INTERNAL_QUADS ], [ 'text/turtle' ]);
checkRequest(input, [ INTERNAL_QUADS ], [ TEXT_TURTLE ]);
}

public async handle(input: RepresentationConverterArgs): Promise<Representation> {
return this.quadsToTurtle(input.representation);
}

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,
};
}
Expand Down
6 changes: 3 additions & 3 deletions src/storage/conversion/TurtleToQuadConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -12,7 +12,7 @@ import { RepresentationConverter, RepresentationConverterArgs } from './Represen
*/
export class TurtleToQuadConverter extends RepresentationConverter {
public async canHandle(input: RepresentationConverterArgs): Promise<void> {
checkRequest(input, [ 'text/turtle' ], [ INTERNAL_QUADS ]);
checkRequest(input, [ TEXT_TURTLE ], [ INTERNAL_QUADS ]);
}

public async handle(input: RepresentationConverterArgs): Promise<Representation> {
Expand All @@ -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)));

Expand Down
3 changes: 3 additions & 0 deletions src/util/ContentTypes.ts
Original file line number Diff line number Diff line change
@@ -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';
5 changes: 3 additions & 2 deletions src/util/MetadataController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`);
Expand Down Expand Up @@ -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 }));
}

/**
Expand All @@ -79,6 +80,6 @@ export class MetadataController {
* @returns A promise containing the array of quads.
*/
public async generateQuadsFromReadable(readable: Readable): Promise<Quad[]> {
return arrayifyStream(readable.pipe(new StreamParser({ format: 'text/turtle' })));
return arrayifyStream(readable.pipe(new StreamParser({ format: TEXT_TURTLE })));
}
}

0 comments on commit ee3b847

Please sign in to comment.