swagger-router
Advanced tools
Comparing version 0.4.2 to 0.4.3
@@ -8,2 +8,3 @@ "use strict"; | ||
var expressionCompiler = require('template-expression-compiler'); | ||
var utils = require('./utils'); | ||
@@ -99,2 +100,47 @@ var compilerOptions = { | ||
/** | ||
* Formats a date in a requested format | ||
* | ||
* @param date date to format | ||
* @param [format] optional format, defaults to RFC 822 format | ||
*/ | ||
date: function(date, format) { | ||
function isValidDate(d) { | ||
if (d.constructor !== Date) { | ||
return false; | ||
} | ||
return !isNaN(d.getTime()); | ||
} | ||
format = format || 'rfc822'; | ||
if (!isValidDate(date)) { | ||
var origDate = date; | ||
if (typeof date === 'string') { | ||
// It's a string, but may be it's just a stringified timestamp. | ||
// Check if it actually is. | ||
var tempNumDate = parseInt(date); | ||
if (!Number.isNaN(tempNumDate)) { | ||
date = tempNumDate; | ||
} | ||
} | ||
date = new Date(date); | ||
if (!isValidDate(date)) { | ||
throw new Error('Invalid date: ' + origDate); | ||
} | ||
} | ||
switch (format) { | ||
case 'rfc822': | ||
return utils.toRFC822Date(date); | ||
case 'iso': | ||
return date.toISOString(); | ||
default: | ||
throw new Error('Unsupported date format: ' + format); | ||
} | ||
}, | ||
// Private helpers | ||
@@ -101,0 +147,0 @@ _optionalPath: function(element) { |
@@ -113,2 +113,23 @@ "use strict"; | ||
module.exports = utils; | ||
utils.toRFC822Date = function(date) { | ||
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', | ||
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; | ||
var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; | ||
function numpad(x, digits) { | ||
var result = Math.floor(x).toString(); | ||
while (result.length < digits) { | ||
result = '0' + result; | ||
} | ||
return result; | ||
} | ||
return days[date.getUTCDay()] + ", " | ||
+ numpad(date.getUTCDate(), 2) + " " | ||
+ months[date.getUTCMonth()] + " " | ||
+ date.getUTCFullYear() + " " | ||
+ numpad(date.getUTCHours(), 2) + ":" | ||
+ numpad(date.getUTCMinutes(), 2) + ":" | ||
+ numpad(date.getUTCSeconds(), 2) + " +0000"; | ||
}; | ||
module.exports = utils; |
{ | ||
"name": "swagger-router", | ||
"version": "0.4.2", | ||
"version": "0.4.3", | ||
"description": "An efficient swagger 2 based router with support for multiple APIs. For use in RESTBase.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -550,2 +550,24 @@ "use strict"; | ||
}); | ||
it('should support date formats', function() { | ||
var template = new Template({ | ||
body: { | ||
date_iso: '{{date(request.body.date, "iso")}}', | ||
date_rfc822: '{{date(request.body.date)}}' | ||
} | ||
}); | ||
var result = template.expand({ | ||
request: { | ||
body: { | ||
date: '1234' | ||
} | ||
} | ||
}); | ||
assert.deepEqual(result, { | ||
body: { | ||
date_iso: '1970-01-01T00:00:01.234Z', | ||
date_rfc822: 'Thu, 01 Jan 1970 00:00:01 +0000' | ||
} | ||
}); | ||
}); | ||
}); |
90700
2115