4.1 KiB
Paf'Py
Et PAF !
Envoyer un ou plusieurs fichiers
En utilisant des requêtes multipart/form-data
il est possible d'envoyer un fichier :
$ curl http://localhost:8000/ -Fmanage.py=@manage.py
| URL | size | filename |
|-------------------------|--------|-----------|
| https://p.afpy.org/g3LE | 251 | manage.py |
ou plusieurs fichiers en même temps :
$ curl http://localhost:8000/ -Fmanage.py=@manage.py -Frequirements.txt=@requirements.txt
| URL | size | filename |
|-------------------------|--------|------------------|
| https://p.afpy.org/g3LE | 251 | manage.py |
| https://p.afpy.org/k4oT | 547 | requirements.txt |
C'est l'extension dans le nom du fichier qui permet de choisir la coloration syntaxique pour chaque fichier.
Envoyer dans le corps d'une requête
Il est possible de coller un unique fichier via le corps d'une requête POST :
$ cal | curl -XPOST --data-binary @- http://localhost:8000/
| URL | size | filename |
|-------------------------|--------|----------|
| https://p.afpy.org/mo8X | 184 | request |
Dans ce cas, il est possible de choisir la coloration syntaxique via l'entête Content-Type
:
$ cal | curl -XPOST -H "Content-Type: text/plain" --data-binary @- http://localhost:8000/
| URL | size | filename |
|-------------------------|--------|-------------|
| https://p.afpy.org/dNuo | 184 | request.txt |
Fonction bash
Pour ceux qui ne souhaitent pas rédiger des requêtes curl
toute la journée, voici une petite fonction bash :
paf()
{
if [[ $# == 0 ]]
then
curl https://p.afpy.org/ --data-binary @- -H "Content-Type: text/plain"
else
curl https://p.afpy.org/ "${@/*/-F&=@&}"
fi
}
Cette fonction est capable d'envoyer un fichier :
$ paf manage.py
| URL | size | filename |
|-------------------------|--------|-----------|
| https://p.afpy.org/g3LE | 251 | manage.py |
plusieurs fichiers :
$ paf *.py
| URL | size | filename |
|-------------------------|--------|-----------------------|
| https://p.afpy.org/bvRV | 188 | admin.py |
| https://p.afpy.org/5uei | 296 | context_processors.py |
| https://p.afpy.org/Xg5a | 1419 | models.py |
| https://p.afpy.org/GkGS | 309 | urls.py |
| https://p.afpy.org/LVXL | 2730 | views.py |
et même de lire sur stdin
:
$ cal | paf
| URL | size | filename |
|-------------------------|--------|-------------|
| https://p.afpy.org/dNuo | 184 | request.txt |
Dernière démo, puisque le résultat d'un envoi est un tableau de toutes les URL, il est tentant de le partager lui aussi :
$ paf *.py | paf
| URL | size | filename |
|-------------------------|--------|-------------|
| https://p.afpy.org/L5pc | 488 | request.txt |
Ce qui donne :
$ curl https://p.afpy.org/L5pc
| URL | size | filename |
|-------------------------|--------|-----------------------|
| https://p.afpy.org/7rFj | 188 | admin.py |
| https://p.afpy.org/DLfp | 296 | context_processors.py |
| https://p.afpy.org/9o33 | 0 | __init__.py |
| https://p.afpy.org/YdvG | 1419 | models.py |
| https://p.afpy.org/97fG | 309 | urls.py |
| https://p.afpy.org/oPRr | 2974 | views.py |
pratique pour partager tout un dossier.
Accès aux collages
Chaque collage peut-être consulté dans un navigateur (où il est présenté avec de la coloration syntaxique : https://p.afpy.org/g3LE), ou être consulté en ligne de commande (où il est délivré brut) :
$ curl https://p.afpy.org/g3LE
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "webtools.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)