From 458f6ee323cc3f7579c14954ce319203c46473b9 Mon Sep 17 00:00:00 2001 From: keenwon Date: Wed, 7 Sep 2016 16:37:48 +0800 Subject: [PATCH] =?UTF-8?q?callbackFn=E7=B1=BB=E5=9E=8B=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/jsonp.js | 17 ++++++++++++----- test/jsonp.spec.js | 10 ++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/lib/jsonp.js b/lib/jsonp.js index d19473e..9b0e452 100644 --- a/lib/jsonp.js +++ b/lib/jsonp.js @@ -3,17 +3,20 @@ const debug = require('debug')('koa-jsonp'); const assert = require('assert'); -const defaultOptions = { - callbackFn: 'callback' -}; +const defaultcallbackFn = 'callback'; module.exports = jsonp; function jsonp(app, options = {}) { assert(app && app.constructor.name === 'Application', 'app is must be an instance of koa'); - const opts = Object.assign({}, defaultOptions, options); - const callbackFn = opts.callbackFn; + var callbackFn; + if (options.callbackFn) { + assert(isString(options.callbackFn), 'callbackFn must be string'); + callbackFn = options.callbackFn; + } else { + callbackFn = defaultcallbackFn; + } app.context.jsonp = function (data) { var callback = this.query[callbackFn]; @@ -25,4 +28,8 @@ function jsonp(app, options = {}) { this.type = 'application/json'; this.body = `${callback}(${JSON.stringify(data)})`; } +} + +function isString(str) { + return Object.prototype.toString.call(str) === '[object String]'; } \ No newline at end of file diff --git a/test/jsonp.spec.js b/test/jsonp.spec.js index f57659f..f79469b 100644 --- a/test/jsonp.spec.js +++ b/test/jsonp.spec.js @@ -93,6 +93,16 @@ describe('koa-json测试', function () { .equal('Not Found'); }); + it('callback测试:callback类型错误', function () { + (function () { + const app = koa(); + + jsonp(app, { + callbackFn: true + }); + }).should.throw('callbackFn must be string'); + }); + it('callback测试:自定义callback', function () { const app = koa();