Aller au contenu
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Transformez vos commandes curl en Python, JavaScript, PHP, R, Go et bien d’autres avec CurlConverter

Si vous codez des outils qui utilisent des APIs ou d’autres services en ligne pour récupérer de la donnée ou en envoyer, j’imagine que vous adorez vous plonger dans leur documentation. En général, on y trouve des exemples de code qui expliquent comment « discuter » avec l’API, et ces exemples utilisent le plus souvent la commande curl. Quand on a de la chance, il y a aussi des exemples en python ou en JS voire JavaScript, mais ça ne va pas chercher plus loin.

Alors, comment faire pour gagner du temps si vous devez écrire du R, Go, C#, Ruby, Rust, Elixir, Java, MATLAB, Dart, CFML, Ansible URI ou encore du JSON ?

Et bien avec le site CurlConverter, vous allez pouvoir convertir toutes ces commandes curl dans le langage de votre choix. Il est également disponible avec la commande curlconverter que vous pouvez installer sur votre machine.

Par exemple, cette commande curl d’authentification :

curl "https://example.com/" -u "some_username:some_password"

Devient en DART le code suivant :

import 'dart:convert';
import 'package:http/http.dart' as http;

void main() async {
  var uname = 'some_username';
  var pword = 'some_password';
  var authn = 'Basic ' + base64Encode(utf8.encode('$uname:$pword'));

  var url = Uri.parse('https://example.com/');
  var res = await http.get(url, headers: {'Authorization': authn});
  if (res.statusCode != 200) throw Exception('http.get error: statusCode= ${res.statusCode}');
  print(res.body);
}

Ou en C# :

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://example.com/");

request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("some_username:some_password")));

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();

CurlConverter sait interpréter la syntaxe Bash, tels que les chaînes de caractères ANSI-C et les fichiers pipés. Il connaît également tous les arguments de curl (il y en a plus de 300 !!), y compris ceux qui ont été supprimés des versions récentes (et donc ignorés la plupart du temps). Il peut également convertir les données JSON en objets natifs et génère le code capable de le lire soit à partir d’un fichier ou d’un flux en entrée.

Malheureusement, seul le protocole HTTP est pris en charge, et les générateurs de code pour d’autres langages sont moins complets que le générateur pour Python.

Pour utiliser curlconverter, vous pouvez l’installer en tant que bibliothèque JavaScript avec la commande

npm install curlconverter

Ou comme outil utilisable en ligne de commande comme ceci :

npm install --global curlconverter

Voici un exemple de code généré à partir de cette commande :

$ curlconverter --data "hello=world" example.com
import requests

data = {
    'hello': 'world',
}

response = requests.post('http://example.com', data=data)

Bref, super pratique pour ceux qui veulent se simplifier le processus de création de requêtes HTTP dans leur langage favori, tout en se reposant sur des commandes curl plus familières.


Les articles du moment