Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-02-2013 09:13:06

amelie
Membre
Lieu: Marseille
Date d'inscription: 05-02-2013
Messages: 113
Site web

Curl et API prestashop

Bonjour à tous,

Voilà je veux convertir le code suivant en quelque chose de plus zend compliant :

Code d'origine :

Code:

[lang=php]protected function executeRequest($url, $curl_params = array())
    {
        $defaultParams = array(
            CURLOPT_HEADER => TRUE,
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLINFO_HEADER_OUT => TRUE,
            CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
                        CURLOPT_ENCODING=> 'UTF-8',
            CURLOPT_USERPWD => $this->key.':',
            CURLOPT_HTTPHEADER => array( 'Expect:' )
                       
        );
        
        $session = curl_init($url);

        $curl_options = array();
        foreach ($defaultParams as $defkey => $defval)
        {
            if (isset($curl_params[$defkey]))
                $curl_options[$defkey] = $curl_params[$defkey];
            else
                $curl_options[$defkey] = $defaultParams[$defkey];
        }
        foreach ($curl_params as $defkey => $defval)
            if (!isset($curl_options[$defkey]))
                $curl_options[$defkey] = $curl_params[$defkey];

        curl_setopt_array($session, $curl_options);
              
                $response = curl_exec($session);
               
        $index = strpos($response, "\r\n\r\n");
        if ($index === false && $curl_params[CURLOPT_CUSTOMREQUEST] != 'HEAD')
            throw new PrestaShopWebserviceException('Mauvaise requête.');
        
        $header = substr($response, 0, $index);
        $body = substr($response, $index + 4);
                
                
        
        $headerArrayTmp = explode("\n", $header);
        
        $headerArray = array();
        foreach ($headerArrayTmp as &$headerItem)
        {
            $tmp = explode(':', $headerItem);
            $tmp = array_map('trim', $tmp);
            if (count($tmp) == 2)
                $headerArray[$tmp[0]] = $tmp[1];
        }
        
        if (array_key_exists('PSWS-Version', $headerArray))
        {
            if (
                version_compare(PrestaShopWebservice::psCompatibleVersionsMin, $headerArray['PSWS-Version']) == 1 ||
                version_compare(PrestaShopWebservice::psCompatibleVersionsMax, $headerArray['PSWS-Version']) == -1
            )
            throw new \Exception('Librairie incompatible avec cette version de Prestashop.');
        }
        
        if ($this->debug)
        {
            $this->printDebug('HTTP REQUEST HEADER', curl_getinfo($session, CURLINFO_HEADER_OUT));
            $this->printDebug('HTTP RESPONSE HEADER', $header);
            
        }
        $status_code = curl_getinfo($session, CURLINFO_HTTP_CODE);
        if ($status_code === 0)
            throw new PrestaShopWebserviceException('CURL Error: '.curl_error($session));
        curl_close($session);
        if ($this->debug)
        {
            if ($curl_params[CURLOPT_CUSTOMREQUEST] == 'PUT' || $curl_params[CURLOPT_CUSTOMREQUEST] == 'POST')
                $this->printDebug('XML SENT', $curl_params[CURLOPT_POSTFIELDS]);
            if ($curl_params[CURLOPT_CUSTOMREQUEST] != 'DELETE' && $curl_params[CURLOPT_CUSTOMREQUEST] != 'HEAD')
                $this->printDebug('RETURN HTTP BODY', $body);
        }
        return array('status_code' => $status_code, 'response' => $body, 'header' => $header);
    }[/lang]

Voici le code que j'ai proposé sauf qu'à l'ajout j'ai une bonne erreur 500, et pas au listing qui marche nickel :

