Django PHP et Rest sont dans un bateau ... PUT

Hé non PUT n'est pas le début d'une injure ... mais comment faire une requête de type PUT en PHP quand on s'adresse à un service Rest fournis par Django ... oui là c'est de la technique, c'est du dev et comme j'ai passé quelques heures à me faire mal aux neurones à ce sujet je partage la solution.

modoboa.png

Changer le quota d'un usager

<?php
$url = "https://adresse_de_votre_modoboa/api/v1";
$crl = curl_init();

$headr = array();
$headr[] = 'Content-type: application/json';
$headr[] = 'Authorization:  Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //utilisation du Token généré sur l'interface d'administration de modoboa

$data = array( "pk" => $id,
		 "username" => "$login",
		 "is_active" => true,
		 "master_user" => false,
		 "mailbox" => array(	"full_address" => "$login",
					"use_domain_quota" => false,
					"quota" => $newquota
					),
		 "role" => "SimpleUsers"
 );

$data_string = json_encode($data);
$headr[] = 'Content-length: ' . strlen($data_string);
//important -> PUT
$headr[] = 'X-HTTP-Method-Override: PUT';
  
curl_setopt($crl, CURLOPT_REFERER, $referer);
curl_setopt($crl, CURLOPT_URL, $url . "/accounts/$id/");
curl_setopt($crl, CURLOPT_HTTPHEADER, $headrUpdate);
curl_setopt($crl, CURLOPT_POSTFIELDS, $data_string);
//surtout pas ... curl_setopt($crl, CURLOPT_PUT, true);
curl_setopt($crl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($crl, CURLOPT_RETURNTRANSFER, true);

$rest = curl_exec($crl);
if ($rest === false)
{
  // throw new Exception('Curl error: ' . curl_error($crl));
  print_r('Curl error: ' . curl_error($crl));
}

curl_close($crl);
print_r($rest);
?>
QR code
Send to friend

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

URL de rétrolien : https://e.garluche.fr/trackback/799