Skip to content
Snippets Groups Projects
Commit 5a5ba51f authored by Erick Hitter's avatar Erick Hitter
Browse files

Working v1

parent 2c33d015
No related branches found
No related tags found
1 merge request!1Basic plugin functionality
......@@ -4,3 +4,21 @@ Slash command to record completed tasks as WordPress posts
## Prerequisites:
* A WordPress site running version 4.6+ and the JSON Basic Authentication plugin
* nginx or another proxy to front the app
## Install:
1. `npm install`
2. Copy `config-sample.json` to `config.json` and update to your needs
3. `npm start`
## Usage:
1. Make a POST request to `/log` with a POST body that contains the item to record
For example:
```
curl -X "POST" "http://localhost:9001/log" \
-d "I wrote a a thing!"
```
......@@ -2,6 +2,8 @@
// Dependencies
var express = require( 'express' );
var WPAPI = require( 'wpapi' );
var striptags = require( 'striptags' );
var app = express();
var bodyParser = require( 'body-parser' );
......@@ -11,24 +13,51 @@ app.use( bodyParser.urlencoded( { extended: true } ) );
// Config
var config = require( './config.json' );
// Landing page for status checks
app.get('/', function( req, res ) {
var msg = 'slash-done running';
var wp = new WPAPI( {
endpoint: config.wp_endpoint,
username: config.wp_username,
password: config.wp_password
} );
res.send( msg );
});
// Landing page for status checks
app.get( '/', function( req, res ) {
res.sendStatus( 200 );
} );
// Parse POST body to create WP post
app.post('/log', function( req, res ) {
app.post( '/log', function( req, res ) {
// Don't bother if there's nothing to record
if ( 'undefined' === typeof req.body || ! req.body.length ) {
return res.sendStatus( 400 );
}
res.sendStatus( 200 );
});
// Massage the title
var title = req.body;
title = striptags( title, [] );
if ( title.length > 30 ) {
title = 'Did: ' + title.slice( 0, 29 );
title += '…';
} else {
title = 'Did: ' + title;
}
// Decorate the content
var content = req.body;
content = striptags( content, [ 'a', 'code', 'strong', 'em' ] );
content = '<blockquote>' + content + "</blockquote>\n\n#slash-done";
// Create the post
wp.posts().create( {
title: title,
content: content,
status: 'publish'
} ).then( function( resp ) {
res.sendStatus( 200 );
} );
} );
//tells Node which port to listen on
app.listen( config.node_port, config.node_listener, function() {
console.log( 'slash-done running on', config.node_listener, 'and port', config.node_port );
});
} );
......@@ -6,7 +6,8 @@
"dependencies": {
"express": "*",
"body-parser": "*",
"wpapi": "*"
"wpapi": "*",
"striptags": "*"
},
"devDependencies": {},
"scripts": {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment