OVH Community, votre nouvel espace communautaire.

Problème de créer Mailinglist en utilisant API


MaxV
28/08/2015, 09h08
Pas de soucis

Si je peux aider ^^
J'ai la même chose en python et je peux finir celui en bash si besoin.

LorenzoLux
28/08/2015, 08h34
Grand merci à toi, MaxV.

J’étais déjà un peu désespéré car dans plusieurs forums on n’a pas pu me donner de réponse à ce problème.

Cette solution a très bien marché et je peux finalement réaliser mon projet.

MaxV
27/08/2015, 18h03
Bonjour !

l'erreur est pas super explicite et je me suis bien galéré a débugger
Mais j'ai trouvé !
Code PHP:
function ovhApiCreateMailinglist $name $ownerEmail $moderatorMessage$subscribeByModerator$usersPostOnly$replyTo ) {

    
$url "https://eu.api.ovh.com/1.0/email/domain/{mon-domaine.fr}/mailingList";
    
$method "POST";
    
$body = array (
        
'language' => 'fr',
        
'name' => $name,
        
'options' => array (
            
'subscribeByModerator' => $subscribeByModerator,
            
'usersPostOnly' => $usersPostOnly,
            
'moderatorMessage' => $moderatorMessage
        
),
        
'ownerEmail' => $ownerEmail,
        
'replyTo' => $replyTo
    
);
    
$body json_encode($body);
    
$ovhTime ovhApiGetTime();
    
$toSign =  OVH_APP_SECRET '+' OVH_USER_KEY '+' $method '+' $url '+' $body '+' $ovhTime;
    
$hash '$1$' sha1$toSign );
    
    if ( ( 
$name == "" ) OR ( $ownerEmail == "" ) ) {
        exit();
    }

    
$curl curl_init();

    
$headers = array();
        
$headers[] = 'X-Ovh-Application:' OVH_APP_KEY;
        
$headers[] = 'X-Ovh-Timestamp:' $ovhTime;
        
$headers[] = 'X-Ovh-Signature:' $hash;
        
$headers[] = 'X-Ovh-Consumer:' OVH_USER_KEY;
        
$headers[] = 'Content-Type:application/json',

    
curl_setopt_array($curl, array(
        
CURLOPT_RETURNTRANSFER => 1,
        
CURLOPT_URL => $url,
        
CURLOPT_CUSTOMREQUEST => "POST",
        
CURLOPT_HTTPHEADER => $headers,
        
CURLOPT_POST => 1,
        
CURLOPT_POSTFIELDS => $body 
        
));

    
$result curl_exec$curl );
    
$result json_decode$resulttrue );
    
curl_close$curl );

    return 
$result;

Tes datas doivent être dans la signature, tu dois les encoder en json et ajouter "Content-Type:application/json" a tes headers.

LorenzoLux
21/08/2015, 10h40
Bonjour,

Je veux créer une nouvelle liste de distribution en utilisant l’API de OVH et j’ai rencontré un problème pour lequel je ne trouve pas de solution.

Ci-dessous le code que j’utilise pour faire la requête :

Code PHP:
function ovhApiCreateMailinglist $name $ownerEmail $moderatorMessage$subscribeByModerator$usersPostOnly$replyTo ) {

    
$url "https://eu.api.ovh.com/1.0/email/domain/{mon-domaine.fr}/mailingList";
    
$method "POST";
    
$body "";
    
$ovhTime ovhApiGetTime();
    
$toSign =  OVH_APP_SECRET '+' OVH_USER_KEY '+' $method '+' $url '+' $body '+' $ovhTime;
    
$hash '$1$' sha1$toSign );
    
    if ( ( 
$name == "" ) OR ( $ownerEmail == "" ) ) {
        exit();
    }

    
$curl curl_init();
    
$postData = array (
        
'language' => 'fr',
        
'name' => $name,
        
'options' => array (
            
'subscribeByModerator' => $subscribeByModerator,
            
'usersPostOnly' => $usersPostOnly,
            
'moderatorMessage' => $moderatorMessage
        
),
        
'ownerEmail' => $ownerEmail,
        
'replyTo' => $replyTo
    
);

    
$headers = array();
        
$headers[] = 'X-Ovh-Application:' OVH_APP_KEY;
        
$headers[] = 'X-Ovh-Timestamp:' $ovhTime;
        
$headers[] = 'X-Ovh-Signature:' $hash;
        
$headers[] = 'X-Ovh-Consumer:' OVH_USER_KEY;

    
curl_setopt_array($curl, array(
        
CURLOPT_RETURNTRANSFER => 1,
        
CURLOPT_URL => $url,
        
CURLOPT_CUSTOMREQUEST => "POST",
        
CURLOPT_HTTPHEADER => $headers,
        
CURLOPT_POST => 1,
        
CURLOPT_POSTFIELDS => $postData 
        
));

    
$result curl_exec$curl );
    
$result json_decode$resulttrue );
    
curl_close$curl );

    return 
$result;

Ici le message d’erreur que je reçois :

Code:
{"message":"[options] DomainMlOptionsStruct Data is not a hash for a complex type"}
Merci pour toute aide.