2023-04-21 12:32:45 +00:00
|
|
|
|
{% extends "base.html" %}
|
|
|
|
|
{% load filters %}
|
2013-04-04 17:37:30 +00:00
|
|
|
|
{% load i18n %}
|
|
|
|
|
{% load compress %}
|
|
|
|
|
{% block content %}
|
2023-04-21 08:12:46 +00:00
|
|
|
|
<h1>Paf'Py</h1>
|
2023-04-24 15:39:50 +00:00
|
|
|
|
<p>Et PAF !</p>
|
2018-05-19 09:13:34 +00:00
|
|
|
|
|
2023-04-24 15:39:50 +00:00
|
|
|
|
<h2>Envoyer un ou plusieurs fichiers</h2>
|
2018-05-19 09:13:34 +00:00
|
|
|
|
|
2023-04-24 15:39:50 +00:00
|
|
|
|
En utilisant des requêtes <tt>multipart/form-data</tt> il est possible
|
|
|
|
|
d'envoyer un fichier :
|
|
|
|
|
|
|
|
|
|
<div class="highlight"><pre><span></span>curl {{ request.build_absolute_uri }} <span class="o">-F</span>manage.py<span class="o">=</span>@manage.py
|
|
|
|
|
| URL | size | filename |
|
|
|
|
|
|-------------------------|--------|-----------|
|
|
|
|
|
| https://p.afpy.org/g3LE | 251 | manage.py |
|
|
|
|
|
</pre></div>
|
|
|
|
|
|
|
|
|
|
ou plusieurs fichiers en même temps :
|
|
|
|
|
|
|
|
|
|
<div class="highlight"><pre><span></span>curl {{ request.build_absolute_uri }} <span class="o">-F</span>manage.py<span class="o">=</span>@manage.py <span class="o">-F</span>requirements.txt<span class="o">=</span>@requirements.txt
|
|
|
|
|
| URL | size | filename |
|
|
|
|
|
|-------------------------|--------|------------------|
|
|
|
|
|
| https://p.afpy.org/g3LE | 251 | manage.py |
|
|
|
|
|
| https://p.afpy.org/k4oT | 547 | requirements.txt |
|
2023-04-21 08:12:46 +00:00
|
|
|
|
</pre></div>
|
2018-05-19 09:13:34 +00:00
|
|
|
|
|
2023-04-24 15:39:50 +00:00
|
|
|
|
C'est l'extension dans le nom du fichier qui permet de choisir la
|
|
|
|
|
coloration syntaxique pour chaque fichier.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>Envoyer dans le corps d'une requête</h2>
|
|
|
|
|
|
|
|
|
|
Il est possible de coller un unique fichier via le corps d'une requête <tt>POST</tt> :
|
2018-05-19 09:13:34 +00:00
|
|
|
|
|
2023-04-24 15:39:50 +00:00
|
|
|
|
<div class="highlight"><pre>
|
|
|
|
|
$ cal | curl -XPOST --data-binary @- {{ request.build_absolute_uri }}
|
|
|
|
|
| URL | size | filename |
|
|
|
|
|
|-------------------------|--------|----------|
|
|
|
|
|
| https://p.afpy.org/mo8X | 184 | request |
|
|
|
|
|
|
|
|
|
|
</pre></div>
|
|
|
|
|
|
|
|
|
|
Dans ce cas, il est possible de choisir la coloration syntaxique via l'entête <tt>Content-Type</tt> :
|
|
|
|
|
|
|
|
|
|
<div class="highlight"><pre>
|
|
|
|
|
$ cal | curl -XPOST -H <span class="s2">"Content-Type: text/plain"</span> --data-binary @- {{ request.build_absolute_uri }}
|
|
|
|
|
| URL | size | filename |
|
|
|
|
|
|-------------------------|--------|-------------|
|
|
|
|
|
| https://p.afpy.org/dNuo | 184 | request.txt |
|
|
|
|
|
|
|
|
|
|
</pre></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>Fonction <tt>bash</tt></h2>
|
|
|
|
|
|
|
|
|
|
<p>Pour ceux qui ne souhaitent pas rédiger des requêtes <tt>curl</tt>
|
|
|
|
|
toute la journée, voici une petite fonction <tt>bash</tt> :</p>
|
|
|
|
|
|
|
|
|
|
<div class="highlight"><pre><span></span>paf<span class="o">()</span>
|
2023-04-21 08:12:46 +00:00
|
|
|
|
<span class="o">{</span>
|
2023-04-24 15:39:50 +00:00
|
|
|
|
<span class="k">if</span> <span class="o">[[</span> <span class="nv">$#</span> <span class="o">==</span> <span class="m">0</span> <span class="o">]]</span>
|
|
|
|
|
<span class="k">then</span>
|
|
|
|
|
curl https://p.afpy.org/ --data-binary @- -H <span class="s2">"Content-Type: text/plain"</span>
|
|
|
|
|
<span class="k">else</span>
|
|
|
|
|
curl https://p.afpy.org/ <span class="s2">"</span><span class="si">${</span><span class="p">@/*/-F&=@&</span><span class="si">}</span><span class="s2">"</span>
|
|
|
|
|
<span class="k">fi</span>
|
2023-04-21 08:12:46 +00:00
|
|
|
|
<span class="o">}</span>
|
|
|
|
|
</pre></div>
|
|
|
|
|
|
2023-04-24 15:39:50 +00:00
|
|
|
|
Cette fonction est capable d'envoyer un fichier :
|
|
|
|
|
|
|
|
|
|
<div class="highlight"><pre><span></span>$ paf manage.py
|
|
|
|
|
| URL | size | filename |
|
|
|
|
|
|-------------------------|--------|-----------|
|
|
|
|
|
| https://p.afpy.org/g3LE | 251 | manage.py |
|
|
|
|
|
</pre></div>
|
|
|
|
|
|
|
|
|
|
plusieurs fichiers :
|
|
|
|
|
|
|
|
|
|
<div class="highlight"><pre><span></span>$ 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 |
|
|
|
|
|
</pre></div>
|
|
|
|
|
|
|
|
|
|
et même de lire sur <tt>stdin</tt> :
|
2023-04-21 08:12:46 +00:00
|
|
|
|
|
2023-04-24 15:39:50 +00:00
|
|
|
|
<div class="highlight"><pre><span></span>$ cal | paf
|
|
|
|
|
| URL | size | filename |
|
|
|
|
|
|-------------------------|--------|-------------|
|
|
|
|
|
| https://p.afpy.org/dNuo | 184 | request.txt |
|
2023-04-21 08:12:46 +00:00
|
|
|
|
</pre></div>
|
2023-04-21 14:48:32 +00:00
|
|
|
|
|
2023-04-24 15:39:50 +00:00
|
|
|
|
|
|
|
|
|
<h2>Accès aux collages</h2>
|
|
|
|
|
|
|
|
|
|
Chaque collage peut-être consulté dans un navigateur (où il est présenté avec de la coloration syntaxique :
|
|
|
|
|
<a href="https://p.afpy.org/g3LE">https://p.afpy.org/g3LE</a>), ou
|
|
|
|
|
être consulté en ligne de commande (où il est délivré brut) :
|
2023-04-21 14:48:32 +00:00
|
|
|
|
|
|
|
|
|
<div class="highlight"><pre><span></span>$ 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)
|
|
|
|
|
|
|
|
|
|
</pre></div>
|
|
|
|
|
|
2013-04-04 17:37:30 +00:00
|
|
|
|
{% endblock %}
|