Skip to content

Commit b515e85

Browse files
author
Martin Martinez Rivera
committed
Added meta and acl links and basic tests.
1 parent cc4e3a7 commit b515e85

3 files changed

Lines changed: 65 additions & 2 deletions

File tree

fileStore.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ var fs = require('fs');
55
var path = require('path');
66
var S = require('string');
77

8+
var turtleExtension = ".ttl";
9+
810
function uriToFilename(uri, base) {
911
var filename = path.join(base, uri);
1012
// Make sure filename ends with '/' if filename exists and is a directory.
@@ -38,8 +40,20 @@ function uriBase(req) {
3840
return uriAbs(req) + (req.baseUrl || '');
3941
}
4042

43+
function getResourceLink(filename, uri, base, suffix, otherSuffix) {
44+
var link = filenameToBaseUri(filename, uri, base);
45+
if (S(link).endsWith(suffix)) {
46+
return link;
47+
} else if (S(link).endsWith(otherSuffix)) {
48+
return S(link).chompRight(otherSuffix).s + suffix;
49+
} else {
50+
return link+suffix;
51+
}
52+
}
53+
4154
exports.uriToFilename = uriToFilename;
4255
exports.uriToRelativeFilename = uriToRelativeFilename;
4356
exports.filenameToBaseUri = filenameToBaseUri;
4457
exports.uriAbs = uriAbs;
45-
exports.uriBase = uriBase;
58+
exports.uriBase = uriBase;
59+
exports.getResourceLink = getResourceLink;

handlers/get.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ function get(req, res, includeBody) {
5252
}
5353

5454
var filename = file.uriToFilename(req.path, options.root);
55+
var baseUri = file.uriBase(req);
56+
var aclLink = file.getResourceLink(filename, baseUri,
57+
options.root, options.suffixAcl,
58+
metaExtension);
59+
var metaLink = file.getResourceLink(filename, baseUri,
60+
options.root, metaExtension,
61+
options.suffixAcl);
62+
header.addLink(res, aclLink, 'acl');
63+
header.addLink(res, metaLink, 'describedBy');
5564

5665
// Check if file exists
5766
fs.stat(filename, function(err, stats) {

test/http.js

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var path = require('path');
44
var ldnode = require('../index');
55
var fs = require('fs');
66
var S = require('string');
7+
var li = require('li');
78

89
describe('HTTP APIs', function() {
910
var address = 'http://localhost:3457';
@@ -50,13 +51,52 @@ describe('HTTP APIs', function() {
5051

5152
describe('HEAD API', function() {
5253
var emptyResponse = function(res) {
53-
return 0 !== res.text.length;
54+
if (res.text.length !== 0) {
55+
error("Not empty response");
56+
}
57+
};
58+
var getLink= function(res, rel) {
59+
var links = res.headers.link.split(',');
60+
for (var linkIndex in links) {
61+
var link = links[linkIndex];
62+
var parsedLink = li.parse(link);
63+
for (var linkRel in parsedLink) {
64+
if (linkRel == rel) {
65+
return parsedLink[rel];
66+
}
67+
}
68+
}
69+
return undefined;
70+
};
71+
var hasHeader = function(rel, value) {
72+
var handler = function(res) {
73+
var link = getLink(res, rel);
74+
if (link) {
75+
if (link !== value) {
76+
error("Not same value");
77+
}
78+
} else {
79+
error("Header does not exist");
80+
}
81+
};
82+
return handler;
5483
};
5584
it('Should return empty response body', function(done) {
5685
server.head('/patch-5-initial.ttl')
5786
.expect(emptyResponse)
5887
.expect(200, done);
5988
});
89+
it('Should return meta header', function(done) {
90+
server.head('/')
91+
.expect(hasHeader('\'describedBy\'', address + '/' + '.meta'))
92+
.expect(200, done);
93+
});
94+
it('Should return acl header', function(done) {
95+
server.head('/')
96+
.expect(hasHeader('\'acl\'', address + '/' + '.acl'))
97+
.expect(200, done);
98+
});
99+
60100
});
61101

62102
describe('PUT API', function() {

0 commit comments

Comments
 (0)