Skip to content

Commit 23a656d

Browse files
committed
metadata and container into ldp.js
1 parent 5037636 commit 23a656d

7 files changed

Lines changed: 221 additions & 232 deletions

File tree

container.js

Lines changed: 0 additions & 121 deletions
This file was deleted.

handlers/delete.js

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,42 +10,22 @@ var metadata = require('../metadata.js');
1010
function handler(req, res) {
1111
debug('DELETE -- ' + req.originalUrl);
1212

13-
var options = req.app.locals.ldp;
14-
var filename = file.uriToFilename(req.path, options.root);
13+
var ldp = req.app.locals.ldp;
14+
var filename = file.uriToFilename(req.path, ldp.root);
1515

16-
// Check if resource exist
17-
fs.stat(filename, function(err, stats) {
16+
ldp.delete(filename, function(err) {
1817
if (err) {
19-
debug("DELETE -- stat() error: " + err);
20-
return res.status(404).send("Can't delete file: " + err);
18+
debug("DELETE -- error: " + err);
19+
return res
20+
.status(err.status)
21+
.send(err.message);
2122
}
2223

23-
if (stats.isDirectory()) {
24-
// Delete container
25-
metadata.deleteContainerMetadata(filename, containerCallback);
26-
} else {
27-
// Delete resource
28-
fs.unlink(filename, fileCallback);
29-
}
30-
});
24+
debug("DELETE -- Ok.");
25+
return res.sendStatus(200);
3126

32-
function fileCallback(err) {
33-
if (err) {
34-
debug("DELETE -- unlink() error: " + err);
35-
return res.status(404).send("Can't delete file: " + err);
36-
}
37-
debug("DELETE -- Ok. Bytes deleted: " + req.text.length);
38-
res.sendStatus(200);
39-
}
27+
});
4028

41-
function containerCallback(err) {
42-
if (err) {
43-
debug("DELETE -- unlink() error: " + err);
44-
return res.status(404).send("Can't delete container: " + err);
45-
}
46-
debug("DELETE -- Ok.");
47-
res.sendStatus(200);
48-
}
4929
}
5030

5131
exports.handler = handler;

handlers/post.js

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ var $rdf = require('rdflib');
66
var S = require('string');
77

88
var debug = require('../logging').handlers;
9-
var container = require('../container.js');
109
var file = require('../fileStore.js');
1110
var header = require('../header.js');
1211
var metadata = require('../metadata.js');
@@ -16,7 +15,7 @@ var ldpVocab = require('../vocab/ldp.js');
1615
var rdfVocab = require('../vocab/rdf.js');
1716

1817
function handler(req, res) {
19-
var options = req.app.locals.ldp;
18+
var ldp = req.app.locals.ldp;
2019
var contentType = req.get('content-type');
2120

2221
// Handle SPARQL query
@@ -43,7 +42,7 @@ function handler(req, res) {
4342
}
4443

4544

46-
var containerPath = file.uriToFilename(req.path, options.root);
45+
var containerPath = file.uriToFilename(req.path, ldp.root);
4746
debug("POST -- Container path: " + containerPath);
4847

4948
// Not a container
@@ -58,14 +57,13 @@ function handler(req, res) {
5857
var resourceMetadata = header.parseMetadataFromHeader(req.get('Link'));
5958

6059
// Create resource
61-
var resourcePath = container.createResourceUri(
62-
options,
60+
var resourcePath = ldp.createResourceUri(
6361
containerPath,
6462
req.get('Slug'),
6563
resourceMetadata.isBasicContainer);
6664

6765
if (resourcePath === null) {
68-
container.releaseResourceUri(options.usedURIs, resourcePath);
66+
ldp.releaseResourceUri(resourcePath);
6967
debug("POST -- URI already exists or in use");
7068
return res.sendStatus(400);
7169
}
@@ -76,7 +74,7 @@ function handler(req, res) {
7674
var resourceBaseUri = file.filenameToBaseUri(
7775
resourcePath,
7876
uri,
79-
options.root);
77+
ldp.root);
8078

8179
try {
8280
$rdf.parse(
@@ -86,7 +84,7 @@ function handler(req, res) {
8684
contentType);
8785
} catch (parseErr) {
8886
debug("POST -- Error parsing resource: " + parseErr);
89-
container.releaseResourceUri(options.usedURIs, resourcePath);
87+
ldp.releaseResourceUri(resourcePath);
9088
return res.sendStatus(400);
9189
}
9290

@@ -95,16 +93,14 @@ function handler(req, res) {
9593
if (resourceMetadata.isBasicContainer) {
9694
resourcePath += '/';
9795
resourceBaseUri += '/';
98-
container.createNewContainer(
99-
options.usedURIs,
96+
ldp.createNewContainer(
10097
uri,
10198
resourcePath,
10299
resourceGraph,
103100
containerCallback);
104101
} else {
105-
container.createNewResource(
106-
options.usedURIs,
107-
options.root,
102+
ldp.createNewResource(
103+
ldp.root,
108104
uri,
109105
resourcePath,
110106
resourceGraph,

header.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
var li = require('li');
22

3+
var path = require('path');
4+
var S = require('string');
35
var metadata = require('./metadata.js');
6+
var file = require('./fileStore.js');
47
var ldpVocab = require('./vocab/ldp.js');
58

69
function addLink(res, value, rel) {
@@ -25,6 +28,26 @@ function addLinks(res, fileMetadata) {
2528
addLink(res, ldpVocab.DirectContainer, 'type');
2629
}
2730

31+
function linksHandler(req, res, next) {
32+
var ldp = req.app.locals.ldp;
33+
var filename = file.uriToFilename(req.url, ldp.root);
34+
35+
filename = path.join(filename, req.path);
36+
if (ldp.isMetadataFile(filename)) {
37+
debug.metadata("Trying to access metadata file as regular file.");
38+
return res.send(404);
39+
}
40+
var fileMetadata = new metadata.Metadata();
41+
if (S(filename).endsWith('/')) {
42+
fileMetadata.isContainer = true;
43+
fileMetadata.isBasicContainer = true;
44+
} else {
45+
fileMetadata.isResource = true;
46+
}
47+
addLinks(res, fileMetadata);
48+
next();
49+
}
50+
2851
function parseMetadataFromHeader(linkHeader) {
2952
var fileMetadata = new metadata.Metadata();
3053
if (linkHeader === undefined)
@@ -79,3 +102,4 @@ module.exports.addLink = addLink;
79102
module.exports.addLinks = addLinks;
80103
module.exports.parseMetadataFromHeader = parseMetadataFromHeader;
81104
module.exports.parseAcceptHeader = parseAcceptHeader;
105+
module.exports.linksHandler = linksHandler;

index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ var uuid = require('node-uuid');
2121
// ldnode dependencies
2222
var acl = require('./acl.js');
2323
var metadata = require('./metadata.js');
24+
var header = require('./header.js');
2425
var LDP = require('./ldp.js');
2526
var login = require('./login.js');
26-
var container = require('./container.js');
2727
var parse = require('./parse.js');
2828

2929
// Request handlers
@@ -164,7 +164,7 @@ function routes () {
164164
// Convert json-ld and nquads to turtle
165165
router.use('/*', parse.parseHandler);
166166
// Add links headers
167-
router.use(metadata.linksHandler);
167+
router.use(header.linksHandler);
168168
// Add response time
169169
router.use(responseTime());
170170

0 commit comments

Comments
 (0)