Skip to content

Commit

Permalink
standard code style
Browse files Browse the repository at this point in the history
  • Loading branch information
z0mt3c committed Apr 20, 2015
1 parent 21b09d8 commit fe75ecb
Show file tree
Hide file tree
Showing 6 changed files with 129 additions and 190 deletions.
28 changes: 0 additions & 28 deletions .jshintrc

This file was deleted.

28 changes: 0 additions & 28 deletions Gruntfile.js

This file was deleted.

2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -3,6 +3,8 @@ Easy swagger-ui drop-in plugin for hapi to be used with [hapi-swaggered](https:/

Supports hapi 7.x and 8.x

[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://github.com/feross/standard)

## Install
```bash
npm install hapi-swaggered-ui
Expand Down
2 changes: 1 addition & 1 deletion index.js
@@ -1 +1 @@
module.exports = require('./lib');
module.exports = require('./lib')
248 changes: 119 additions & 129 deletions lib/index.js
@@ -1,142 +1,132 @@
var path = require('path');
var Hoek = require('hoek');
var _ = require('lodash');
var swaggerUiPath = require('swagger-ui').dist;
var Joi = require('joi');
var path = require('path')
var Hoek = require('hoek')
var _ = require('lodash')
var swaggerUiPath = require('swagger-ui').dist
var Joi = require('joi')

var optionsSchema = Joi.object({
title: Joi.string().required(),
swaggerEndpoint: Joi.string().optional(),
swaggerOptions: Joi.object({
supportedSubmitMethods: Joi.array().includes(Joi.string()).optional(),
sorter: Joi.string().valid(['none', 'alpha', 'method']).optional(),
docExpansion: Joi.string().valid(['none', 'list', 'full']).optional()
}).optional(),
oauthOptions: Joi.any({}),
authorization: Joi.object({
field: Joi.string().required(),
scope: Joi.string().valid(['query', 'header']).required(),
valuePrefix: Joi.string().optional(),
defaultValue: Joi.string().optional(),
placeholder: Joi.string().optional()
}).optional()
});
title: Joi.string().required(),
swaggerEndpoint: Joi.string().optional(),
swaggerOptions: Joi.object({
supportedSubmitMethods: Joi.array().includes(Joi.string()).optional(),
sorter: Joi.string().valid(['none', 'alpha', 'method']).optional(),
docExpansion: Joi.string().valid(['none', 'list', 'full']).optional()
}).optional(),
oauthOptions: Joi.any({}),
authorization: Joi.object({
field: Joi.string().required(),
scope: Joi.string().valid(['query', 'header']).required(),
valuePrefix: Joi.string().optional(),
defaultValue: Joi.string().optional(),
placeholder: Joi.string().optional()
}).optional()
})

var defaultOptions = {
title: 'swagger',
swaggerOptions: {
supportedSubmitMethods: ['get', 'post', 'put', 'patch', 'delete'],
sorter: 'alpha',
docExpansion: 'none'
},
authorization: {
field: 'api_key',
scope: 'query',
valuePrefix: undefined,
defaultValue: undefined,
placeholder: undefined
}
};
title: 'swagger',
swaggerOptions: {
supportedSubmitMethods: ['get', 'post', 'put', 'patch', 'delete'],
sorter: 'alpha',
docExpansion: 'none'
},
authorization: {
field: 'api_key',
scope: 'query',
valuePrefix: undefined,
defaultValue: undefined,
placeholder: undefined
}
}

exports.register = function (plugin, options, next) {
var settings = Hoek.applyToDefaults(defaultOptions, options || {});
Joi.assert(settings, optionsSchema, 'Invalid options for hapi-swaggered-ui');

var routeModifiers = plugin.config || Hoek.reach(plugin, 'realm.modifiers');
var routePrefix = Hoek.reach(routeModifiers, 'route.prefix');

var internals = {
handler: function (request, reply) {
var hapiSwaggeredSettings = Hoek.reach(plugin, 'plugins.hapi-swaggered.settings');
var swaggerEndpoint = null;

if (settings.swaggerEndpoint) {
swaggerEndpoint = options.swaggerEndpoint;
} else if (hapiSwaggeredSettings && hapiSwaggeredSettings.endpoint) {
swaggerEndpoint = (hapiSwaggeredSettings.pluginRoutePrefix || '') + hapiSwaggeredSettings.endpoint;
}

var context = {
routePrefix: routePrefix,
title: settings.title,
authorization: settings.authorization
};

if (swaggerEndpoint) {
var swaggerOptions = {
url: swaggerEndpoint
};

var tags = null;

if (request.query.tags) {
tags = request.query.tags;
} if (settings.defaultTags) {
tags = _.isArray(settings.defaultTags) ? settings.defaultTags.join(',') : settings.defaultTags;
}

if (tags) {
swaggerOptions.url = swaggerEndpoint + '?tags=' + encodeURIComponent(tags);
}

_.extend(swaggerOptions, settings.swaggerOptions);

context.swaggerOptions = JSON.stringify(swaggerOptions);
context.oauthOptions = JSON.stringify(settings.oauthOptions || false);
return reply.view('index', context);
} else {
return reply.view('error', context);
}
var settings = Hoek.applyToDefaults(defaultOptions, options || {})
Joi.assert(settings, optionsSchema, 'Invalid options for hapi-swaggered-ui')

var routeModifiers = plugin.config || Hoek.reach(plugin, 'realm.modifiers')
var routePrefix = Hoek.reach(routeModifiers, 'route.prefix')

var internals = {
handler: function (request, reply) {
var hapiSwaggeredSettings = Hoek.reach(plugin, 'plugins.hapi-swaggered.settings')
var swaggerEndpoint = null

if (settings.swaggerEndpoint) {
swaggerEndpoint = options.swaggerEndpoint
} else if (hapiSwaggeredSettings && hapiSwaggeredSettings.endpoint) {
swaggerEndpoint = (hapiSwaggeredSettings.pluginRoutePrefix || '') + hapiSwaggeredSettings.endpoint
}

var context = {
routePrefix: routePrefix,
title: settings.title,
authorization: settings.authorization
}

if (swaggerEndpoint) {
var swaggerOptions = {
url: swaggerEndpoint
}
};

plugin.views({
engines: {
hbs: {
module: require('handlebars')
}
},
path: path.join(__dirname, '../templates')
});

/*
plugin.route({
method: 'GET',
path: '/',
config: {
handler: internals.handler

var tags = null

if (request.query.tags) {
tags = request.query.tags
} if (settings.defaultTags) {
tags = _.isArray(settings.defaultTags) ? settings.defaultTags.join(',') : settings.defaultTags
}
});
*/

plugin.route({
method: 'GET',
path: '/index.html',
config: {
handler: internals.handler

if (tags) {
swaggerOptions.url = swaggerEndpoint + '?tags=' + encodeURIComponent(tags)
}
});

plugin.route({
method: 'GET',
path: '/{path*}',
config: {
handler: {
directory: {
path: [
path.join(__dirname, '../public'),
swaggerUiPath
],
index: true,
listing: false
}
}

_.extend(swaggerOptions, settings.swaggerOptions)

context.swaggerOptions = JSON.stringify(swaggerOptions)
context.oauthOptions = JSON.stringify(settings.oauthOptions || false)
return reply.view('index', context)
} else {
return reply.view('error', context)
}
}
}

plugin.views({
engines: {
hbs: {
module: require('handlebars')
}
},
path: path.join(__dirname, '../templates')
})

plugin.route({
method: 'GET',
path: '/index.html',
config: {
handler: internals.handler
}
})

plugin.route({
method: 'GET',
path: '/{path*}',
config: {
handler: {
directory: {
path: [
path.join(__dirname, '../public'),
swaggerUiPath
],
index: true,
listing: false
}
});
}
}
})

next();
};
next()
}

exports.register.attributes = {
pkg: require('../package.json')
};
pkg: require('../package.json')
}
11 changes: 7 additions & 4 deletions package.json
Expand Up @@ -20,21 +20,24 @@
"hapi"
],
"engines": {
"node": "0.10.x"
"node": ">=0.10.32"
},
"dependencies": {
"handlebars": "^3.0.0",
"hoek": "^2.4.0",
"joi": "^5.1.0",
"lodash": "^3.1.0",
"swagger-ui": "2.1.8-M1"
"swagger-ui": "2.1.1-M2"
},
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-jshint": "^0.11.0",
"grunt-contrib-watch": "^0.6.1"
"grunt-contrib-watch": "^0.6.1",
"standard": "^3.6.1"
},
"scripts": {
"test": "standard"
},
"scripts": {},
"peerDependencies": {
"hapi": ">= 7.x.x < 9.0.0"
}
Expand Down

0 comments on commit fe75ecb

Please sign in to comment.