Aller au contenu
TYPEDébloqué
ÉTAPEGain rapide
DIFFICULTÉSimple
MÉTIERPrototyper vite
POURDevs backend
POURFondateurs solo
SERVICESPipe
SERVICESExec
POURQUOI HOODYHTTP-natif
POURQUOI HOODYEmbarquabilité
TYPEDébloqué
ÉTAPEGain rapide
DIFFICULTÉSimple
MÉTIERPrototyper vite
POURDevs backend
POURFondateurs solo
SERVICESPipe
SERVICESExec
POURQUOI HOODYHTTP-natif
POURQUOI HOODYEmbarquabilité
TYPEDébloqué
ÉTAPEGain rapide
DIFFICULTÉSimple
MÉTIERPrototyper vite
POURDevs backend
POURFondateurs solo
SERVICESPipe
SERVICESExec
POURQUOI HOODYHTTP-natif
POURQUOI HOODYEmbarquabilité
TYPEDébloqué
ÉTAPEGain rapide
DIFFICULTÉSimple
MÉTIERPrototyper vite
POURDevs backend
POURFondateurs solo
SERVICESPipe
SERVICESExec
POURQUOI HOODYHTTP-natif
POURQUOI HOODYEmbarquabilité
PIPE · NAVIGATEUR → STDIN

Des uploads en glisser-déposer dans votre script, sans une ligne d'upload écrite

hoody-pipe sert déjà un formulaire d'upload web sur chaque chemin qu'il possède. Glissez un fichier sur la page, les octets passent par le pipe et atterrissent dans le stdin de votre script. vous avez écrit zéro ligne de code d'upload.

Lire la doc pipe

pas de code d'upload, pas de bucket S3, pas d'URL pré-signées

Comment un drag devient un stream

hoody-pipe fait tourner une UI web à la racine du chemin et un fallback sans JavaScript sur /noscript. Les deux streament les octets multipart directement vers qui lit le même chemin. votre script lit le pipe — c'est tout le câblage qu'il y a.

navigateur → pipe → stdin4 ÉTAPES · ZÉRO HANDLER
  • 01

    Choisissez un chemin, partagez l'URL

    https://pipe.hoody.com/upload

    Tout chemin que vous n'avez pas réservé devient un pipe. L'URL est la page d'upload.

  • 02

    L'utilisateur dépose un fichier dans le navigateur

    GET /api/v1/pipe — formulaire d'upload servi automatiquement

    Hoody sert le formulaire pour vous : zone de dépôt, parser multipart, nonce CSP, tout inclus. /noscript existe pour les navigateurs restreints.

  • 03

    Les octets streament à travers le pipe

    PUT /api/v1/pipe/upload (multipart/form-data)

    La première part multipart est dépaquetée et streamée vers le receiver. Pas de staging côté serveur, pas de fichiers temporaires.

  • 04

    votre script lit stdin

    curl …/api/v1/pipe/upload | python process.py

    Receiver et sender se connectent dans une fenêtre TTL de 5 minutes. Le script ne sait pas qu'il est derrière une page web — il lit juste les octets.

process.sh
# 1. votre script lit le pipe
$curl https://pipe.hoody.com/api/v1/pipe/upload | python process.py
# 2. quelqu'un ouvre https://pipe.hoody.com/upload dans un navigateur,
# glisse invoice-q3.pdf sur la page,
# le formulaire PUT les octets jusqu'à vous.
# 3. votre script traite stdin et termine
[OK]enregistré dans /data/uploads/invoice-q3.pdf

Le pipe est le serveur d'upload. votre script est le receiver. Il n'y a pas de troisième processus — pas de Lambda, pas d'API gateway, pas de fonction de glue — entre la zone de dépôt et votre stdin.

Ce que vous n'avez pas eu à écrire

Chaque élément ci-dessous est une journée normale de travail à coder pour un uploader ponctuel. Le pipe livre tout ça.

FORMULAIRE WEB

Zone de dépôt, sélecteur de fichier, progression

L'UI du pipe rend une zone glisser-déposer, un fallback clic-pour-choisir, et un retour de progression. /noscript sert un formulaire HTML pur pour les navigateurs sans JS — même chemin, pas de code en plus.

TRANSPORT

Parsing multipart et streaming

Quand le navigateur POST en multipart/form-data, le serveur extrait la première part et la stream. Pas de bufferisation du body, pas de nettoyage de fichiers temporaires, pas de bibliothèque multipart de dix lignes.

SÉCURITÉ

Nonce CSP, sécurité MIME, preflight CORS

Le formulaire embarque un nonce CSP frais. Les types de contenu dangereux (text/html, image/svg+xml, application/javascript) sont réécrits en text/plain avant de vous arriver. OPTIONS gère le preflight cross-origin.

CONNEXION

Receiver d'abord ou sender d'abord, à vous de voir

Lancez votre script avant que quiconque n'uploade, ou après — le pipe maintient la connexion jusqu'à un TTL de 5 minutes jusqu'à ce que les deux extrémités soient présentes. Le nombre de receivers (n) est configurable jusqu'à 256.

Ce que ça remplace

Côte à côte : le pipeline d'upload que vous auriez codé, contre l'URL que vous pointez sur votre script.

SujetCe que vous coderiezCe que Hoody vous livre
  • Formulaire d'uploadApp Flask + dropzone.js + CSSGET /api/v1/pipe — déjà un formulaire
  • Parsing multipartMulter / formidable / busboyPremière part dépaquetée sur le câble
  • StockageBucket S3 + endpoint d'URL pré-signéeStream droit dans votre script
  • RoutageAPI Gateway + Lambda + IAMChoisissez un chemin, c'est la route
  • Fallback sans JSSecond formulaire, rendu côté serveur/noscript le sert gratuitement
  • Headers de sécuritéCSP, nonce, CORS, gardes MIMELivré avec le pipe

vous avez livré le script. Hoody a livré le formulaire d'upload.

VOUS AVEZ LIVRÉ

process.py — lit stdin, fait le boulot

while read chunk; do …
HOODY A LIVRÉ

la page, le formulaire, le parser, la sécurité

GET /api/v1/pipe — servi automatiquement
Lire la doc pipe

Ce que ça remplace

Les patterns que les développeurs dégainent quand ils ont besoin d'un upload de fichier ponctuel. Chacun facture une taxe d'install — buckets à provisionner, middlewares à installer, clés de signature à faire tourner. Le pipe est une URL.

  • AWS S3 (URLs pré-signées + bucket)Provisionner un bucket, signer des URLs, les expirer
  • Endpoints de routage maisonRoute par upload, codée à la main et oubliée
  • Middleware Multer / formidableBibliothèque multipart à installer et chouchouter
  • Services dropzone hébergésSaaS tiers, facturation séparée
  • Pipelines d'upload S3 + LambdaDeux services et de la glue IAM pour un formulaire
  • Filestack / UploadcareSDK vendor, lock-in vendor, tarifs vendor

Choisissez un chemin. Lisez le pipe. Le formulaire d'upload est déjà actif sur cette URL.

Lis les autres