ironio
v0.0.2
Published
iron.io bindings for node
Downloads
9
Readme
IronWorker Node Client
Getting Started
Install:
npm installation not supported yet
You can get your token
and project_id
at http://www.iron.io .
The reference IronWorker's REST/HTTP API is here: http://dev.iron.io/worker/reference/api/
IronWorker
List your account's projects:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.listProjects(function callBack(err, projects) {
projects.forEach(function (project)
{
console.log(project.id());
}
});
Note: the projects returned in the callback are objects on which you can make API calls
List tasks in a project:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.listTasks(function callBack(err, tasks) {
tasks.forEach(function (task)
{
console.log(task.id());
}
});
Note: the tasks returned in the callback are objects on which you can make API calls
List scheduled tasks in a project:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.listScheduledTasks(function callBack(err, scheduledTasks) {
tasks.forEach(function (scheduledTask)
{
console.log(scheduledTask.id());
}
});
Note: the scheduled tasks returned in the callback are objects on which you can make API calls
List code packages in a project:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.listCodePackages(function callBack(err, codePackages) {
tasks.forEach(function (codePackage)
{
console.log(codePackage.id());
}
});
Note: the code packages returned in the callback are objects on which you can make API calls
Queue a task:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.queueTask('code_name', 'payload', priority, timeout, delay, function (err,obj)
{
assertTrue(obj.msg == "Queued up");
});
Queue a task using the webhook:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.hookTask('code_name', 'payload', function (err,obj)
{
assertTrue(obj.msg == "Queued up");
});
Schedule a task:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.scheduleTask('code_name', 'payload', properties, function (err,obj)
{
assertTrue(obj.msg == "Scheduled");
});
Get info about a task:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.tasks('task_id')
.info(function (err,obj)
{
console.log(obj.id);
console.log(obj.project_id);
console.log(obj.code_id);
console.log(obj.code_history_id);
console.log(obj.status);
console.log(obj.code_name);
console.log(obj.code_rev);
console.log(obj.start_time);
console.log(obj.end_time);
console.log(obj.duration);
console.log(obj.timeout);
});
Get info about a scheduled task:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.scheduledTasks('task_id')
.info(function (err,obj)
{
console.dir(obj); // I am tired and don't feel like writing out all the properties :)
});
Get info about a code package:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.codePackages('code_id')
.info(function (err,obj)
{
console.dir(obj);
});
Get a task's log:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.tasks('task_id')
.log(function (err,obj)
{
console.log(obj); // Content-Type is “text/plain”
});
Cancel a task:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.tasks('task_id')
.cancel(function (err,obj)
{
assertTrue(obj.msg == "Cancelled");
});
Cancel a scheduled task:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.scheduledTasks('task_id')
.cancel(function (err,obj)
{
assertTrue(obj.msg == "Cancelled");
});
Set Progress on a task:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.tasks('task_id')
.progress(percent,'msg',function (err,obj)
{
assertTrue(obj.msg == "Progress Set");
});
Delete a code package:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.codePackages('code_id')
.delete(function (err,obj)
{
assertTrue(obj.msg == "Deleted");
});
Download a code package:
var ironWorker = require('ironmq').IronWorker;
ironWorker('token')
.projects('project_id')
.codePackages('code_id')
.download(function (err,obj)
{
fs.writeFile("myFile.zip",obj); // I think, haven't tried it yet.
});
IronCache
List your project's caches:
var ironCache = require('ironmq').IronCache;
ironCache('token')
.projects('project_id')
.listCaches(function callBack(err, caches) {
caches.forEach(function (cache)
{
console.log(cache.id());
}
});
Note: the caches returned in the callback are objects on which you can make API calls
Add an item to a cache:
var ironCache = require('ironmq').IronCache;
ironCache('token')
.projects('project_id')
.caches('cache_name')
.put(key,val,expires_in,replace,add,function callBack(err, obj) {
assertTrue(obj.msg == "Stored.");
});
Get an item from a cache:
var ironCache = require('ironmq').IronCache;
ironCache('token')
.projects('project_id')
.caches('cache_name')
.get(key,function callBack(err, obj) {
console.log("cur val: " + obj.value);
});
Increment an item's value:
var ironCache = require('ironmq').IronCache;
ironCache('token')
.projects('project_id')
.caches('cache_name')
.inc(key,amount,function callBack(err, obj) {
assertTrue(obj.msg == "Added");
console.log("new val: " + obj.value);
});
Delete an item from a cache:
var ironCache = require('ironmq').IronCache;
ironCache('token')
.projects('project_id')
.caches('cache_name')
.del(key,function callBack(err, obj) {
assertTrue(obj.msg == "Deleted");
});
IronMQ
Put a message on a queue:
var ironmq = require('ironmq')
ironmq('token')
.projects('project_id')
.queues('my_queue')
.put('hello world'
, function callBack(err, obj) {
obj.ids // array of ids posted
})
Get a message from a queue:
var ironmq = require('ironmq')
ironmq('token')
.projects('project_id')
.queues('my_queue')
.get(function callBack(err, msgs) {
msgs //array of msgs gotten
var msg = msgs.pop()
msg.id // id of message
msg.body // message data
msg.timeout // time until msg returns to queue
msg.del // function to delete this message
})
When you pop/get a message from the queue, it will NOT be deleted. It will eventually go back onto the queue after a timeout if you don't delete it (default timeout is 10 minutes).
Delete a message from a queue:
var ironmq = require('ironmq')
ironmq('token')
.projects('project_id')
.queues('my_queue')
.del('message_id'
, function callBack(err, obj) {
obj.msg === 'Deleted'
})
Delete a message from the queue when you're done with it.
Project Selection
// list projects
var ironmq = require('ironmq')
ironmq('token').list(function(err, obj) {
obj // array of project objects
})
var client = ironmq('token')
var project = client('project_id')
var project = ironmq('token').projects('project_id')
var project = ironmq('token')('project_id')
Queue Selection
Similar to project selection, any of the following:
project.list(function(err, obj){}
to get an array of queuesvar queue = project.queues('my_queue')
var queue = project('mq_queue')
Queue Information
queue.info(function(err, obj) {
obj.size // number of msg's in this queue
obj.time // new Date when this size was gotten
obj.get // get messages from this queue
obj.put // put messages on this queue
obj.del // delete messages from this queue
obj.info // update the size property for this queue
})
project.queues('my_queue', function(err, queue) {})
project('my_queue', function(err, queue) {})
Branching and Running the Tests
cd npm install tap npm install nock npm install require
Running the tests:
node node-modules/tap/bin/tap.js iron-mq-branch/tests/*.js