mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-18 07:51:55 +03:00
1fb969ad36
* Installed stripe@7.4.0 refs #38 We were relying on stripe being installed in Ghost, this moves the dep to the correct package. * Created exponentialBackoff wrapper for stripe api refs #38 https://stripe.com/docs/testing#rate-limits The stripe docs suggest to use exponential backoff when recieving a rate limit error. This wrapper will wrap stripe api calls, and retry them after 1s,2s,4s,8s,16s until eventually failing. This gives a total of 5 retries over 31s. * Added wrappers around the stripe api calls refs #38 * Ensured all calls to stripe api go via exp backoff refs #38 * Scaffolding out the error handling for stripe api * Forwarding all errors * Refactored stripe api into modules * Ensured the ready promise object is not replaced * Added logging setup - Sets up common logger structure with custom logger passed through * Ensure logger is kept in module state * Renamed updateLogger to setLogger * Removed `logger` param and exposed setLogger method * Ensured different ids used for test mode * Ensure setLogger works for prototype methods * Removed reconfigureSettings method * Updated payment processer service to keep static ready promise * Added eventemitter to member api instance to handle errors * Moved logging of errors to http level
51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
const common = require('./common');
|
|
|
|
function getData(...props) {
|
|
return function (req, res, next) {
|
|
if (!req.body) {
|
|
res.writeHead(400);
|
|
return res.end();
|
|
}
|
|
|
|
const data = props.concat('origin').reduce((data, prop) => {
|
|
if (!data) {
|
|
return null;
|
|
}
|
|
|
|
let propObj = typeof prop === 'string' ? {
|
|
name: prop,
|
|
required: true
|
|
} : prop;
|
|
|
|
const value = req.body[propObj.name];
|
|
if (propObj.required && !value) {
|
|
return null;
|
|
}
|
|
|
|
return Object.assign(data, {
|
|
[propObj.name]: value
|
|
});
|
|
}, {});
|
|
|
|
if (!data) {
|
|
res.writeHead(400);
|
|
return res.end(`Expected {${props.join(', ')}}`);
|
|
}
|
|
req.data = data || {};
|
|
next();
|
|
};
|
|
}
|
|
|
|
function handleError(status, res) {
|
|
return function (err) {
|
|
common.logging.error(err);
|
|
res.writeHead(status);
|
|
res.end();
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
getData,
|
|
handleError
|
|
};
|