API: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
No edit summary
No edit summary
Line 15: Line 15:
For instance, to open the door using curl:
For instance, to open the door using curl:


<tt>curl -X POST -d open=True http://api.noisebridge.net/gate/</tt>
<source lang="bash">   curl -X POST -d open=True http://api.noisebridge.net/gate/</source>
 
=== GET /hello/[name] ===
=== GET /hello/[name] ===


Line 29: Line 28:
Gets interesting stats about the gate. Currently:
Gets interesting stats about the gate. Currently:


<tt>json    {    ringing: boolean    }</tt>
<pre class="json">   {
 
     ringing: boolean
     }</pre>
Where 'ringing' is true if the gate buzzer is ringing at that moment, or in the last few seconds, as users may push the button for a very short time. The amount of time that this state is cached is totally up to the Gateman daemon that runs to interact with the gate hardware.
Where 'ringing' is true if the gate buzzer is ringing at that moment, or in the last few seconds, as users may push the button for a very short time. The amount of time that this state is cached is totally up to the Gateman daemon that runs to interact with the gate hardware.


Line 37: Line 37:
With open=True, opens the door. Returns a 300 error if unsuccessful, and the following additions to the /gate/ stats if successful:
With open=True, opens the door. Returns a 300 error if unsuccessful, and the following additions to the /gate/ stats if successful:


<tt>json    {    open : True    message: string    }</tt>
<pre class="json">   {
     open : True
     message: string
     }</pre>
With key=XXXX, will optionally check the key against the door code list.
 
Note that this isn't a required field. Currently if you omit the key field, the door will always open. It's intended to optionally allow other apps to offer the same door code authentication that we use for the phone booth entry.
 
=== POST /audio/ ===
 
With say=[TEXT] will convert the TEXT into speech, and announce it to the space.


== Adding to the API ==
== Adding to the API ==
Line 45: Line 55:
Just add a function of the form:
Just add a function of the form:


<tt>python @api_app.route(&quot;/myurl/&quot;) def myfunc()    do_something_in_the_space()</tt>
<source lang="python">@api_app.route(&quot;/myurl/&quot;)
<tt>return { 'success' : True, 'OMG IT WORXORRED' }</tt>
def myfunc()
 
     do_something_in_the_space()
    return { 'success' : True, 'OMG IT WORXORRED' }</source>
== Deploying your new API ==
== Deploying your new API ==


You'll need sudo powers on pony. Check out the code using git:
You'll need sudo powers on pony. Check out the code using git:


<tt>git clone /var/local/noise_api/</tt>
<source lang="bash">   git clone /var/local/noise_api/</source>
 
Make your changes, and test them locally using
Make your changes, and test them locally using


<tt>python api.py --debug</tt>
<source lang="bash">   python api.py --debug</source>
 
When you're ready to deploy, commit the code, then pull it out to the runningversion of api.py.
When you're ready to deploy, commit the code, then pull it out to the runningversion of api.py.


<tt>cd /var/local/noise_api/    </tt>
<source lang="bash">   cd /var/local/noise_api/
<tt>sudo git pull [your cloned directory goes here]</tt>
     sudo git pull [your cloned directory goes here]
<tt>sudo make install</tt>
    sudo make install</source>

Revision as of 23:58, 20 October 2012

API for Noisebridge

This is a very simple Python WSGI App that provides a RESTful API for fun things in the Noisebridge space.

In the Noisebridge tradition, it's not stable! It will, however try to break in as noisy a way as possible if things change.

Using the API

The API is currently only available within the space. Once we have authorisation running, this will change.

The API is RESTful, and can be called at the URL:

http://api.noisebridge.net/[call]

For instance, to open the door using curl:

<source lang="bash"> curl -X POST -d open=True http://api.noisebridge.net/gate/</source>

GET /hello/[name]

Returns 'hello [name]'

GET /spaceapi/

Returns Noisebridge status, formatted as per http://hackerspaces.nl/spaceapi/

GET /gate/

Gets interesting stats about the gate. Currently:

    {
    ringing: boolean
    }

Where 'ringing' is true if the gate buzzer is ringing at that moment, or in the last few seconds, as users may push the button for a very short time. The amount of time that this state is cached is totally up to the Gateman daemon that runs to interact with the gate hardware.

POST /gate/

With open=True, opens the door. Returns a 300 error if unsuccessful, and the following additions to the /gate/ stats if successful:

    {
    open : True
    message: string
    }

With key=XXXX, will optionally check the key against the door code list.

Note that this isn't a required field. Currently if you omit the key field, the door will always open. It's intended to optionally allow other apps to offer the same door code authentication that we use for the phone booth entry.

POST /audio/

With say=[TEXT] will convert the TEXT into speech, and announce it to the space.

Adding to the API

api.py is a Bottle. It should be pretty self explanatory, even if you don't know much Python.

Just add a function of the form:

<source lang="python">@api_app.route("/myurl/") def myfunc()

   do_something_in_the_space()
   return { 'success' : True, 'OMG IT WORXORRED' }</source>

Deploying your new API

You'll need sudo powers on pony. Check out the code using git:

<source lang="bash"> git clone /var/local/noise_api/</source> Make your changes, and test them locally using

<source lang="bash"> python api.py --debug</source> When you're ready to deploy, commit the code, then pull it out to the runningversion of api.py.

<source lang="bash"> cd /var/local/noise_api/

   sudo git pull [your cloned directory goes here]
   sudo make install</source>