hybridgroup/cylon

View on GitHub
examples/robot_commands/robot_commands.markdown

Summary

Maintainability
Test Coverage
# Robot Commands

This example demonstrates a feature of the Cylon API: running arbitrary commands
on robots over HTTP. To demonstrate this, we're going to make a basic robot,
with a custom command. This in and of itself is nothing to write home about, but
you'll be able to trigger the custom command by visiting this URL in your
browser:

```
http://localhost:8080/robots/frankie/commands/relax
```

First, let's make sure to load up Cylon:

    var Cylon = require('../..');

Now that we've got that, let's set up the api:

    // ensure you install the API plugin first:
    // $ npm install cylon-api-http
    Cylon.api();

And with that done let's define our robot:

    Cylon.robot({
      name: 'Frankie',

The result of this method will be returned to the HTTP client as part of a JSON
object.

      sayRelax: function() {
        return this.name + " says relax");
      },

Since we don't really care what actual work this robot does, but need to keep it
busy, we'll just tell it to print it's name every five seconds.

      work: function(my) {
        every((5).seconds(), function() {
          console.log(my.sayRelax());
        });
      },

We'll then set up the `commands` object, which tells the API which commands the
Robot has should be publically accessible:

      commands: function() {
        return {
          say_relax: this.sayRelax
        };
      }
    });

And now that all the pieces are in place, we can start up Cylon:

    Cylon.start();

Now the robot will print it's name to the console, and Cylon will serve an API
to `localhost:8080`. Check it out!.