doc: drop mentions to .pow files ($deity REST their soul)
Co-authored-by: Roberto Abdelkader Martínez Pérez <robertomartinezp@gmail.com>
This commit is contained in:
@@ -11,7 +11,8 @@ In this example we'll be adding the header ``X-Content-Type-Options`` to the res
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat sniff.pow
|
||||
$ cat sniff-route
|
||||
#!/usr/bin/env sh
|
||||
kapow route add /sec-hello-world - <<-'EOF'
|
||||
kapow set /response/headers/X-Content-Type-Options nosniff
|
||||
kapow set /response/headers/Content-Type text/plain
|
||||
@@ -19,7 +20,7 @@ In this example we'll be adding the header ``X-Content-Type-Options`` to the res
|
||||
echo this will be interpreted as plain text | kapow set /response/body
|
||||
EOF
|
||||
|
||||
$ kapow server nosniff.pow
|
||||
$ kapow server nosniff-route
|
||||
|
||||
Testing with :program:`curl`:
|
||||
|
||||
@@ -67,7 +68,8 @@ Uploading a file using *Kapow!* is very simple:
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat upload.pow
|
||||
$ cat upload-route
|
||||
#!/usr/bin/env sh
|
||||
kapow route add -X POST /upload-file - <<-'EOF'
|
||||
kapow get /request/files/data/content | kapow set /response/body
|
||||
EOF
|
||||
@@ -89,7 +91,8 @@ In this example we reply the line count of the file received in the request:
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat count-file-lines.pow
|
||||
$ cat count-file-lines
|
||||
#!/usr/bin/env sh
|
||||
kapow route add -X POST /count-file-lines - <<-'EOF'
|
||||
|
||||
# Get sent file
|
||||
@@ -121,7 +124,8 @@ You can specify custom status code for `HTTP` response:
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat error.pow
|
||||
$ cat error-route
|
||||
#!/usr/bin/env sh
|
||||
kapow route add /error - <<-'EOF'
|
||||
kapow set /response/status 401
|
||||
echo -n '401 error' | kapow set /response/body
|
||||
@@ -158,7 +162,8 @@ In this example we'll redirect our users to `Google`:
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat redirect.pow
|
||||
$ cat redirect
|
||||
#!/usr/bin/env sh
|
||||
kapow route add /redirect - <<-'EOF'
|
||||
kapow set /response/headers/Location https://google.com
|
||||
kapow set /response/status 301
|
||||
@@ -196,7 +201,8 @@ In the next example we'll set a cookie:
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat cookie.pow
|
||||
$ cat cookie
|
||||
#!/usr/bin/env sh
|
||||
kapow route add /setcookie - <<-'EOF'
|
||||
CURRENT_STATUS=$(kapow get /request/cookies/kapow-status)
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ command line:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kapow server --keyfile path/to/keyfile --certfile path/to/certfile foobar.pow
|
||||
$ kapow server --keyfile path/to/keyfile --certfile path/to/certfile foobar-route
|
||||
|
||||
Now *Kapow!* is listening on its default port (8080) accepting requests over
|
||||
HTTPS. You can test it with the following command:
|
||||
@@ -60,7 +60,7 @@ CA certificate issuing the client certificates we want to accept with the
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kapow server --keyfile path/to/keyfile --certfile path/to/certfile --clientauth=true --clientcafile path/to/clientCAfile foobar.pow
|
||||
$ kapow server --keyfile path/to/keyfile --certfile path/to/certfile --clientauth=true --clientcafile path/to/clientCAfile foobar-route
|
||||
|
||||
With this configuration *Kapow!* will reject connections that do not present a
|
||||
client certificate or one certificate not issued by the specified CA. You can
|
||||
|
||||
@@ -10,7 +10,8 @@ from query params:
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat parallel.pow
|
||||
$ cat parallel-route
|
||||
#!/usr/bin/env sh
|
||||
kapow route add '/parallel/{ip1}/{ip2}' - <<-'EOF'
|
||||
ping -c 1 -- "$(kapow get /request/matches/ip1)" | kapow set /response/body &
|
||||
ping -c 1 -- "$(kapow get /request/matches/ip2)" | kapow set /response/body &
|
||||
@@ -30,5 +31,6 @@ Script debugging
|
||||
Bash provides the ``set -x`` builtin command that "After expanding each simple command,
|
||||
for command, case command, select command, or arithmetic for command, display the
|
||||
expanded value of PS4, followed by the command and its expanded arguments or associated
|
||||
word list". This feature can be used to help debugging the `.pow` scripts and, together
|
||||
the ``--debug`` option in the server sub-command, the scripts executed in user requests.
|
||||
word list". This feature can be used to help debugging the init programs and,
|
||||
together the ``--debug`` option in the server sub-command, the scripts executed
|
||||
in user requests.
|
||||
|
||||
@@ -3,7 +3,7 @@ Examples
|
||||
|
||||
.. toctree::
|
||||
|
||||
working_with_pow_files
|
||||
working_with_init_programs
|
||||
managing_routes
|
||||
handling_http_requests
|
||||
using_json
|
||||
|
||||
@@ -16,12 +16,13 @@ Example #1
|
||||
++++++++++
|
||||
|
||||
In this example our *Kapow!* service will receive a `JSON` value with an incorrect
|
||||
date, then our ``pow`` file will fix it and return the correct value to the user.
|
||||
date, then our init program will fix it and return the correct value to the user.
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat fix_date.pow
|
||||
$ cat fix_date
|
||||
#!/usr/bin/env sh
|
||||
kapow route add -X POST /fix-date - <<-'EOF'
|
||||
kapow set /response/headers/Content-Type application/json
|
||||
kapow get /request/body | jq --arg newdate "$(date +'%Y-%m-%d_%H-%M-%S')" '.incorrectDate=$newdate' | kapow set /response/body
|
||||
@@ -46,7 +47,8 @@ order to generate a two-attribute `JSON` response.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cat echo-attribute.pow
|
||||
$ cat echo-attribute
|
||||
#!/usr/bin/env sh
|
||||
kapow route add -X POST /echo-attribute - <<-'EOF'
|
||||
JSON_WHO=$(kapow get /request/body | jq -r .name)
|
||||
|
||||
|
||||
+35
-45
@@ -1,27 +1,28 @@
|
||||
Working with pow Files
|
||||
======================
|
||||
Working with Init Scripts
|
||||
=========================
|
||||
|
||||
Starting *Kapow!* using a pow file
|
||||
----------------------------------
|
||||
Starting *Kapow!* using an init script
|
||||
--------------------------------------
|
||||
|
||||
A :file:`pow` file is just a :command:`bash` script, where you make calls to the
|
||||
``kapow route`` command.
|
||||
An init program, which can be just a shell script, allows you to make calls to
|
||||
the ``kapow route`` command.
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ kapow server example.pow
|
||||
$ kapow server example-init-program
|
||||
|
||||
With the :file:`example.pow`:
|
||||
With the :file:`example-init-program`:
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat example.pow
|
||||
$ cat example-init-program
|
||||
#!/usr/bin/env sh
|
||||
#
|
||||
# This is a simple example of a pow file
|
||||
# This is a simple example of an init program
|
||||
#
|
||||
echo '[*] Starting my script'
|
||||
echo '[*] Starting my init program'
|
||||
|
||||
# We add 2 Kapow! routes
|
||||
kapow route add /my/route -c 'echo hello world | kapow set /response/body'
|
||||
@@ -29,32 +30,19 @@ With the :file:`example.pow`:
|
||||
|
||||
.. note::
|
||||
|
||||
*Kapow!* can be fully configured using just :file:`pow` files
|
||||
*Kapow!* can be fully configured using just init scripts
|
||||
|
||||
|
||||
Load More Than One pow File
|
||||
---------------------------
|
||||
Writing Multiline Routes
|
||||
------------------------
|
||||
|
||||
You can load more than one :file:`pow` file at time. This can help you keep
|
||||
your :file:`pow` files tidy.
|
||||
If you need to write more complex actions, you can leverage multiline routes:
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ ls pow-files/
|
||||
example-1.pow example-2.pow
|
||||
$ kapow server <(cat pow-files/*.pow)
|
||||
|
||||
|
||||
Writing Multiline pow Files
|
||||
---------------------------
|
||||
|
||||
If you need to write more complex actions, you can leverage multiline commands:
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat multiline.pow
|
||||
$ cat multiline-route
|
||||
#!/usr/bin/env sh
|
||||
kapow route add /log_and_stuff - <<-'EOF'
|
||||
echo this is a quite long sentence and other stuff | tee log.txt | kapow set /response/body
|
||||
cat log.txt | kapow set /response/body
|
||||
@@ -77,43 +65,45 @@ Keeping Things Tidy
|
||||
Sometimes things grow, and keeping things tidy is the only way to mantain the
|
||||
whole thing.
|
||||
|
||||
You can distribute your endpoints in several pow files. And you can keep the
|
||||
whole thing documented in one html file, served with *Kapow!*.
|
||||
You can distribute your endpoints in several init programs. And you can keep
|
||||
the whole thing documented in one html file, served with *Kapow!*.
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
$ cat index.pow
|
||||
$ cat index-route
|
||||
#!/usr/bin/env sh
|
||||
kapow route add / - <<-'EOF'
|
||||
cat howto.html | kapow set /response/body
|
||||
EOF
|
||||
|
||||
source ./info_stuff.pow
|
||||
source ./other_endpoints.pow
|
||||
source ./info_stuff
|
||||
source ./other_endpoints
|
||||
|
||||
As you can see, the `pow` files can be imported into another `pow` file using
|
||||
source. In fact, a `pow` file is just a regular shell script.
|
||||
You can import other shell script libraries with `source`.
|
||||
|
||||
Debugging scripts
|
||||
-----------------
|
||||
|
||||
Since *Kapow!* redirects the standard output and the standard error of the `pow`
|
||||
file given on server startup to its own, you can leverage ``set -x`` to see the
|
||||
commands that are being executed, and use that for debugging.
|
||||
Debugging Init Programs/Scripts
|
||||
-------------------------------
|
||||
|
||||
Since *Kapow!* redirects the standard output and the standard error of the init
|
||||
program given on server startup to its own, you can leverage ``set -x`` to see
|
||||
the commands that are being executed, and use that for debugging.
|
||||
|
||||
To support debugging user request executions, the server subcommand has a
|
||||
``--debug`` option flag that prompts *Kapow!* to redirect both the script's
|
||||
standard output and standard error to *Kapow!*'s standard output, so you can
|
||||
leverage ``set -x`` the same way as with `pow` files.
|
||||
leverage ``set -x`` the same way as with init programs.
|
||||
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cat withdebug.pow
|
||||
$ cat withdebug-route
|
||||
#!/usr/bin/env sh
|
||||
kapow route add / - <<-'EOF'
|
||||
set -x
|
||||
echo "This will be seen in the log"
|
||||
echo "Hi HTTP" | kapow set /response/body
|
||||
EOF
|
||||
|
||||
$ kapow server --debug withdebug.pow
|
||||
$ kapow server --debug withdebug-route
|
||||
Reference in New Issue
Block a user