| 2 | | ``FIXME:'' Put stuff here. |
| | 2 | = Extension Development = |
| | 3 | |
| | 4 | Tahoe has a programmatic API which enables building custom applications on top of the storage infrastructure. This ``RESTful'' interface uses HTTP, so extensions can be implemented as separate processes across a network. |
| | 5 | |
| | 6 | * The [/trac/tahoe/browser/docs/webapi.txt webapi.txt] document shows how to control a Tahoe node programmatically. |
| | 7 | |
| | 8 | == Known Extensions == |
| | 9 | |
| | 10 | None known yet... |
| | 11 | |
| | 12 | == Extension Implementation Issues == |
| | 13 | |
| | 14 | === HTTP methods === |
| | 15 | |
| | 16 | The api relies on four HTTP methods defined as per the standard {{{GET, POST, PUT, and DELETE}}}, which map intuitively to storage operations. |
| | 17 | |
| | 18 | Although these are standard HTTP methods, some clients do not offer good support for them. |
| | 19 | * The following clients are known to support all methods: |
| | 20 | * [http://curl.haxx.se/ curl] is an open source client which supports arbitrary methods with the '-X' option. |
| | 21 | * The following clients do not seem to support either {{{PUT}}} and {{{DELETE}}}: |
| | 22 | * Python 2.5's urllib module. (Not verified.) |
| | 23 | * We have not yet determined if the following have support for arbitrary methods: |
| | 24 | * Common web browsers. |
| | 25 | * Python 2.5's httplib. |
| | 26 | |