TimothyJones/github-openid-wrapper

View on GitHub
src/connectors/lambda/token.js

Summary

Maintainability
A
0 mins
Test Coverage
const qs = require('querystring');
const responder = require('./util/responder');
const auth = require('./util/auth');
const controllers = require('../controllers');

const parseBody = (event) => {
  const contentType = event.headers['Content-Type'];
  if (event.body) {
    if (contentType.startsWith('application/x-www-form-urlencoded')) {
      return qs.parse(event.body);
    }
    if (contentType.startsWith('application/json')) {
      return JSON.parse(event.body);
    }
  }
  return {};
};

module.exports.handler = (event, context, callback) => {
  const body = parseBody(event);
  const query = event.queryStringParameters || {};

  const code = body.code || query.code;
  const state = body.state || query.state;

  controllers(responder(callback)).token(
    code,
    state,
    auth.getIssuer(
      event.headers.Host,
      event.requestContext && event.requestContext.stage
    )
  );
};