New route added for 'Control API' for retrieving route info
This commit is contained in:
+37
-9
@@ -98,7 +98,7 @@ TODO: Intro to Architecture
|
|||||||
|
|
||||||
### Core Concepts
|
### Core Concepts
|
||||||
|
|
||||||
In this section we are going to define several concepts that will be used
|
In this section we are going to define several concepts that will be used
|
||||||
frequently throughout the spec.
|
frequently throughout the spec.
|
||||||
|
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ whole lifetime of the server.
|
|||||||
|
|
||||||
## Design Principles
|
## Design Principles
|
||||||
|
|
||||||
* Kapow! implementations should follow a general principle of robustness: be
|
* Kapow! implementations should follow a general principle of robustness: be
|
||||||
conservative in what you do, be liberal in what you accept from others.
|
conservative in what you do, be liberal in what you accept from others.
|
||||||
* We reuse conventions of well-established software projects, such as Docker.
|
* We reuse conventions of well-established software projects, such as Docker.
|
||||||
* All requests and responses will leverage JSON as the data encoding method.
|
* All requests and responses will leverage JSON as the data encoding method.
|
||||||
@@ -339,6 +339,34 @@ Removes the route identified by `:id`.
|
|||||||
* **Notes**:
|
* **Notes**:
|
||||||
|
|
||||||
|
|
||||||
|
#### Retrieve route information
|
||||||
|
|
||||||
|
Retrieves the information about the route identified by `:id`.
|
||||||
|
|
||||||
|
* **URL**: `/routes/:id`
|
||||||
|
* **Method**: `GET`
|
||||||
|
* **Success Responses**:
|
||||||
|
* **Code**: `200 OK`<br />
|
||||||
|
**Content**:<br />
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"method": "GET",
|
||||||
|
"url_pattern": "/hello",
|
||||||
|
"entrypoint": null,
|
||||||
|
"command": "echo Hello World | response /body",
|
||||||
|
"index": 0,
|
||||||
|
"id": "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
* **Error Responses**:
|
||||||
|
* **Code**: `404 Not Found`
|
||||||
|
* **Sample Call**:<br />
|
||||||
|
```sh
|
||||||
|
$ curl -X GET $KAPOW_URL/routes/ROUTE_1f186c92_f906_4506_9788_a1f541b11d0f
|
||||||
|
```
|
||||||
|
* **Notes**:
|
||||||
|
|
||||||
|
|
||||||
# HTTP Data API
|
# HTTP Data API
|
||||||
|
|
||||||
It is the channel through which the actual HTTP data flows during the
|
It is the channel through which the actual HTTP data flows during the
|
||||||
@@ -425,12 +453,12 @@ following resource paths:
|
|||||||
- Returned Value: `foo`
|
- Returned Value: `foo`
|
||||||
- Comment: That would provide read-only access to the request URL parameter `q`.
|
- Comment: That would provide read-only access to the request URL parameter `q`.
|
||||||
- Obtain the `Content-Type` header of the request.
|
- Obtain the `Content-Type` header of the request.
|
||||||
- Scenario: A POST request with a JSON body and the header `Content-Type` set
|
- Scenario: A POST request with a JSON body and the header `Content-Type` set
|
||||||
to `application/json`.
|
to `application/json`.
|
||||||
- Key: `/request/headers/Content-Type`
|
- Key: `/request/headers/Content-Type`
|
||||||
- Access: Read-Only
|
- Access: Read-Only
|
||||||
- Returned Value: `application/json`
|
- Returned Value: `application/json`
|
||||||
- Comment: That would provide read-only access to the value of the request
|
- Comment: That would provide read-only access to the value of the request
|
||||||
header `Content-Type`.
|
header `Content-Type`.
|
||||||
- Read a field from a form.
|
- Read a field from a form.
|
||||||
- Scenario: A request generated by submitting this form:<br />
|
- Scenario: A request generated by submitting this form:<br />
|
||||||
@@ -446,7 +474,7 @@ following resource paths:
|
|||||||
- Key: `/request/form/firstname`
|
- Key: `/request/form/firstname`
|
||||||
- Access: Read-Only
|
- Access: Read-Only
|
||||||
- Returned Value: `Jane`
|
- Returned Value: `Jane`
|
||||||
- Comment: That would provide read-only access to the value of the field
|
- Comment: That would provide read-only access to the value of the field
|
||||||
`firstname` of the form.
|
`firstname` of the form.
|
||||||
- Set the response status code.
|
- Set the response status code.
|
||||||
- Scenario: A request is being attended.
|
- Scenario: A request is being attended.
|
||||||
@@ -462,7 +490,7 @@ following resource paths:
|
|||||||
- Access: Write-Only
|
- Access: Write-Only
|
||||||
- Acceptable Value: Any string of bytes.
|
- Acceptable Value: Any string of bytes.
|
||||||
- Default Value: N/A
|
- Default Value: N/A
|
||||||
- Comment: For media types other than `application/octet-stream` you should
|
- Comment: For media types other than `application/octet-stream` you should
|
||||||
specify the appropiate `Content-Type` header.
|
specify the appropiate `Content-Type` header.
|
||||||
|
|
||||||
**Note**: Parameters under `request` are read-only and, conversely, parameters under
|
**Note**: Parameters under `request` are read-only and, conversely, parameters under
|
||||||
@@ -471,12 +499,12 @@ following resource paths:
|
|||||||
|
|
||||||
#### Get handler resource
|
#### Get handler resource
|
||||||
|
|
||||||
Returns the value of the requested resource path, or an error if the resource
|
Returns the value of the requested resource path, or an error if the resource
|
||||||
path doesn't exist or is invalid.
|
path doesn't exist or is invalid.
|
||||||
|
|
||||||
* **URL**: `/handlers/{:handler_id}{:resource_path}`
|
* **URL**: `/handlers/{:handler_id}{:resource_path}`
|
||||||
* **Method**: `GET`
|
* **Method**: `GET`
|
||||||
* **URL Params**: FIXME: We think that here should be options to cook the value
|
* **URL Params**: FIXME: We think that here should be options to cook the value
|
||||||
in some way, or get it raw.
|
in some way, or get it raw.
|
||||||
* **Success Responses**:
|
* **Success Responses**:
|
||||||
* **Code**: `200 OK`<br />
|
* **Code**: `200 OK`<br />
|
||||||
@@ -497,7 +525,7 @@ path doesn't exist or is invalid.
|
|||||||
|
|
||||||
* **URL**: `/handlers/{:handler_id}{:resource_path}`
|
* **URL**: `/handlers/{:handler_id}{:resource_path}`
|
||||||
* **Method**: `PUT`
|
* **Method**: `PUT`
|
||||||
* **URL Params**: FIXME: We think that here should be options to cook the value
|
* **URL Params**: FIXME: We think that here should be options to cook the value
|
||||||
in some way, or pass it raw.
|
in some way, or pass it raw.
|
||||||
* **Data Params**: Binary payload.
|
* **Data Params**: Binary payload.
|
||||||
* **Success Responses**:
|
* **Success Responses**:
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
Feature: Fail to retrieve a route info in Kapow! server.
|
||||||
|
When trying to get a route info in the server, if it
|
||||||
|
does no exists the server respons with an error.
|
||||||
|
|
||||||
|
Scenario: Try to get info for a non-existing route.
|
||||||
|
A request of retrieving a non-existing route info
|
||||||
|
will trigger a not found error.
|
||||||
|
|
||||||
|
Given I have a just started Kapow! server
|
||||||
|
When I get the info for route with id "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx"
|
||||||
|
Then I get 404 as response code
|
||||||
|
And I get "Not Found" as response reason phrase
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
Feature: Retrieve route info in Kapow! server.
|
||||||
|
Users can retrieve route info from the server by
|
||||||
|
specifying its id.
|
||||||
|
|
||||||
|
Scenario: Retrieve route info.
|
||||||
|
Get route info by spscifying its id.
|
||||||
|
|
||||||
|
Given I have a Kapow! server whith the following routes:
|
||||||
|
| method | url_pattern | entrypoint | command |
|
||||||
|
| GET | /listRootDir | /bin/sh -c | ls -la / \| response /body |
|
||||||
|
| GET | /listDir/{dirname} | /bin/sh -c | ls -la /request/params/dirname \| response /body |
|
||||||
|
When I get the first route info
|
||||||
|
Then I get 200 as response code
|
||||||
|
And I get "OK" as response reason phrase
|
||||||
|
And I get the following response body:
|
||||||
|
"""
|
||||||
|
{
|
||||||
|
"method": "GET",
|
||||||
|
"url_pattern": "/listRootDir",
|
||||||
|
"entrypoint": "/bin/sh -c",
|
||||||
|
"command": "ls -la / | response /body",
|
||||||
|
"index": 0,
|
||||||
|
"id": ANY
|
||||||
|
}
|
||||||
|
"""
|
||||||
Reference in New Issue
Block a user