source: spip-zone/_plugins_/rss_commits/trunk/inc/recuperer_rss_commits.php @ 99417

Last change on this file since 99417 was 99417, checked in by teddy.spip@…, 3 years ago

Prise en compte d'un feed pour le xml qui arrive parfois

File size: 2.1 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) {
4        return;
5}
6
7/**
8 * Récupérer le contenu d'un flux xml, mais aussi HTML, XHTML, image, etc.
9 * à partir d'une URL. Retourne un tableau contenant toutes les infos de l'entête
10 * HTTP du server et le contenu de la page.
11 *
12 * @param string $url URL de la page à récupérer
13 * @param string $login
14 * @param string $password
15 *
16 * @return array|mixed
17 */
18function inc_recuperer_rss_commits_dist($url, $login = '', $password = '') {
19        include_spip('inc/config');
20        $header = array();
21
22        // On teste si CURL est présent ou pas.
23        // Sinon on passe par recuperer_page()
24        if (function_exists('curl_init')) {
25                // code adapté du script issu de cette page :
26                // http://stackoverflow.com/a/14953910
27                $options = array(
28                        // set request type post or get
29                        CURLOPT_CUSTOMREQUEST => "GET",
30                        // set to GET
31                        CURLOPT_POST => false,
32                        // return web page
33                        CURLOPT_RETURNTRANSFER => true,
34                        // don't return headers
35                        CURLOPT_HEADER => false,
36                        // follow redirects
37                        CURLOPT_FOLLOWLOCATION => true,
38                        // set referer on redirect
39                        CURLOPT_AUTOREFERER => true,
40                        // timeout on connect
41                        CURLOPT_CONNECTTIMEOUT => 120,
42                        // timeout on response
43                        CURLOPT_TIMEOUT => 120,
44                        // stop after 10 redirects
45                        CURLOPT_MAXREDIRS => 10,
46                        // stop after 10 redirects
47                        CURLOPT_SSL_VERIFYPEER => false,
48                );
49
50                if (isset($login) and $login != '') {
51                        $options[CURLOPT_USERPWD] = $login . ':' . $password;    // don't return headers
52                        /* spip_log($login . ' ' . $password, 'rss_commits'); */
53                } else {
54                        $login = lire_config('rss_commits/login');
55                        $password = lire_config('rss_commits/password');
56                        $options[CURLOPT_USERPWD] = $login . ':' . $password;    // don't return headers
57                        // spip_log($login . ' ' . $password, 'rss_commits');
58                }
59
60                $ch = curl_init($url);
61                curl_setopt_array($ch, $options);
62                $content = curl_exec($ch);
63                $err = curl_errno($ch);
64                $errmsg = curl_error($ch);
65                $header = curl_getinfo($ch);
66                curl_close($ch);
67
68                $header['errno'] = $err;
69                $header['errmsg'] = $errmsg;
70                $header['content'] = $content;
71
72        } else {
73                $header['content'] = recuperer_page($url);
74        }
75
76        return $header;
77}
78
Note: See TracBrowser for help on using the repository browser.