Merge branch 'features/webhooks' into front/webhooks-editview

This commit is contained in:
Alexandre Bodin 2020-01-10 18:08:45 +01:00
commit 58c15f9469
5 changed files with 72 additions and 12 deletions

View File

@ -152,7 +152,7 @@ To do so, you will have to request the `/articles` route in **POST**.
import axios from 'axios';
const {data} = await axios
.get('http://localhost:1337/articles', {
.post('http://localhost:1337/articles', {
data: {
title: 'my article'
content: 'my super article content'

View File

@ -128,7 +128,7 @@ module.exports = {
await actions.delete(file);
}
const media = strapi.query('file', 'upload').findOne({
const media = await strapi.query('file', 'upload').findOne({
id: file.id,
});

View File

@ -61,7 +61,7 @@ const CONFIG_PATHS = {
*/
class Strapi extends EventEmitter {
constructor(opts) {
constructor(opts = {}) {
super();
this.setMaxListeners(100);
@ -86,24 +86,19 @@ class Strapi extends EventEmitter {
this.dir = opts.dir || process.cwd();
this.admin = {};
this.plugins = {};
this.config = {};
this.config = this.initConfig(opts);
// internal services.
this.fs = createStrapiFs(this);
this.eventHub = createEventHub();
this.webhookRunner = createWebhookRunner({
eventHub: this.eventHub,
logger: this.log,
});
this.initConfig(opts);
this.requireProjectBootstrap();
}
initConfig({ autoReload = false, serveAdminPanel = true } = {}) {
const pkgJSON = require(path.resolve(this.dir, 'package.json'));
this.config = {
const config = {
serveAdminPanel,
launchedAt: Date.now(),
appPath: this.dir,
@ -123,6 +118,26 @@ class Strapi extends EventEmitter {
installedMiddlewares: getPrefixedDeps('strapi-middleware', pkgJSON),
installedHooks: getPrefixedDeps('strapi-hook', pkgJSON),
};
Object.defineProperty(config, 'get', {
value(path, defaultValue = null) {
return _.get(config, path, defaultValue);
},
enumerable: false,
configurable: false,
writable: false,
});
Object.defineProperty(config, 'set', {
value(path, value) {
return _.set(config, path, value);
},
enumerable: false,
configurable: false,
writable: false,
});
return config;
}
requireProjectBootstrap() {
@ -368,6 +383,13 @@ class Strapi extends EventEmitter {
// Usage.
await utils.usage(this.config);
// init webhook runner
this.webhookRunner = createWebhookRunner({
eventHub: this.eventHub,
logger: this.log,
configuration: this.config.get('currentEnvironment.server.webhooks', {}),
});
// Init core store
this.models['core_store'] = coreStoreModel;
this.models['strapi_webhooks'] = webhookModel;

View File

@ -4,19 +4,32 @@
'use strict';
const debug = require('debug')('strapi');
const _ = require('lodash');
const fetch = require('node-fetch');
const WorkerQueue = require('./worker-queue');
const defaultConfiguration = {
defaultHeaders: {},
};
class WebhookRunner {
constructor({ eventHub, logger, queue }) {
constructor({ eventHub, logger, configuration = {} }) {
debug('Initialized webhook runer');
this.eventHub = eventHub;
this.logger = logger;
this.webhooksMap = new Map();
this.listeners = new Map();
this.queue = queue || new WorkerQueue({ logger, concurency: 5 });
if (typeof configuration !== 'object') {
throw new Error(
'Invalid configuration provided to the webhookRunner.\nCheck your server.json -> webhooks configuration'
);
}
this.config = _.merge(defaultConfiguration, configuration);
this.queue = new WorkerQueue({ logger, concurency: 5 });
this.queue.subscribe(this.executeListener.bind(this));
}
@ -72,6 +85,7 @@ class WebhookRunner {
...info,
}),
headers: {
...this.config.defaultHeaders,
...headers,
'X-Strapi-Event': event,
'Content-Type': 'application/json',

24
scripts/publish.sh Executable file
View File

@ -0,0 +1,24 @@
# Force start from root folder
cd "$(dirname "$0")/.."
set -e
version=""
echo "Please enter the version you want to publish"
read version
# publish packages
./node_modules/.bin/lerna publish --no-push --dist-tag beta --exact "$version"
# push master branch
git push origin master
# push tag
git push origin v"$version"
# set latest dist-tag on npm
lerna exec --stream --no-bail --no-private -- npm dist-tag add '${LERNA_PACKAGE_NAME}'@"$version" latest
# run changelog cli
npx @sclt/program-changelog