Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flochtililoch/ifttt-wordpress-webhook
Webhook for IFTTT using wordpress channel.
https://github.com/flochtililoch/ifttt-wordpress-webhook
Last synced: about 5 hours ago
JSON representation
Webhook for IFTTT using wordpress channel.
- Host: GitHub
- URL: https://github.com/flochtililoch/ifttt-wordpress-webhook
- Owner: flochtililoch
- Created: 2015-03-25T01:20:06.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-06-26T05:05:12.000Z (over 9 years ago)
- Last Synced: 2024-11-11T03:57:34.819Z (9 days ago)
- Language: CoffeeScript
- Size: 593 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# **NOTE:** Use [IFTTT Maker](https://ifttt.com/channels/maker) channel instead
# ifttt-wordpress-webhook
IFTTT Wordpress Webhook is a tiny package that allows a node application to expose a webhook, that can be triggered by IFTTT. It basically wraps a xmlrpc server with basic configuration, that mimics a typical wordpress server and run custom code when the method `newPost` is invoked by IFTTT.
## Getting started
- Configure IFTTT Wordpress Channel
![IFTTT Wordpress Channel configuration](https://github.com/flochtililoch/ifttt-wordpress-webhook/blob/assets/ifttt-wordpress-channel.png)
- Create a IFTTT receipe with Wordpress as an action ("then")
- Run the following code in a public facing machine
```javascript
var iftttWebHook = require('ifttt-wordpress-webhook');
iftttWebHook({user: {
name: 'foo',
password: 'bar'
},
webhook: function(data) {
// Do something
}
})
```## Usage example: Proxy IFTTT action to another service
The idea here is to use some of the available fields in wordpress to define the service parameters.
Let's assume the following:- The `Title` field will contain the method and the url
- The `Body` field will contain the body to send to the service
- The `Categories` field will contain the headers name
- The `Tags` field will contain the headers values### Create the following receipe in IFTTT
*Note:* The service url does not contain the protocol. The reason behind this is that IFTTT rewrites URLs contained in a receipe fields into a short url, i.e. `http://ift.tt/3NrWPwT`. To prevent that, the protocol is manually happended before invoking the webhook. Currently only supports `http`.
![IFTTT Wordpress Receipe for Webhook Proxy](https://github.com/flochtililoch/ifttt-wordpress-webhook/blob/assets/ifttt-wordpress-receipe.png)
### Run the following code in a public facing machine
```javascript
var request = require('request'),
_ = require('lodash'),
iftttWebHook = require('ifttt-wordpress-webhook');/*
Example payload:
[ '',
'foo',
'bar',
{ title: 'PUT //my.server.com/my/endpoint',
description: '{"message":"test"}',
categories: [ 'X-Request-ID', 'User-Agent' ],
mt_keywords: [ '1234567890', 'ifttt-wordpress-webhook' ],
post_status: 'publish' },
true ]
*/
function webhook (data) {
console.log ('webhook invoked with following data:', data);// Map fields
var cache1 = data.title.split(' ');
var options = {
method: cache1[0],
url: 'http:' + cache1[1], // See note above
headers: _.zipObject(data.categories, data.mt_keywords),
json: JSON.parse(data.description)
};/* options equals to
{ method: 'PUT',
url: 'http://my.server.com/my/endpoint',
headers:
{ 'X-Request-ID': '1234567890',
'User-Agent': 'ifttt-wordpress-webhook' },
json: { message: 'Test' } }
*/
request(options);
}var params = {
user: {
name: 'foo',
password: 'bar'
},
webhook: webhook
};server = iftttWebHook(params);
```
## Options
### user
Type: `Object`*Mandatory*. Need to match the user and password filled out in the Wordpress Channel in IFTTT.
### webhook
Type: `Function`*Mandatory*. Function to invoke when the webhook is triggered.
### server
Type: `Object`
Default: `{host: 'localhost', path: '/xmlrpc.php', port: 80}`Specify XMLRPC server configuration that IFTTT service hits.
## Build
```bash
$ npm run build
````