mirror of
https://github.com/Dolibarr/dolibarr
synced 2024-11-22 22:12:22 +00:00
73 lines
2.4 KiB
JavaScript
73 lines
2.4 KiB
JavaScript
|
const triggerThirdparty = require('./triggers/thirdparty');
|
||
|
const triggerOrder = require('./triggers/order');
|
||
|
const triggerAction = require('./triggers/action');
|
||
|
|
||
|
const searchThirdparty = require('./searches/thirdparty');
|
||
|
|
||
|
const createThirdparty = require('./creates/thirdparty');
|
||
|
|
||
|
const authentication = require('./authentication');
|
||
|
|
||
|
// To include the session key header on all outbound requests, simply define a function here.
|
||
|
// It runs runs before each request is sent out, allowing you to make tweaks to the request in a centralized spot
|
||
|
const includeSessionKeyHeader = (request, z, bundle) => {
|
||
|
if (bundle.authData.sessionKey) {
|
||
|
request.headers = request.headers || {};
|
||
|
request.headers['DOLAPIKEY'] = bundle.authData.sessionKey;
|
||
|
}
|
||
|
return request;
|
||
|
};
|
||
|
|
||
|
// If we get a response and it is a 401, we can raise a special error telling Zapier to retry this after another exchange.
|
||
|
const sessionRefreshIf401 = (response, z, bundle) => {
|
||
|
if (bundle.authData.sessionKey) {
|
||
|
if (response.status === 401) {
|
||
|
throw new z.errors.RefreshAuthError('Session apikey needs refreshing.');
|
||
|
}
|
||
|
}
|
||
|
return response;
|
||
|
};
|
||
|
|
||
|
// We can roll up all our behaviors in an App.
|
||
|
const App = {
|
||
|
// This is just shorthand to reference the installed dependencies you have. Zapier will
|
||
|
// need to know these before we can upload
|
||
|
version: require('./package.json').version,
|
||
|
platformVersion: require('zapier-platform-core').version,
|
||
|
|
||
|
authentication: authentication,
|
||
|
|
||
|
// beforeRequest & afterResponse are optional hooks into the provided HTTP client
|
||
|
beforeRequest: [
|
||
|
includeSessionKeyHeader
|
||
|
],
|
||
|
|
||
|
afterResponse: [
|
||
|
sessionRefreshIf401
|
||
|
],
|
||
|
|
||
|
// If you want to define optional resources to simplify creation of triggers, searches, creates - do that here!
|
||
|
resources: {
|
||
|
},
|
||
|
|
||
|
// If you want your trigger to show up, you better include it here!
|
||
|
triggers: {
|
||
|
[triggerThirdparty.key]: triggerThirdparty,
|
||
|
[triggerOrder.key]: triggerOrder,
|
||
|
[triggerAction.key]: triggerAction
|
||
|
},
|
||
|
|
||
|
// If you want your searches to show up, you better include it here!
|
||
|
searches: {
|
||
|
[searchThirdparty.key]: searchThirdparty,
|
||
|
},
|
||
|
|
||
|
// If you want your creates to show up, you better include it here!
|
||
|
creates: {
|
||
|
[createThirdparty.key]: createThirdparty,
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// Finally, export the app.
|
||
|
module.exports = App;
|