Code:

 [lang=php]protected function executeRequest($url, $curl_params = array())
    {
        //var_dump($curl_params);
                
                $request = new \Zend\Http\Request();
                $request->setUri($url);
                $request->setMethod($curl_params['10036']);

                $client = new \Zend\Http\Client();
                $adapter = new \Zend\Http\Client\Adapter\Curl();
                $client->setAdapter($adapter);

                if($curl_params['10036'] == "GET"){
                    $adapter->setOptions(array(
                        'curloptions' => array(
                            CURLOPT_HEADER => TRUE,
                            CURLOPT_RETURNTRANSFER => TRUE,
                            CURLINFO_HEADER_OUT => TRUE,
                            CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
                            CURLOPT_ENCODING=> 'UTF-8',
                            CURLOPT_USERPWD => $this->key.':',
                            CURLOPT_HTTPHEADER => array( 'Expect:' )
                        )
                    ));
                }
        elseif($curl_params['10036'] == "POST"){
                     $adapter->setOptions(array(
                        'curloptions' => array(
                            CURLOPT_HEADER => TRUE,
                            CURLOPT_RETURNTRANSFER => TRUE,
                            CURLINFO_HEADER_OUT => TRUE,
                            CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
                            CURLOPT_ENCODING=> 'UTF-8',
                            CURLOPT_USERPWD => $this->key.':',
                            CURLOPT_HTTPHEADER => array( 'Expect:' ),
                            CURLOPT_CUSTOMREQUEST => 'POST', 
                            CURLOPT_POSTFIELDS => 'xml='.$curl_params['10015']
                        )
                    ));
                }
                
        
              
                $response = $client->dispatch($request);
               //var_dump($response);
        $index = strpos($response, "\r\n\r\n");
        if ($index === false && $curl_params[CURLOPT_CUSTOMREQUEST] != 'HEAD')
            throw new PrestaShopWebserviceException('Mauvaise requête.');
        
        $header = substr($response, 0, $index);
        $body = substr($response, $index + 4);
        
        $headerArrayTmp = explode("\n", $header);
        
        $headerArray = array();
        foreach ($headerArrayTmp as &$headerItem)
        {
            $tmp = explode(':', $headerItem);
            $tmp = array_map('trim', $tmp);
            if (count($tmp) == 2)
                $headerArray[$tmp[0]] = $tmp[1];
        }
        
        if (array_key_exists('PSWS-Version', $headerArray))
        {
            if (
                version_compare(PrestaShopWebservice::psCompatibleVersionsMin, $headerArray['PSWS-Version']) == 1 ||
                version_compare(PrestaShopWebservice::psCompatibleVersionsMax, $headerArray['PSWS-Version']) == -1
            )
            throw new \Exception('Librairie incompatible avec cette version de Prestashop.');
        }
        
        if ($this->debug)
        {
            $this->printDebug('HTTP RESPONSE HEADER', $header);
            
        }
        
                $status_code = $response->getStatusCode();
        if ($status_code === 0)
            throw new PrestaShopWebserviceException('CURL Error ! ');
        
        if ($this->debug)
        {
            if ($curl_params[CURLOPT_CUSTOMREQUEST] == 'PUT' || $curl_params[CURLOPT_CUSTOMREQUEST] == 'POST')
                $this->printDebug('XML SENT', $curl_params[CURLOPT_POSTFIELDS]);
            if ($curl_params[CURLOPT_CUSTOMREQUEST] != 'DELETE' && $curl_params[CURLOPT_CUSTOMREQUEST] != 'HEAD')
                $this->printDebug('RETURN HTTP BODY', $body);
        }
        return array('status_code' => $status_code, 'response' => $body, 'header' => $header);
    }[/lang]

Merci pour vos éclaircissements ... smile

Hors ligne

 

#2 26-02-2013 10:06:11

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Curl et API prestashop

Pourrais-tu être plus précis parce que balancer du code comme ça sans savoir à quoi ça sert, où tu l'a mis etc ... On peut pas beaucoup t'aider vu qu'on connait pas prestashop

Hors ligne

 

#3 27-02-2013 10:27:52

amelie
Membre
Lieu: Marseille
Date d'inscription: 05-02-2013
Messages: 113
Site web

Re: Curl et API prestashop

Bonjour,

Les femmes également font du Zend ...

Cordialement.

Hors ligne

 

