Skip to content

Commit 88b430f

Browse files
committed
Move response formatting out of the consumer middlewares
1 parent 6b2ac32 commit 88b430f

File tree

9 files changed

+66
-70
lines changed

9 files changed

+66
-70
lines changed

lib/consumer/express.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ var qs = require('qs')
55
var config = require('../config')
66
var oauth1 = require('../flow/oauth1')
77
var oauth2 = require('../flow/oauth2')
8-
var response = require('../response')
98

109

1110
module.exports = function (_config) {
@@ -114,13 +113,13 @@ module.exports = function (_config) {
114113

115114
if (/^1$/.test(provider.oauth)) {
116115
oauth1.access(provider, session.request, req.query)
117-
.then(({body}) => transport(response(provider, body)))
116+
.then(transport)
118117
.catch(transport)
119118
}
120119

121120
else if (/^2$/.test(provider.oauth)) {
122121
oauth2.access(provider, req.query, session)
123-
.then(({body}) => transport(response(provider, body)))
122+
.then(transport)
124123
.catch(transport)
125124
}
126125

lib/consumer/hapi.js

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ var qs = require('qs')
55
var config = require('../config')
66
var oauth1 = require('../flow/oauth1')
77
var oauth2 = require('../flow/oauth2')
8-
var response = require('../response')
98

109

1110
module.exports = function (_config) {
@@ -113,17 +112,13 @@ module.exports = function (_config) {
113112

114113
if (/^1$/.test(provider.oauth)) {
115114
oauth1.access(provider, session.request, query)
116-
.then(({body}) => {
117-
transport(response(provider, body))
118-
})
115+
.then(transport)
119116
.catch(transport)
120117
}
121118

122119
else if (/^2$/.test(provider.oauth)) {
123120
oauth2.access(provider, query, session)
124-
.then(({body}) => {
125-
transport(response(provider, body))
126-
})
121+
.then(transport)
127122
.catch(transport)
128123
}
129124

lib/consumer/hapi17.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ var qs = require('qs')
55
var config = require('../config')
66
var oauth1 = require('../flow/oauth1')
77
var oauth2 = require('../flow/oauth2')
8-
var response = require('../response')
98

109

1110
module.exports = function (_config) {
@@ -112,8 +111,8 @@ module.exports = function (_config) {
112111

113112
if (/^1$/.test(provider.oauth)) {
114113
try {
115-
var {body} = await oauth1.access(provider, session.request, query)
116-
return transport(response(provider, body))
114+
var data = await oauth1.access(provider, session.request, query)
115+
return transport(data)
117116
}
118117
catch (err) {
119118
return transport(err)
@@ -122,8 +121,8 @@ module.exports = function (_config) {
122121

123122
else if (/^2$/.test(provider.oauth)) {
124123
try {
125-
var {body} = await oauth2.access(provider, query, session)
126-
return transport(response(provider, body))
124+
var data = await oauth2.access(provider, query, session)
125+
return transport(data)
127126
}
128127
catch (err) {
129128
return transport(err)

lib/consumer/koa.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ var qs = require('qs')
55
var config = require('../config')
66
var oauth1 = require('../flow/oauth1')
77
var oauth2 = require('../flow/oauth2')
8-
var response = require('../response')
98

109
// /:path*/connect/:provider/:override?
1110
var regex = /^(?:\/([^\\/]+?(?:\/[^\\/]+?)*))?\/connect\/([^\\/]+?)(?:\/([^\\/]+?))?(?:\/(?=$))?$/i
@@ -128,8 +127,8 @@ module.exports = function (_config) {
128127

129128
if (/^1$/.test(provider.oauth)) {
130129
try {
131-
var result = yield oauth1.access(provider, session.request, this.query)
132-
transport(response(provider, result.body))
130+
var data = yield oauth1.access(provider, session.request, this.query)
131+
transport(data)
133132
}
134133
catch (err) {
135134
transport(err)
@@ -138,8 +137,8 @@ module.exports = function (_config) {
138137

139138
else if (/^2$/.test(provider.oauth)) {
140139
try {
141-
var result = yield oauth2.access(provider, this.query, session)
142-
transport(response(provider, result.body))
140+
var data = yield oauth2.access(provider, this.query, session)
141+
transport(data)
143142
}
144143
catch (err) {
145144
transport(err)

lib/consumer/koa2.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ var qs = require('qs')
55
var config = require('../config')
66
var oauth1 = require('../flow/oauth1')
77
var oauth2 = require('../flow/oauth2')
8-
var response = require('../response')
98

109
// /:path*/connect/:provider/:override?
1110
var regex = /^(?:\/([^\\/]+?(?:\/[^\\/]+?)*))?\/connect\/([^\\/]+?)(?:\/([^\\/]+?))?(?:\/(?=$))?$/i
@@ -128,8 +127,8 @@ module.exports = function (_config) {
128127

129128
if (/^1$/.test(provider.oauth)) {
130129
try {
131-
var {body} = await oauth1.access(provider, session.request, ctx.query)
132-
transport(response(provider, body))
130+
var data = await oauth1.access(provider, session.request, ctx.query)
131+
transport(data)
133132
}
134133
catch (err) {
135134
transport(err)
@@ -138,8 +137,8 @@ module.exports = function (_config) {
138137

139138
else if (/^2$/.test(provider.oauth)) {
140139
try {
141-
var {body} = await oauth2.access(provider, ctx.query, session)
142-
transport(response(provider, body))
140+
var data = await oauth2.access(provider, ctx.query, session)
141+
transport(data)
143142
}
144143
catch (err) {
145144
transport(err)

lib/flow/oauth1.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
var qs = require('qs')
33
var request = require('../client')
44
var redirect = require('../redirect')
5+
var response = require('../response')
56

67

78
exports.request = (provider) => new Promise((resolve, reject) => {
@@ -118,11 +119,11 @@ exports.access = (provider, req, authorize) => new Promise((resolve, reject) =>
118119
options.url = options.url.replace('[subdomain]', provider.subdomain)
119120
}
120121
request(options)
121-
.then(({res, body}) => {
122+
.then(({body}) => {
122123
if (provider.intuit) {
123124
body.realmId = authorize.realmId
124125
}
125-
resolve({res, body})
126+
resolve(response(provider, body))
126127
})
127128
.catch((err) => reject({error: err.body || err.message}))
128129
})

lib/flow/oauth2.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var crypto = require('crypto')
33
var qs = require('qs')
44
var request = require('../client')
55
var redirect = require('../redirect')
6+
var response = require('../response')
67

78

89
exports.authorize = (provider) => new Promise((resolve) => {
@@ -100,6 +101,6 @@ exports.access = (provider, authorize, session) => new Promise((resolve, reject)
100101
options.url = options.url.replace('[subdomain]', provider.subdomain)
101102
}
102103
request(options)
103-
.then(resolve)
104+
.then(({body}) => resolve(response(provider, body)))
104105
.catch((err) => reject({error: err.body || err.message}))
105106
})

test/flow/oauth1.js

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,17 @@ describe('oauth1', () => {
5656
it('access', async () => {
5757
var provider = {access_url: url('/access_url'), oauth: 1}
5858
var authorize = {oauth_token: 'token'}
59-
var {body} = await oauth1.access(provider, {}, authorize)
59+
var data = await oauth1.access(provider, {}, authorize)
6060
t.deepEqual(
61-
qs.parse(body),
61+
data,
6262
{
63-
oauth_token: 'token',
64-
oauth_token_secret: 'secret',
65-
some: 'data'
63+
access_token: 'token',
64+
access_secret: 'secret',
65+
raw: {
66+
oauth_token: 'token',
67+
oauth_token_secret: 'secret',
68+
some: 'data'
69+
}
6670
}
6771
)
6872
})
@@ -382,32 +386,32 @@ describe('oauth1', () => {
382386
it('discogs', async () => {
383387
grant.config.discogs.access_url = url('/access_url')
384388
var authorize = {oauth_token: 'token'}
385-
var {body} = await oauth1.access(grant.config.discogs, {}, authorize)
386-
t.equal(body.agent, 'Grant')
389+
var data = await oauth1.access(grant.config.discogs, {}, authorize)
390+
t.equal(data.raw.agent, 'Grant')
387391
})
388392
})
389393

390394
describe('signature_method', () => {
391395
it('freshbooks', async () => {
392396
grant.config.freshbooks.access_url = url('/access_url')
393397
var authorize = {oauth_token: 'token'}
394-
var {body} = await oauth1.access(grant.config.freshbooks, {}, authorize)
395-
t.ok(/oauth_signature_method="PLAINTEXT"/.test(body.oauth))
398+
var data = await oauth1.access(grant.config.freshbooks, {}, authorize)
399+
t.ok(/oauth_signature_method="PLAINTEXT"/.test(data.raw.oauth))
396400
})
397401
})
398402

399403
describe('oauth_verifier', () => {
400404
it('goodreads', async () => {
401405
grant.config.goodreads.access_url = url('/access_url')
402406
var authorize = {oauth_token: 'token'}
403-
var {body} = await oauth1.access(grant.config.goodreads, {}, authorize)
404-
t.ok(!/verifier/.test(body.oauth))
407+
var data = await oauth1.access(grant.config.goodreads, {}, authorize)
408+
t.ok(!/verifier/.test(data.raw.oauth))
405409
})
406410
it('tripit', async () => {
407411
grant.config.tripit.access_url = url('/access_url')
408412
var authorize = {oauth_token: 'token'}
409-
var {body} = await oauth1.access(grant.config.tripit, {}, authorize)
410-
t.ok(!/verifier/.test(body.oauth))
413+
var data = await oauth1.access(grant.config.tripit, {}, authorize)
414+
t.ok(!/verifier/.test(data.raw.oauth))
411415
})
412416
})
413417

@@ -416,8 +420,8 @@ describe('oauth1', () => {
416420
grant.config.getpocket.access_url = url('/access_url')
417421
grant.config.getpocket.key = 'key'
418422
var request = {code: 'code'}
419-
var {body} = await oauth1.access(grant.config.getpocket, request, {})
420-
t.deepEqual(body, {
423+
var data = await oauth1.access(grant.config.getpocket, request, {})
424+
t.deepEqual(data.raw, {
421425
accept: 'application/x-www-form-urlencoded',
422426
form: {
423427
consumer_key: 'key',
@@ -431,17 +435,17 @@ describe('oauth1', () => {
431435
it('freshbooks', async () => {
432436
grant.config.freshbooks.access_url = url('/[subdomain]')
433437
grant.config.freshbooks.subdomain = 'access_url'
434-
var {body} = await oauth1.access(grant.config.freshbooks, {}, {oauth_token: 'token'})
435-
t.ok(/oauth_signature_method="PLAINTEXT"/.test(body.oauth))
438+
var data = await oauth1.access(grant.config.freshbooks, {}, {oauth_token: 'token'})
439+
t.ok(/oauth_signature_method="PLAINTEXT"/.test(data.raw.oauth))
436440
})
437441
})
438442

439443
describe('realmId', () => {
440444
it('intuit', async () => {
441445
grant.config.intuit.access_url = url('/access_url')
442446
var authorize = {oauth_token: 'token', realmId: '123'}
443-
var {body} = await oauth1.access(grant.config.intuit, {}, authorize)
444-
t.equal(body.realmId, '123')
447+
var data = await oauth1.access(grant.config.intuit, {}, authorize)
448+
t.equal(data.raw.realmId, '123')
445449
})
446450
})
447451

test/flow/oauth2.js

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ describe('oauth2', () => {
5252
var authorize = {
5353
code: 'code'
5454
}
55-
var {body} = await oauth2.access(provider, authorize, {})
56-
t.deepEqual(body, {
55+
var data = await oauth2.access(provider, authorize, {})
56+
t.deepEqual(data.raw, {
5757
grant_type: 'authorization_code',
5858
code: 'code',
5959
client_id: 'key',
@@ -252,14 +252,16 @@ describe('oauth2', () => {
252252
grant.config.visualstudio.access_url = url('/access_url')
253253

254254
app.post('/access_url', (req, res) => {
255-
res.writeHead(200, {'content-type': 'application/x-www-form-urlencoded'})
256255
if (req.headers.authorization) {
256+
res.writeHead(200, {'content-type': 'application/x-www-form-urlencoded'})
257257
res.end(qs.stringify({basic: req.headers.authorization}))
258258
}
259259
else if (req.url.split('?')[1]) {
260+
res.writeHead(200, {'content-type': 'application/json'})
260261
res.end(qs.stringify(req.query))
261262
}
262263
else if (req.body) {
264+
res.writeHead(200, {'content-type': 'application/x-www-form-urlencoded'})
263265
res.end(qs.stringify(req.body))
264266
}
265267
})
@@ -268,30 +270,35 @@ describe('oauth2', () => {
268270

269271
describe('web_server', () => {
270272
it('basecamp', async () => {
271-
var {body} = await oauth2.access(grant.config.basecamp, {code: 'code'}, {})
272-
t.equal(body.type, 'web_server')
273+
var data = await oauth2.access(grant.config.basecamp, {code: 'code'}, {})
274+
t.equal(data.raw.type, 'web_server')
273275
})
274276
})
275277

276278
describe('qs', () => {
277279
it('concur', async () => {
278280
grant.config.concur.key = 'key'
279281
grant.config.concur.secret = 'secret'
280-
var {body} = await oauth2.access(grant.config.concur, {code: 'code'}, {})
281-
t.deepEqual(body, {
282+
var data = await oauth2.access(grant.config.concur, {code: 'code'}, {})
283+
t.deepEqual(qs.parse(data.raw), {
282284
code: 'code', client_id: 'key', client_secret: 'secret'
283285
})
284286
})
287+
it('surveymonkey', async () => {
288+
grant.config.surveymonkey.custom_params = {api_key: 'api_key'}
289+
var data = await oauth2.access(grant.config.surveymonkey, {code: 'code'}, {})
290+
t.deepEqual(qs.parse(data.raw), {api_key: 'api_key'})
291+
})
285292
})
286293

287294
describe('basic auth', () => {
288295
;['ebay', 'fitbit2', 'homeaway', 'reddit'].forEach((provider) => {
289296
it(provider, async () => {
290297
grant.config.ebay.key = 'key'
291298
grant.config.ebay.secret = 'secret'
292-
var {body} = await oauth2.access(grant.config.ebay, {code: 'code'}, {})
299+
var data = await oauth2.access(grant.config.ebay, {code: 'code'}, {})
293300
t.deepEqual(
294-
Buffer.from(body.basic.replace('Basic ', ''), 'base64').toString().split(':'),
301+
Buffer.from(data.raw.basic.replace('Basic ', ''), 'base64').toString().split(':'),
295302
['key', 'secret']
296303
)
297304
})
@@ -300,24 +307,16 @@ describe('oauth2', () => {
300307

301308
describe('hash', () => {
302309
it('smartsheet', async () => {
303-
var {body} = await oauth2.access(grant.config.smartsheet, {code: 'code'}, {})
304-
t.ok(typeof body.hash === 'string')
305-
})
306-
})
307-
308-
describe('api_key', () => {
309-
it('surveymonkey', async () => {
310-
grant.config.surveymonkey.custom_params = {api_key: 'api_key'}
311-
var {body} = await oauth2.access(grant.config.surveymonkey, {code: 'code'}, {})
312-
t.deepEqual(body, {api_key: 'api_key'})
310+
var data = await oauth2.access(grant.config.smartsheet, {code: 'code'}, {})
311+
t.ok(typeof data.raw.hash === 'string')
313312
})
314313
})
315314

316315
describe('Assertion Framework for OAuth 2.0', () => {
317316
it('visualstudio', async () => {
318317
grant.config.visualstudio.secret = 'secret'
319-
var {body} = await oauth2.access(grant.config.visualstudio, {code: 'code'}, {})
320-
t.deepEqual(body, {
318+
var data = await oauth2.access(grant.config.visualstudio, {code: 'code'}, {})
319+
t.deepEqual(data.raw, {
321320
client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
322321
client_assertion: 'secret',
323322
grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
@@ -331,8 +330,8 @@ describe('oauth2', () => {
331330
it('shopify', async () => {
332331
grant.config.shopify.access_url = url('/[subdomain]')
333332
grant.config.shopify.subdomain = 'access_url'
334-
var {body} = await oauth2.access(grant.config.shopify, {code: 'code'}, {})
335-
t.deepEqual(body, {
333+
var data = await oauth2.access(grant.config.shopify, {code: 'code'}, {})
334+
t.deepEqual(data.raw, {
336335
grant_type: 'authorization_code',
337336
code: 'code',
338337
redirect_uri: url('/connect/shopify/callback')

0 commit comments

Comments
 (0)