Skip to content

Commit c1c70d8

Browse files
Extract nested inner functions to module scope
1 parent ec35970 commit c1c70d8

File tree

1 file changed

+155
-152
lines changed

1 file changed

+155
-152
lines changed

lib/ldp.js

Lines changed: 155 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,160 @@ var doWhilst = require('async').doWhilst
1919
var rimraf = require('rimraf')
2020
var turtleExtension = '.ttl'
2121

22+
function addContainerStats (ldp, filename, resourceGraph, next) {
23+
ldp.stat(filename, function (err, containerStats) {
24+
if (!err) {
25+
addStats(resourceGraph, '', containerStats)
26+
resourceGraph.add(
27+
resourceGraph.sym(''),
28+
ns.rdf('type'),
29+
ns.ldp('BasicContainer'))
30+
31+
resourceGraph.add(
32+
resourceGraph.sym(''),
33+
ns.rdf('type'),
34+
ns.ldp('Container'))
35+
}
36+
next()
37+
})
38+
}
39+
40+
function addFile (ldp, resourceGraph, baseUri, uri, container, file, callback) {
41+
// Skip .meta and .acl
42+
if (S(file).endsWith(ldp.suffixMeta) || S(file).endsWith(ldp.suffixAcl)) {
43+
return callback(null)
44+
}
45+
46+
// Get file stats
47+
ldp.stat(container + file, function (err, stats) {
48+
if (err) {
49+
// File does not exist, skip
50+
return callback(null)
51+
}
52+
53+
var fileSubject = file + (stats.isDirectory() ? '/' : '')
54+
// var fileBaseUri = utils.filenameToBaseUri(fileSubject, uri, root)
55+
56+
// Add fileStats to resource Graph
57+
addStats(resourceGraph, fileSubject, stats)
58+
59+
// Add to `contains` list
60+
resourceGraph.add(
61+
resourceGraph.sym(''),
62+
ns.ldp('contains'),
63+
resourceGraph.sym(fileSubject))
64+
65+
// Set up a metaFile path
66+
var metaFile = container + file +
67+
(stats.isDirectory() ? '/' : '') +
68+
(S(file).endsWith(turtleExtension) ? '' : ldp.suffixMeta)
69+
70+
getMetadataGraph(ldp, metaFile, baseUri, function (err, metadataGraph) {
71+
if (err) {
72+
metadataGraph = $rdf.graph()
73+
}
74+
75+
// Add Container or BasicContainer types
76+
if (stats.isDirectory()) {
77+
resourceGraph.add(
78+
metadataGraph.sym(fileSubject),
79+
ns.rdf('type'),
80+
ns.ldp('BasicContainer'))
81+
82+
resourceGraph.add(
83+
metadataGraph.sym(fileSubject),
84+
ns.rdf('type'),
85+
ns.ldp('Container'))
86+
}
87+
// Add generic LDP type
88+
resourceGraph.add(
89+
metadataGraph.sym(fileSubject),
90+
ns.rdf('type'),
91+
ns.ldp('Resource'))
92+
93+
// Add type from metadataGraph
94+
metadataGraph
95+
.statementsMatching(
96+
metadataGraph.sym(baseUri),
97+
ns.rdf('type'),
98+
undefined)
99+
.forEach(function (typeStatement) {
100+
// If the current is a file and its type is BasicContainer,
101+
// This is not possible, so do not infer its type!
102+
if (
103+
(
104+
typeStatement.object.uri !== ns.ldp('BasicContainer').uri &&
105+
typeStatement.object.uri !== ns.ldp('Container').uri
106+
) ||
107+
!stats.isFile()
108+
) {
109+
resourceGraph.add(
110+
resourceGraph.sym(fileSubject),
111+
typeStatement.predicate,
112+
typeStatement.object)
113+
}
114+
})
115+
116+
return callback(null)
117+
})
118+
})
119+
}
120+
121+
function addStats (resourceGraph, baseUri, stats) {
122+
resourceGraph.add(
123+
resourceGraph.sym(baseUri),
124+
ns.stat('mtime'),
125+
stats.mtime.getTime() / 1000)
126+
127+
resourceGraph.add(
128+
resourceGraph.sym(baseUri),
129+
ns.stat('size'),
130+
stats.size)
131+
}
132+
133+
function readdir (filename, callback) {
134+
debug.handlers('GET -- Reading directory')
135+
fs.readdir(filename, function (err, files) {
136+
if (err) {
137+
debug.handlers('GET -- Error reading files: ' + err)
138+
return callback(error(err, 'Can\'t read container'))
139+
}
140+
141+
debug.handlers('Files in directory: ' + files)
142+
return callback(null, files)
143+
})
144+
}
145+
146+
function getMetadataGraph (ldp, metaFile, fileBaseUri, callback) {
147+
ldp.stat(metaFile, function (err, metaStats) {
148+
if (err) {
149+
return callback(err)
150+
}
151+
152+
if (metaStats && metaStats.isFile()) {
153+
ldp.readFile(metaFile, function (err, rawMetadata) {
154+
if (err) {
155+
return callback(err)
156+
}
157+
158+
var metadataGraph = $rdf.graph()
159+
try {
160+
$rdf.parse(
161+
rawMetadata,
162+
metadataGraph,
163+
fileBaseUri,
164+
'text/turtle')
165+
} catch (dirErr) {
166+
return callback(error(err, 'Can\'t parse container metadata'))
167+
}
168+
return callback(null, metadataGraph)
169+
})
170+
} else {
171+
return callback(null, $rdf.graph())
172+
}
173+
})
174+
}
175+
22176
function LDP (argv) {
23177
argv = argv || {}
24178
extend(this, argv)
@@ -131,143 +285,6 @@ LDP.prototype.listContainer = function (filename, uri, containerData,
131285
var host = url.parse(uri).hostname
132286
var root = !ldp.idp ? ldp.root : ldp.root + host + '/'
133287

134-
function addStats (resourceGraph, baseUri, stats) {
135-
resourceGraph.add(
136-
resourceGraph.sym(baseUri),
137-
ns.stat('mtime'),
138-
stats.mtime.getTime() / 1000)
139-
140-
resourceGraph.add(
141-
resourceGraph.sym(baseUri),
142-
ns.stat('size'),
143-
stats.size)
144-
}
145-
146-
function readdir (filename, callback) {
147-
debug.handlers('GET -- Reading directory')
148-
fs.readdir(filename, function (err, files) {
149-
if (err) {
150-
debug.handlers('GET -- Error reading files: ' + err)
151-
return callback(error(err, 'Can\'t read container'))
152-
}
153-
154-
debug.handlers('Files in directory: ' + files)
155-
return callback(null, files)
156-
})
157-
}
158-
159-
function getMetadataGraph (metaFile, fileBaseUri, callback) {
160-
ldp.stat(metaFile, function (err, metaStats) {
161-
if (err) {
162-
return callback(err)
163-
}
164-
165-
if (metaStats && metaStats.isFile()) {
166-
ldp.readFile(metaFile, function (err, rawMetadata) {
167-
if (err) {
168-
return callback(err)
169-
}
170-
171-
var metadataGraph = $rdf.graph()
172-
try {
173-
$rdf.parse(
174-
rawMetadata,
175-
metadataGraph,
176-
fileBaseUri,
177-
'text/turtle')
178-
} catch (dirErr) {
179-
return callback(error(err, 'Can\'t parse container metadata'))
180-
}
181-
return callback(null, metadataGraph)
182-
})
183-
} else {
184-
return callback(null, $rdf.graph())
185-
}
186-
})
187-
}
188-
189-
function addFile (ldp, resourceGraph, baseUri, uri, container, file,
190-
callback) {
191-
// Skip .meta and .acl
192-
if (S(file).endsWith(ldp.suffixMeta) || S(file).endsWith(ldp.suffixAcl)) {
193-
return callback(null)
194-
}
195-
196-
// Get file stats
197-
ldp.stat(container + file, function (err, stats) {
198-
if (err) {
199-
// File does not exist, skip
200-
return callback(null)
201-
}
202-
203-
var fileSubject = file + (stats.isDirectory() ? '/' : '')
204-
// var fileBaseUri = utils.filenameToBaseUri(fileSubject, uri, root)
205-
206-
// Add fileStats to resource Graph
207-
addStats(resourceGraph, fileSubject, stats)
208-
209-
// Add to `contains` list
210-
resourceGraph.add(
211-
resourceGraph.sym(''),
212-
ns.ldp('contains'),
213-
resourceGraph.sym(fileSubject))
214-
215-
// Set up a metaFile path
216-
var metaFile = container + file +
217-
(stats.isDirectory() ? '/' : '') +
218-
(S(file).endsWith(turtleExtension) ? '' : ldp.suffixMeta)
219-
220-
getMetadataGraph(metaFile, baseUri, function (err, metadataGraph) {
221-
if (err) {
222-
metadataGraph = $rdf.graph()
223-
}
224-
225-
// Add Container or BasicContainer types
226-
if (stats.isDirectory()) {
227-
resourceGraph.add(
228-
metadataGraph.sym(fileSubject),
229-
ns.rdf('type'),
230-
ns.ldp('BasicContainer'))
231-
232-
resourceGraph.add(
233-
metadataGraph.sym(fileSubject),
234-
ns.rdf('type'),
235-
ns.ldp('Container'))
236-
}
237-
// Add generic LDP type
238-
resourceGraph.add(
239-
metadataGraph.sym(fileSubject),
240-
ns.rdf('type'),
241-
ns.ldp('Resource'))
242-
243-
// Add type from metadataGraph
244-
metadataGraph
245-
.statementsMatching(
246-
metadataGraph.sym(baseUri),
247-
ns.rdf('type'),
248-
undefined)
249-
.forEach(function (typeStatement) {
250-
// If the current is a file and its type is BasicContainer,
251-
// This is not possible, so do not infer its type!
252-
if (
253-
(
254-
typeStatement.object.uri !== ns.ldp('BasicContainer').uri &&
255-
typeStatement.object.uri !== ns.ldp('Container').uri
256-
) ||
257-
!stats.isFile()
258-
) {
259-
resourceGraph.add(
260-
resourceGraph.sym(fileSubject),
261-
typeStatement.predicate,
262-
typeStatement.object)
263-
}
264-
})
265-
266-
return callback(null)
267-
})
268-
})
269-
}
270-
271288
var baseUri = utils.filenameToBaseUri(filename, uri, root)
272289
var resourceGraph = $rdf.graph()
273290

@@ -281,21 +298,7 @@ LDP.prototype.listContainer = function (filename, uri, containerData,
281298
async.waterfall([
282299
// add container stats
283300
function (next) {
284-
ldp.stat(filename, function (err, containerStats) {
285-
if (!err) {
286-
addStats(resourceGraph, '', containerStats)
287-
resourceGraph.add(
288-
resourceGraph.sym(''),
289-
ns.rdf('type'),
290-
ns.ldp('BasicContainer'))
291-
292-
resourceGraph.add(
293-
resourceGraph.sym(''),
294-
ns.rdf('type'),
295-
ns.ldp('Container'))
296-
}
297-
next()
298-
})
301+
addContainerStats(ldp, filename, resourceGraph, next)
299302
},
300303
// reading directory
301304
function (next) {

0 commit comments

Comments
 (0)