TurtleIO.prototype.write = function ( req, res, path ) {
var self = this,
put = ( req.method === "PUT" ),
body = req.body,
allow = this.allows( req.url ),
del = this.allowed( "DELETE", req.url ),
status;
if ( !put && $.regex.endslash.test( req.url ) ) {
status = del ? this.codes.CONFLICT : this.codes.SERVER_ERROR;
this.respond( req, res, this.page( status, this.hostname( req ) ), status, {Allow: allow}, false );
}
else {
allow = allow.explode().remove( "POST" ).join( ", " );
fs.lstat( path, function ( e, stat ) {
if ( e ) {
self.error( req, res, self.codes.NOT_FOUND );
}
else {
var etag = "\"" + self.etag( req.parsed.href, stat.size, stat.mtime ) + "\"";
if ( !req.headers.hasOwnProperty( "etag" ) || req.headers.etag === etag ) {
fs.writeFile( path, body, function ( e ) {
if ( e ) {
self.error( req, req, self.codes.SERVER_ERROR );
}
else {
status = put ? self.codes.NO_CONTENT : self.codes.CREATED;
self.respond( req, res, self.page( status, self.hostname( req ) ), status, {Allow: allow}, false );
}
} );
}
else if ( req.headers.etag !== etag ) {
self.respond( req, res, self.messages.NO_CONTENT, self.codes.FAILED, {}, false );
}
}
} );
}
return this;
};
Method write
Writes files to disk
Parameters:
req must be an Object.
(HTTP request Object)
res must be an Object.
(HTTP response Object)
path must be a String.
(File path)
Returns an Object
(TurtleIO instance)