Last active
November 8, 2017 23:23
-
-
Save wheresrhys/6e78dd7b5fb3fa61cdeac05461173b98 to your computer and use it in GitHub Desktop.
reckie
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Transform handlers compatible with express, lambda etc to each other | |
e.g. | |
reckie.lambdaToExpress = handler => { | |
return (req, res) => { | |
const event = eventFromRequest(req); | |
const callback = callbackFromResponse(res); | |
handler(event, null, callback); | |
} | |
} | |
const request = require('express').request; | |
function requestFromEvent (event) { | |
return { | |
// build a fake/real request object using data from the event | |
}); | |
} | |
const response = require('express').response; | |
function responseFromCallback (callback) { | |
return { | |
// set equivalents for all res methods, some of which set various props, some call callback | |
// alternatively, create a real response object, but overwrite some methods to use callback rather than http.send | |
}; | |
} | |
reckie.expressToLambda = handler => { | |
return (event, context, callback) => { | |
const req = requestFromEvent(event); | |
const res = responseFromCallback(callback); | |
handler(req, res) | |
} | |
} | |
serverless.helloWorld = reckie.expressToLambda((req, res) => { | |
res.send({hello: 'world'}); | |
}) | |
express.get('/hello', reckie.lambdaToExpress((event, context, callback) => { | |
callback(null, {body:{hello: 'world'}}); | |
}) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// problem is what about middleware | |
serverlexpress(app) | |
// does job similar to supertest (nned to look into how that works) | |
// sets up the app with all middleware and so forth | |
// but doesn't bind to port | |
// So in lambda we define | |
const app = serverlexpress(app); | |
handlers.hello = app; | |
handlers.goodbye = app; | |
// alternative names | |
// lambdexpress exless exl |
Author
wheresrhys
commented
Nov 8, 2017
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment