@@ -10,168 +10,13 @@ var mkdirp = require('fs-extra').mkdirp
1010var uuid = require ( 'node-uuid' )
1111var debug = require ( './debug' )
1212var utils = require ( './utils' )
13- var ns = require ( './vocab/ns' ) . ns
1413var error = require ( './http-error' )
1514var stringToStream = require ( './utils' ) . stringToStream
1615var serialize = require ( './utils' ) . serialize
1716var extend = require ( 'extend' )
1817var doWhilst = require ( 'async' ) . doWhilst
1918var rimraf = require ( 'rimraf' )
20- var turtleExtension = '.ttl'
21-
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- }
19+ var ldpContainer = require ( './ldp-container' )
17520
17621function LDP ( argv ) {
17722 argv = argv || { }
@@ -298,18 +143,18 @@ LDP.prototype.listContainer = function (filename, uri, containerData,
298143 async . waterfall ( [
299144 // add container stats
300145 function ( next ) {
301- addContainerStats ( ldp , filename , resourceGraph , next )
146+ ldpContainer . addContainerStats ( ldp , filename , resourceGraph , next )
302147 } ,
303148 // reading directory
304149 function ( next ) {
305- readdir ( filename , next )
150+ ldpContainer . readdir ( filename , next )
306151 } ,
307152 // Iterate through all the files
308153 function ( files , next ) {
309154 async . each (
310155 files ,
311156 function ( file , cb ) {
312- addFile ( ldp , resourceGraph , baseUri , uri , filename , file , cb )
157+ ldpContainer . addFile ( ldp , resourceGraph , baseUri , uri , filename , file , cb )
313158 } ,
314159 next )
315160 }
0 commit comments