diff --git a/using.fr.md b/using.fr.md index e2cb816..2fde635 100644 --- a/using.fr.md +++ b/using.fr.md @@ -2,132 +2,197 @@ Et PAF ! +## TL;DR -## Envoyer un ou plusieurs fichiers - -En utilisant des requêtes `multipart/form-data` il est possible d'envoyer un fichier : +Utilisez cette fonction `bash` : ```bash -$ curl http://localhost:8000/ -Fmanage.py=@manage.py -| URL | size | filename | -|-------------------------|--------|-----------| -| https://p.afpy.org/g3LE | 251 | manage.py | +paf() +{ + curl https://p.afpy.org/ "${@/*/-F&=@&}" +} +``` + +Cette fonction permet d'envoyer un fichier : + +```bash +$ paf manage.py +- https://p.afpy.org/TaPa/manage.py +``` + +Ou plusieurs : + +```bash +$ paf *.py +- https://p.afpy.org/d6Xd/admin.py +- https://p.afpy.org/d6Xd/context_processors.py +- https://p.afpy.org/d6Xd/__init__.py +- https://p.afpy.org/d6Xd/models.py +- https://p.afpy.org/d6Xd/urls.py +- https://p.afpy.org/d6Xd/utils.py +- https://p.afpy.org/d6Xd/views.py +``` + + +## Utilisation avec curl + +En utilisant des requêtes `multipart/form-data` il est possible d'envoyer un fichier : + +```bash +$ curl https://p.afpy.org/ -Fmanage.py=@manage.py +- https://p.afpy.org/TaPa/manage.py ``` ou plusieurs fichiers en même temps : ```bash -$ 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 | +$ curl https://p.afpy.org/ -Fmanage.py=@manage.py -Frequirements.txt=@requirements.txt +- https://p.afpy.org/Nz2o/manage.py +- https://p.afpy.org/Nz2o/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 +### Envoyer dans le corps d'une requête Il est possible de coller un unique fichier via le corps d'une requête POST : ```bash -$ cal | curl -XPOST --data-binary @- http://localhost:8000/ -| URL | size | filename | -|-------------------------|--------|----------| -| https://p.afpy.org/mo8X | 184 | request | +$ cal | curl -XPOST --data-binary @- https://p.afpy.org/ +- https://p.afpy.org/mo8X ``` Dans ce cas, il est possible de choisir la coloration syntaxique via l'entête `Content-Type` : ```bash -$ cal | curl -XPOST -H "Content-Type: text/plain" --data-binary @- http://localhost:8000/ -| URL | size | filename | -|-------------------------|--------|-------------| -| https://p.afpy.org/dNuo | 184 | request.txt | +$ cal | curl -XPOST -H "Content-Type: text/plain" --data-binary @- https://p.afpy.org/ +- https://p.afpy.org/i3Y2/request.txt ``` -## Fonction bash +### Choisir l'URL -Pour ceux qui ne souhaitent pas rédiger des requêtes `curl` toute la journée, voici une petite fonction bash : +Il est possible d'utiliser la méthode `PUT` sur une `URL` : + +```bash +$ cal | curl -XPUT --data-binary @- https://p.afpy.org/cal +- https://p.afpy.org/cal +``` + +```bash +$ curl -XPUT --data-binary @manage.py https://p.afpy.org/manage.py +- https://p.afpy.org/manage.py +``` + + +### Écraser un paste existant + +Lors du premier envoi d'un paste, vous pouvez lui affecter un secret via l'entête HTTP `Authorization` : + +```bash +$ date | curl -XPUT --data-binary @- -H "Authorization: Secret supersecret" https://p.afpy.org/date +- https://p.afpy.org/date +``` + +Ainsi vous pouvez mettre à jour ce `paste` en utilisant la même URL et le même secret : + +```bash +$ date | curl -XPUT --data-binary @- -H "Authorization: Secret supersecret" https://p.afpy.org/date +- https://p.afpy.org/date +$ curl https://p.afpy.org/date +Tue Apr 25 06:22:45 PM CEST 2023 +$ date | curl -XPUT --data-binary @- -H "Authorization: Secret supersecret" https://p.afpy.org/date +- https://p.afpy.org/date +$ curl https://p.afpy.org/date +Tue Apr 25 06:23:44 PM CEST 2023 +``` + +La page d'accueil est maintenue de cette manière la. + + +### Lister ses envois + +Tous les envois effectiés avec le même secret peuvent être listés via l'URL `/::/list/` : + +```bash +$ curl https://p.afpy.org/::/list/ -H "Authorization: Secret supersecret" +| filename | size | URL | paste_time | access_time | viewcount | +|------------|--------|---------------------|---------------------------|---------------------------|-------------| +| | 5168 | https://p.afpy.org/ | 2023-04-25T16:03:59+00:00 | 2023-04-25T16:26:59+00:00 | 2 | +``` + + +## Utilisation avancée + +Avec cette fonction (dont le secret doit être personalisé) : ```bash paf() { + local SECRET="supersecret" + local AUTH="-HAuthorization: Secret $SECRET" + local INSTANCE="https://p.afpy.org/" + + if [[ $1 == "--list" ]] + then + curl "$AUTH" $INSTANCE::/list/ + return + fi + if [[ $# == 0 ]] then - curl https://p.afpy.org/ --data-binary @- -H "Content-Type: text/plain" + curl "$AUTH" "$INSTANCE" --data-binary @- else - curl https://p.afpy.org/ "${@/*/-F&=@&}" + curl "$AUTH" "$INSTANCE" "${@/*/-F&=@&}" fi } ``` -Cette fonction est capable d'envoyer un fichier : +Il est possible : + +- d'envoyer un ou plusieurs fichiers, +- d'envoyer `stdin`, +- de lister ses envois. + +Exemple d'envoi via `stdin` : ```bash -$ paf manage.py -| URL | size | filename | -|-------------------------|--------|-----------| -| https://p.afpy.org/g3LE | 251 | manage.py | -``` - -plusieurs fichiers : - -```bash -$ 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 | +- https://p.afpy.org/aAkF ``` -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 : +Si vous voulez partager un dossier complet, vous pouvez simplement envoyer la liste des URL qui vous est renvoyée : ``` -$ paf *.py | paf -| URL | size | filename | -|-------------------------|--------|-------------| -| https://p.afpy.org/L5pc | 488 | request.txt | +$ paf *.py|paf +- https://p.afpy.org/nnLR ``` -Ce qui donne : +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 | +$ curl https://p.afpy.org/nnLR +- https://p.afpy.org/fAqR/admin.py +- https://p.afpy.org/fAqR/context_processors.py +- https://p.afpy.org/fAqR/__init__.py +- https://p.afpy.org/fAqR/models.py +- https://p.afpy.org/fAqR/urls.py +- https://p.afpy.org/fAqR/utils.py +- https://p.afpy.org/fAqR/views.py ``` -pratique pour partager tout un dossier. +Et qui est rendu avec des liens cliquables en HTML ! + ## 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) : +présenté avec de la coloration syntaxique : https://p.afpy.org/manage.py), +ou être consulté en ligne de commande (où il est délivré brut) : ``` -$ curl https://p.afpy.org/g3LE +$ curl https://p.afpy.org/manage.py #!/usr/bin/env python import os import sys