How to create, run, update, stop and delete a managed source. In this case we use a Facebook Page source.
Require the DataSift library - choose one of these:
var DataSift = require('datasift-node'); // When running from NPM package
var DataSift = require('../lib/datasift'); // When running within datasift-node repository
Create a DataSift client object - insert your API credentials:
var ds = new DataSift('YOUR_USERNAME', 'YOUR_APIKEY');
A variable to store the source details for use later:
var sourceDetails;
Parameters & resources for the managed source:
var parameters = {
'likes': true,
'page_likes': true,
'posts_by_others': true,
'comments': true
};
var resources = [
{
'parameters': {
'url': 'http://www.facebook.com/theguardian',
'title': 'Some news page',
'id': 'theguardian'
}
}
];
var resourcesToAddLater = [
{
'parameters': {
"title": "The Sun",
"url": "http://www.facebook.com/thesun",
"id": "161385360554578"
}
}
];
Authentication parameters - enter tokens here from Facebook Page source :
var auth = [
{
'parameters': {
'value': 'YOUR_FACEBOOK_TOKEN'
}
}
];
var authToAddLater = [
{
'parameters': {
'value': 'ANOTHER_FACEBOOK_TOKEN'
}
}
];
This method creates the managed source:
function createSource() {
console.log("Creating managed source.");
ds.source.create({
"source_type": "facebook_page",
"name": "Example Facebook source",
"resources": JSON.stringify(resources),
"auth": JSON.stringify(auth),
"parameters": JSON.stringify(parameters)
}, function(err, response) {
if (err)
console.log(err);
else
{
sourceDetails = response;
console.log("Created source ID: " + sourceDetails.id);
startSource();
}
});
}
This method starts the source:
function startSource() {
ds.source.start({
"id": sourceDetails.id
}, function(err, response) {
if (err)
console.log(err);
else
{
console.log("Source started.");
updateSource();
}
});
}
This method updates the source:
function updateSource() {
console.log("Updating managed source.");
ds.source.update({
"id": sourceDetails.id,
"source_type": "facebook_page",
"name": "Updated Facebook source"
}, function(err, response) {
if (err)
console.log(err);
else
{
console.log("Updated source ID: " + response.id);
getSource();
}
});
}
This method gets the source’s details:
function getSource() {
ds.source.get({
"id": sourceDetails.id
}, function(err, response) {
if (err)
console.log(err);
else
{
console.log("Source details: " + JSON.stringify(response));
addResource();
}
});
}
This method adds a new resource to the source:
function addResource() {
console.log("Adding resource to managed source.");
ds.source.resource.add({
"id": sourceDetails.id,
"resources": JSON.stringify(resourcesToAddLater),
"validate": true
}, function(err, response) {
if (err)
console.log(err);
else
{
sourceDetails = response;
var newResourceId = sourceDetails.resources[1].resource_id;
console.log("New resource ID: " + newResourceId);
removeResource(newResourceId);
}
});
}
This method removes a resource from the source:
function removeResource(resourceId) {
console.log("Removing resource from managed source.");
ds.source.resource.remove({
"id": sourceDetails.id,
"resource_ids": JSON.stringify([resourceId])
}, function(err, response) {
if (err)
console.log(err);
else
{
console.log("Removed resource ID: " + resourceId);
addAuth();
}
});
}
This method adds a new auth token to the source:
function addAuth() {
console.log("Adding auth token to managed source.");
ds.source.auth.add({
"id": sourceDetails.id,
"auth": JSON.stringify(authToAddLater),
"validate": true
}, function(err, response) {
if (err)
console.log(err);
else
{
sourceDetails = response;
var newAuthId = sourceDetails.auth[1].identity_id;
console.log("New auth ID: " + newAuthId);
removeAuth(newAuthId);
}
});
}
This method removes an auth token from the source:
function removeAuth(authId) {
console.log("Removing auth from managed source.");
ds.source.auth.remove({
"id": sourceDetails.id,
"auth_ids": JSON.stringify([authId])
}, function(err, response) {
if (err)
console.log(err);
else
{
console.log("Removed auth ID: " + authId);
getSourceLog();
}
});
}
This method gets the source’s log:
function getSourceLog() {
ds.source.log({
"id": sourceDetails.id
}, function(err, response) {
if (err)
console.log(err);
else
{
console.log("Source log: " + JSON.stringify(response));
stopSource();
}
});
}
This method gets stops the source:
function stopSource() {
ds.source.stop({
"id": sourceDetails.id
}, function(err, response) {
if (err)
console.log(err);
else
{
console.log("Source stopped.");
deleteSource();
}
});
}
This method deletes the source:
function deleteSource() {
ds.source.delete({
"id": sourceDetails.id
}, function(err, response) {
if (err)
console.log(err);
else
{
console.log("Source deleted.");
}
});
}
Finally we start the process by creating the source. This will lead to:
createSource();