#4 27-02-2013 11:06:03

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Curl et API prestashop

amelie a écrit:

Bonjour,

Les femmes également font du Zend ...

Cordialement.

Salut, eu je ne vois pas pourquoi tu dis ça Oo ? En quoi j'ai dit que les femmes ne faisait pas du Zend ?

Ce que je veux dire c'est qu'on a pas le contexte, on ne sait pas pourquoi tu fais "zendifier" le code, dans quel but ? Dans quel endroit de ton application ZF2 tu l'utilises (contrôleur, service etc ...) ? Ce que ce code fait parce que je ne connais pas prestashop et je ne pense pas que nous soyons nombreux à le connaitre car c'est avant tout un forum de support ZF2. Donc on est pas contre t'apporter de l'aide mais il nous faut un minimum d'informations pour pouvoir le faire. Et ça n'a rien à voir avec le fait que ça soit une femme, un homme, un chien, un singe ou je ne sais quoi d'autre qui développe big_smile. Personnellement je m'en fou mais imagine la situation inverse je te balance des lignes de code d'une application que tu ne connais pas et je te demande de me dire comment corriger mes problèmes sans tout t'expliquer. Tu ne vas pas pouvoir m'aider non plus.

Hors ligne

 

#5 27-02-2013 12:41:32

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: Curl et API prestashop

La communauté z-f France c'est aussi parfois de grands moments de détente et de décompression entre deux lignes de codes smile

@Amélie : si tu veux zendifier ta boutique, pourquoi ne pas carrément utiliser magento ? smile

@Amélie : Tu es célibataire ? big_smile


22914720

Hors ligne

 

#6 27-02-2013 13:55:36

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Curl et API prestashop

amelie a écrit:

Bonjour,

Les femmes également font du Zend ...

Cordialement.

J'avoue que je n'ai pas compris non plus ? oO


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#7 27-02-2013 14:05:35

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Curl et API prestashop

Bouks a écrit:

@Amélie : si tu veux zendifier ta boutique, pourquoi ne pas carrément utiliser magento ? smile

Je pensais à ça aussi mais je crois pas que ça soit migré sur du ZF2 aussi.

Bouks a écrit:

@Amélie : Tu es célibataire ? big_smile

Peu probable il y a tellement peu de femmes dans l'informatique que tout le monde saute dessus wink

Hors ligne

 

#8 27-02-2013 14:06:10

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: Curl et API prestashop

alien7 a écrit:

J'avoue que je n'ai pas compris non plus ? oO

http://forum.psychologies.com/psycholog … _450_1.htm ?


22914720

Hors ligne

 

#9 27-02-2013 14:08:09

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: Curl et API prestashop

Orkin a écrit:

Je pensais à ça aussi mais je crois pas que ça soit migré sur du ZF2 aussi.

Ils attendent que tu t'inscrives comme contributeur pour commencer la migration. smile


22914720

Hors ligne

 

#10 27-02-2013 21:22:19

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Curl et API prestashop

Bouks a écrit:

Ils attendent que tu t'inscrives comme contributeur pour commencer la migration. smile

J'aimerais bien mais malheureusement je n'ai pas le temps sad, ça me permettrait d'être aussi plus pertinent sur ce forum !

Hors ligne

 

#11 03-03-2013 14:54:01

amelie
Membre
Lieu: Marseille
Date d'inscription: 05-02-2013
Messages: 113
Site web

Re: Curl et API prestashop

Désolée d'avoir été brute de pomme, quand j'ai lu "peux-tu être plus précis" ça m'a rendue irritable. Beaucoup de forums à fort pourcentages masculin stigmatisent les femmes (j'en ai fait l'expérience sur un forum de photo), et ça me rend à fleur de peau ...
Pour le moment je laisse le fichier tel que. Mais merci d'avoir répondu smile

Hors ligne

 

#12 03-03-2013 16:00:20

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Curl et API prestashop

C'est pas parce qu'on veut en savoir plus pour mieux t'aider qu'on te stigmatise wink

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages