diff --git a/lib/expressroutes.js b/lib/expressroutes.js index a24ee68..8c0e57f 100644 --- a/lib/expressroutes.js +++ b/lib/expressroutes.js @@ -23,6 +23,23 @@ function defaultAccessor(dataLoc) { }; } +function pullFile(req, key) { + if (req.file) { + return req.file; + } + if (Array.isArray(req.files)) { + for (var i = 0; i < req.files.length; ++i) { + if (req.files[i].fieldname === key) { + return req.files[i]; + } + } + } + if (req.files) { + return req.files[key]; + } + return null; +} + function valueAccessor(param, consumes) { if (param.in === 'path') { return defaultAccessor('params'); @@ -53,23 +70,26 @@ function valueAccessor(param, consumes) { if (param.in === 'formData') { return { get: function(req, key) { - var file = req.file || Array.isArray(req.files) && req.files[0]; - if (param.type === 'file' && - !thing.isNullOrUndefined(file.fieldname) && - file.fieldname === key) { + if (param.type === 'file') { + var file = pullFile(req, key); - if (file.buffer) { + if(!file) { + return undefined; + } + + if(file.buffer || file.data) { // when using InMemory option you get back a raw Buffer // convert to binary string so that validator does not fail // based on type. - return file.buffer.toString('binary'); + return (file.buffer || file.data).toString('binary'); } + return file.path; } return req.body[key]; }, set: function(req, key, val) { - req.body[key] = param.type === 'file' ? val.value : val; + req.body[key] = param.type === 'file' ? (val && val.value || val) : val; } }; } diff --git a/package.json b/package.json index 293e5b0..814afcb 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,11 @@ { "name": "swaggerize-express", - "version": "4.0.6", + "version": "4.1.0", "author": "Trevor Livingston ", "contributors": [ "Trevor Livingston ", - "Subeesh Chothendavida " + "Subeesh Chothendavida ", + "Adam McCormick " ], "description": "Design-driven apis with swagger 2.0 and express.", "keywords": [ @@ -24,9 +25,9 @@ "main": "./lib/index", "repository": { "type": "git", - "url": "git://github.com/krakenjs/swaggerize-express.git" + "url": "git://github.com/SinclairDigital/swaggerize-express.git" }, - "bugs": "http://github.com/krakenjs/swaggerize-express/issues", + "bugs": "http://github.com/SinclairDigital/swaggerize-express/issues", "engines": { "node": "<=4.x" },