forked from enketo/enketo-express
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp_controllers_error-handler.js.html
156 lines (120 loc) · 22.9 KB
/
app_controllers_error-handler.js.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>app/controllers/error-handler.js - Enketo Express</title>
<meta name="description" content="The full-fledged Enketo web application for the ODK ecosystem" />
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
<script src="scripts/nav.js" defer></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav class="wrap">
<input type="text" id="nav-search" placeholder="Search" />
<h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/enketo/enketo-express" target="_blank" class="menu-item" id="repository" >Github repo</a></h2><h2><a href="https://github.com/enketo/enketo-express/blob/master/CHANGELOG.md" target="_blank" class="menu-item" id="change-log" >Change log</a></h2><h3>Tutorials</h3><ul><li><a href="tutorial-00-getting-started.html">Getting started</a></li><li><a href="tutorial-10-configure.html">Configure</a></li><li><a href="tutorial-20-update.html">Update</a></li><li><a href="tutorial-30-develop.html">Develop</a></li><li><a href="tutorial-60-authentication-and-security.html">Authentication and Security</a></li><li><a href="tutorial-70-browser-support.html">Browser support</a></li><li><a href="tutorial-80-comments.html">Comment Feature</a></li><li><a href="tutorial-90-duplicates.html">Duplicate Bug</a></li></ul><h3>Modules</h3><ul><li><a href="module-account-model.html">account-model</a><ul class='methods'><li data-type='method'><a href="module-account-model.html#.check">check</a></li><li data-type='method'><a href="module-account-model.html#.get">get</a></li><li data-type='method'><a href="module-account-model.html#~_getAccount">_getAccount</a></li><li data-type='method'><a href="module-account-model.html#~_getHardcodedAccount">_getHardcodedAccount</a></li><li data-type='method'><a href="module-account-model.html#~_getServer">_getServer</a></li><li data-type='method'><a href="module-account-model.html#~_isAllowed">_isAllowed</a></li><li data-type='method'><a href="module-account-model.html#~_stripProtocol">_stripProtocol</a></li></ul></li><li><a href="module-api-controller.html">api-controller</a></li><li><a href="module-api-v1-controller.html">api-v1-controller</a><ul class='methods'><li data-type='method'><a href="module-api-v1-controller.html#~_generateQueryString">_generateQueryString</a></li><li data-type='method'><a href="module-api-v1-controller.html#~_generateWebformUrls">_generateWebformUrls</a></li><li data-type='method'><a href="module-api-v1-controller.html#~_render">_render</a></li><li data-type='method'><a href="module-api-v1-controller.html#~_setIframe">_setIframe</a></li><li data-type='method'><a href="module-api-v1-controller.html#~_setQuotaUsed">_setQuotaUsed</a></li><li data-type='method'><a href="module-api-v1-controller.html#~_setReturnQueryParam">_setReturnQueryParam</a></li><li data-type='method'><a href="module-api-v1-controller.html#~authCheck">authCheck</a></li><li data-type='method'><a href="module-api-v1-controller.html#~cacheInstance">cacheInstance</a></li><li data-type='method'><a href="module-api-v1-controller.html#~deactivateSurvey">deactivateSurvey</a></li><li data-type='method'><a href="module-api-v1-controller.html#~getExistingSurvey">getExistingSurvey</a></li><li data-type='method'><a href="module-api-v1-controller.html#~getList">getList</a></li><li data-type='method'><a href="module-api-v1-controller.html#~getNewOrExistingSurvey">getNewOrExistingSurvey</a></li><li data-type='method'><a href="module-api-v1-controller.html#~getNumber">getNumber</a></li><li data-type='method'><a href="module-api-v1-controller.html#~removeInstance">removeInstance</a></li></ul></li><li><a href="module-api-v2-controller.html">api-v2-controller</a><ul class='methods'><li data-type='method'><a href="module-api-v2-controller.html#~_generateQueryString">_generateQueryString</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_generateWebformUrls">_generateWebformUrls</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_render">_render</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_renderPdf">_renderPdf</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_setDefaultsQueryParam">_setDefaultsQueryParam</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_setGoToHash">_setGoToHash</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_setIframe">_setIframe</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_setPage">_setPage</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_setQuotaUsed">_setQuotaUsed</a></li><li data-type='method'><a href="module-api-v2-controller.html#~_setReturnQueryParam">_setReturnQueryParam</a></li><li data-type='method'><a href="module-api-v2-controller.html#~authCheck">authCheck</a></li><li data-type='method'><a href="module-api-v2-controller.html#~cacheInstance">cacheInstance</a></li><li data-type='method'><a href="module-api-v2-controller.html#~deactivateSurvey">deactivateSurvey</a></li><li data-type='method'><a href="module-api-v2-controller.html#~emptySurveyCache">emptySurveyCache</a></li><li data-type='method'><a href="module-api-v2-controller.html#~getExistingSurvey">getExistingSurvey</a></li><li data-type='method'><a href="module-api-v2-controller.html#~getList">getList</a></li><li data-type='method'><a href="module-api-v2-controller.html#~getNewOrExistingSurvey">getNewOrExistingSurvey</a></li><li data-type='method'><a href="module-api-v2-controller.html#~getNumber">getNumber</a></li><li data-type='method'><a href="module-api-v2-controller.html#~getVersion">getVersion</a></li><li data-type='method'><a href="module-api-v2-controller.html#~removeInstance">removeInstance</a></li></ul></li><li><a href="module-authentication-controller.html">authentication-controller</a><ul class='methods'><li data-type='method'><a href="module-authentication-controller.html#~login">login</a></li><li data-type='method'><a href="module-authentication-controller.html#~logout">logout</a></li><li data-type='method'><a href="module-authentication-controller.html#~setToken">setToken</a></li></ul></li><li><a href="module-cache-model.html">cache-model</a><ul class='methods'><li data-type='method'><a href="module-cache-model.html#.check">check</a></li><li data-type='method'><a href="module-cache-model.html#.flush">flush</a></li><li data-type='method'><a href="module-cache-model.html#.flushAll">flushAll</a></li><li data-type='method'><a href="module-cache-model.html#.get">get</a></li><li data-type='method'><a href="module-cache-model.html#.getHashes">getHashes</a></li><li data-type='method'><a href="module-cache-model.html#.set">set</a></li><li data-type='method'><a href="module-cache-model.html#~_addHashes">_addHashes</a></li><li data-type='method'><a href="module-cache-model.html#~_getKey">_getKey</a></li></ul></li><li><a href="module-communicator.html">communicator</a><ul class='methods'><li data-type='method'><a href="module-communicator.html#.authenticate">authenticate</a></li><li data-type='method'><a href="module-communicator.html#.getAuthHeader">getAuthHeader</a></li><li data-type='method'><a href="module-communicator.html#.getFormListUrl">getFormListUrl</a></li><li data-type='method'><a href="module-communicator.html#.getManifest">getManifest</a></li><li data-type='method'><a href="module-communicator.html#.getMaxSize">getMaxSize</a></li><li data-type='method'><a href="module-communicator.html#.getSubmissionUrl">getSubmissionUrl</a></li><li data-type='method'><a href="module-communicator.html#.getUpdatedRequestOptions">getUpdatedRequestOptions</a></li><li data-type='method'><a href="module-communicator.html#.getXForm">getXForm</a></li><li data-type='method'><a href="module-communicator.html#.getXFormInfo">getXFormInfo</a></li><li data-type='method'><a href="module-communicator.html#~_findFormAddInfo">_findFormAddInfo</a></li><li data-type='method'><a href="module-communicator.html#~_request">_request</a></li><li data-type='method'><a href="module-communicator.html#~_simplifyFormObj">_simplifyFormObj</a></li><li data-type='method'><a href="module-communicator.html#~_xmlToJson">_xmlToJson</a></li></ul></li><li><a href="module-config-model.html">config-model</a><ul class='members'><li data-type='member'><a href="module-config-model.html#.client">client</a></li><li data-type='member'><a href="module-config-model.html#.server">server</a></li></ul><ul class='methods'><li data-type='method'><a href="module-config-model.html#.getThemesSupported">getThemesSupported</a></li><li data-type='method'><a href="module-config-model.html#~_convertNumbers">_convertNumbers</a></li><li data-type='method'><a href="module-config-model.html#~_convertType">_convertType</a></li><li data-type='method'><a href="module-config-model.html#~_emptyObjectProperties">_emptyObjectProperties</a></li><li data-type='method'><a href="module-config-model.html#~_extractRedisConfigFromUrl">_extractRedisConfigFromUrl</a></li><li data-type='method'><a href="module-config-model.html#~_findNumberIndex">_findNumberIndex</a></li><li data-type='method'><a href="module-config-model.html#~_findSetting">_findSetting</a></li><li data-type='method'><a href="module-config-model.html#~_getEmptyClone">_getEmptyClone</a></li><li data-type='method'><a href="module-config-model.html#~_setRedisConfigFromEnv">_setRedisConfigFromEnv</a></li><li data-type='method'><a href="module-config-model.html#~_updateConfigFromEnv">_updateConfigFromEnv</a></li><li data-type='method'><a href="module-config-model.html#~_updateConfigItemFromEnv">_updateConfigItemFromEnv</a></li></ul></li><li><a href="module-custom-error.html">custom-error</a><ul class='members'><li data-type='member'><a href="module-custom-error.html#.Error">Error</a></li></ul><ul class='methods'><li data-type='method'><a href="module-custom-error.html#.TranslatedError">TranslatedError</a></li></ul></li><li><a href="module-duplicates.html">duplicates</a><ul class='methods'><li data-type='method'><a href="module-duplicates.html#~checkDuplicateEnketoIds">checkDuplicateEnketoIds</a></li><li data-type='method'><a href="module-duplicates.html#~getAllKeys">getAllKeys</a></li><li data-type='method'><a href="module-duplicates.html#~getDuplicates">getDuplicates</a></li><li data-type='method'><a href="module-duplicates.html#~getId">getId</a></li><li data-type='method'><a href="module-duplicates.html#~getSurveyOpenRosaId">getSurveyOpenRosaId</a></li><li data-type='method'><a href="module-duplicates.html#~remove">remove</a></li><li data-type='method'><a href="module-duplicates.html#~removeCache">removeCache</a></li><li data-type='method'><a href="module-duplicates.html#~removeDuplicateEnketoIds">removeDuplicateEnketoIds</a></li></ul></li><li><a href="module-error-handler.html">error-handler</a><ul class='methods'><li data-type='method'><a href="module-error-handler.html#.404">404</a></li><li data-type='method'><a href="module-error-handler.html#.development">development</a></li><li data-type='method'><a href="module-error-handler.html#.production">production</a></li><li data-type='method'><a href="module-error-handler.html#~getErrorMessage">getErrorMessage</a></li></ul></li><li><a href="module-instance-model.html">instance-model</a><ul class='methods'><li data-type='method'><a href="module-instance-model.html#.get">get</a></li><li data-type='method'><a href="module-instance-model.html#.remove">remove</a></li><li data-type='method'><a href="module-instance-model.html#.set">set</a></li></ul></li><li><a href="module-media-controller.html">media-controller</a><ul class='methods'><li data-type='method'><a href="module-media-controller.html#~_extractMediaUrl">_extractMediaUrl</a></li><li data-type='method'><a href="module-media-controller.html#~getMedia">getMedia</a></li></ul></li><li><a href="module-offline-resources-controller.html">offline-resources-controller</a><ul class='methods'><li data-type='method'><a href="module-offline-resources-controller.html#~getScriptContent">getScriptContent</a></li></ul></li><li><a href="module-pages-controller.html">pages-controller</a></li><li><a href="module-pdf.html">pdf</a><ul class='methods'><li data-type='method'><a href="module-pdf.html#.get">get</a></li></ul></li><li><a href="module-router-utils.html">router-utils</a><ul class='members'><li data-type='member'><a href="module-router-utils.html#.idEncryptionKeys">idEncryptionKeys</a></li></ul><ul class='methods'><li data-type='method'><a href="module-router-utils.html#.encryptedEnketoIdSingle">encryptedEnketoIdSingle</a></li><li data-type='method'><a href="module-router-utils.html#.encryptedEnketoIdView">encryptedEnketoIdView</a></li><li data-type='method'><a href="module-router-utils.html#.enketoId">enketoId</a></li><li data-type='method'><a href="module-router-utils.html#~_encryptedEnketoIdParam">_encryptedEnketoIdParam</a></li></ul></li><li><a href="module-submission-model.html">submission-model</a><ul class='methods'><li data-type='method'><a href="module-submission-model.html#.add">add</a></li><li data-type='method'><a href="module-submission-model.html#.isNew">isNew</a></li><li data-type='method'><a href="module-submission-model.html#~_alreadyRecorded">_alreadyRecorded</a></li><li data-type='method'><a href="module-submission-model.html#~_formatter">_formatter</a></li><li data-type='method'><a href="module-submission-model.html#~_getLatestSubmissionIds">_getLatestSubmissionIds</a></li></ul></li><li><a href="module-submissions-controller.html">submissions-controller</a><ul class='methods'><li data-type='method'><a href="module-submissions-controller.html#~_logSubmission">_logSubmission</a></li><li data-type='method'><a href="module-submissions-controller.html#~getInstance">getInstance</a></li><li data-type='method'><a href="module-submissions-controller.html#~maxSize">maxSize</a></li><li data-type='method'><a href="module-submissions-controller.html#~submit">submit</a></li></ul></li><li><a href="module-survey-controller.html">survey-controller</a><ul class='methods'><li data-type='method'><a href="module-survey-controller.html#~_renderWebform">_renderWebform</a></li><li data-type='method'><a href="module-survey-controller.html#~edit">edit</a></li><li data-type='method'><a href="module-survey-controller.html#~offlineWebform">offlineWebform</a></li><li data-type='method'><a href="module-survey-controller.html#~preview">preview</a></li><li data-type='method'><a href="module-survey-controller.html#~redirect">redirect</a></li><li data-type='method'><a href="module-survey-controller.html#~single">single</a></li><li data-type='method'><a href="module-survey-controller.html#~view">view</a></li><li data-type='method'><a href="module-survey-controller.html#~webform">webform</a></li><li data-type='method'><a href="module-survey-controller.html#~xform">xform</a></li></ul></li><li><a href="module-survey-model.html">survey-model</a><ul class='methods'><li data-type='method'><a href="module-survey-model.html#.createNewEnketoId">createNewEnketoId</a></li><li data-type='method'><a href="module-survey-model.html#.get">get</a></li><li data-type='method'><a href="module-survey-model.html#.getId">getId</a></li><li data-type='method'><a href="module-survey-model.html#.getList">getList</a></li><li data-type='method'><a href="module-survey-model.html#.getNumber">getNumber</a></li><li data-type='method'><a href="module-survey-model.html#.incrementSubmissions">incrementSubmissions</a></li><li data-type='method'><a href="module-survey-model.html#.set">set</a></li><li data-type='method'><a href="module-survey-model.html#.update">update</a></li><li data-type='method'><a href="module-survey-model.html#~_404Empty">_404Empty</a></li><li data-type='method'><a href="module-survey-model.html#~_addSurvey">_addSurvey</a></li><li data-type='method'><a href="module-survey-model.html#~_ascendingLaunchDate">_ascendingLaunchDate</a></li><li data-type='method'><a href="module-survey-model.html#~_getActiveSurveys">_getActiveSurveys</a></li><li data-type='method'><a href="module-survey-model.html#~_getEnketoId">_getEnketoId</a></li><li data-type='method'><a href="module-survey-model.html#~_nonEmpty">_nonEmpty</a></li><li data-type='method'><a href="module-survey-model.html#~_updateProperties">_updateProperties</a></li></ul></li><li><a href="module-transformation-controller.html">transformation-controller</a><ul class='methods'><li data-type='method'><a href="module-transformation-controller.html#~_addMediaHash">_addMediaHash</a></li><li data-type='method'><a href="module-transformation-controller.html#~_authenticate">_authenticate</a></li><li data-type='method'><a href="module-transformation-controller.html#~_checkQuota">_checkQuota</a></li><li data-type='method'><a href="module-transformation-controller.html#~_getCombinedHash">_getCombinedHash</a></li><li data-type='method'><a href="module-transformation-controller.html#~_getFormDirectly">_getFormDirectly</a></li><li data-type='method'><a href="module-transformation-controller.html#~_getFormFromCache">_getFormFromCache</a></li><li data-type='method'><a href="module-transformation-controller.html#~_getSurveyParams">_getSurveyParams</a></li><li data-type='method'><a href="module-transformation-controller.html#~_respond">_respond</a></li><li data-type='method'><a href="module-transformation-controller.html#~_setCookieAndCredentials">_setCookieAndCredentials</a></li><li data-type='method'><a href="module-transformation-controller.html#~_updateCache">_updateCache</a></li><li data-type='method'><a href="module-transformation-controller.html#~getSurveyHash">getSurveyHash</a></li><li data-type='method'><a href="module-transformation-controller.html#~getSurveyParts">getSurveyParts</a></li></ul></li><li><a href="module-user-model.html">user-model</a><ul class='methods'><li data-type='method'><a href="module-user-model.html#.getCredentials">getCredentials</a></li></ul></li><li><a href="module-utils.html">utils</a><ul class='methods'><li data-type='method'><a href="module-utils.html#.areOwnPropertiesEqual">areOwnPropertiesEqual</a></li><li data-type='method'><a href="module-utils.html#.cleanUrl">cleanUrl</a></li><li data-type='method'><a href="module-utils.html#.getOpenRosaKey">getOpenRosaKey</a></li><li data-type='method'><a href="module-utils.html#.getXformsManifestHash">getXformsManifestHash</a></li><li data-type='method'><a href="module-utils.html#.insecureAes192Decrypt">insecureAes192Decrypt</a></li><li data-type='method'><a href="module-utils.html#.insecureAes192Encrypt">insecureAes192Encrypt</a></li><li data-type='method'><a href="module-utils.html#.isValidUrl">isValidUrl</a></li><li data-type='method'><a href="module-utils.html#.md5">md5</a></li><li data-type='method'><a href="module-utils.html#.pickRandomItemFromArray">pickRandomItemFromArray</a></li><li data-type='method'><a href="module-utils.html#.randomString">randomString</a></li><li data-type='method'><a href="module-utils.html#~_getKeyIv">_getKeyIv</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#EnketoRecord">EnketoRecord</a></li><li><a href="global.html#escapeMarkupEntities">escapeMarkupEntities</a></li><li><a href="global.html#ManifestItem">ManifestItem</a></li><li><a href="global.html#replaceMediaSources">replaceMediaSources</a></li><li><a href="global.html#toLocalMediaUrl">toLocalMediaUrl</a></li><li><a href="global.html#toMediaMap">toMediaMap</a></li></ul>
</nav>
<div id="main">
<h1 class="page-title">app/controllers/error-handler.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>/**
* @module error-handler
*/
// var debug = require( 'debug' )( 'error-handler' );
/**
* @param {module:api-controller~ExpressRequest} req - HTTP request
* @param {Error} error - Error object.
*/
function getErrorMessage( req, error ) {
if ( error.message ) {
// convert certain set of messages into a more readable
// and translated message
if ( /ECONNREFUSED/.test( error.message ) ) {
return req.i18n.t( 'error.econnrefused' );
}
// else output the message untranslated
return error.message;
} else if ( error.translationKey ) {
// return translated message
return req.i18n.t( error.translationKey, error.translationParams );
} else {
// return error code
return error.code;
}
}
module.exports = {
/**
* @param {Error} err - Error object
* @param {module:api-controller~ExpressRequest} req - HTTP request
* @param {module:api-controller~ExpressResponse} res - HTTP response
* @param {Function} next - Express callback
*/
production( err, req, res, next ) {// eslint-disable-line no-unused-vars
const body = {
code: err.status || 500,
message: getErrorMessage( req, err )
};
const contentType = res.get( 'Content-type' );
res.status( err.status || 500 );
if ( contentType && contentType.indexOf( 'application/json' ) === 0 ) {
res.json( body );
} else {
res.render( 'error', body );
}
},
/**
* @param {Error} err - Error object
* @param {module:api-controller~ExpressRequest} req - HTTP request
* @param {module:api-controller~ExpressResponse} res - HTTP response
* @param {Function} next - Express callback
*/
development( err, req, res, next ) {// eslint-disable-line no-unused-vars
const body = {
code: err.status || 500,
message: getErrorMessage( req, err ),
stack: err.stack
};
const contentType = res.get( 'Content-type' );
res.status( err.status || 500 );
if ( contentType && contentType.indexOf( 'application/json' ) === 0 ) {
res.json( body );
} else {
res.render( 'error', body );
}
},
/**
* @param {module:api-controller~ExpressRequest} req - HTTP request
* @param {module:api-controller~ExpressResponse} res - HTTP response
* @param {Function} next - Express callback
*/
'404': function( req, res, next ) {
const error = new Error( req.i18n.t( 'error.pagenotfound' ) );
error.status = 404;
next( error );
}
};
</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.7</a> using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/polyfill.js"></script>
<script src="scripts/linenumber.js"></script>
<script src="scripts/search.js" defer></script>
</body>
</html>