source: spip-zone/_plugins_/twitter/trunk/inc/twitteroauthspip.php @ 81826

Last change on this file since 81826 was 81826, checked in by cedric@…, 7 years ago

Le plugin utilise désormais l'API interne recuperer_page plutot que cURL, ce qui permet de passer par le proxy configuré dans SPIP

File size: 2.3 KB
Line 
1<?php
2/*
3 * Plugin spip|twitter
4 * (c) 2009-2013
5 *
6 * envoyer et lire des messages de Twitter
7 * distribue sous licence GNU/LGPL
8 *
9 */
10
11if (!defined("_ECRIRE_INC_VERSION")) return;
12
13include_spip('inc/twitteroauth');
14
15/**
16 * Twitter OAuth class
17 */
18class TwitterOAuthSPIP extends TwitterOAuth {
19
20  /**
21   * Make an HTTP request
22   *
23   * @return API results
24   */
25  function http($url, $method, $postfields = NULL) {
26          // var_dump(parent::http($url, $method, $postfields));
27          include_spip("inc/distant");
28
29                $taille_max = _INC_DISTANT_MAX_SIZE;
30          $trans = false;
31          $refuser_gz = false;
32          $date_verif = '';
33          $uri_referer = '';
34          $datas = '';
35          $boundary = '';
36          $current = $url;
37
38          switch ($method) {
39      case 'POST':
40                                if (!empty($postfields)) {
41                                  if (is_string($postfields)){
42                                    parse_str($postfields,$datas);
43                                  }
44                                  else
45                                    $datas = $postfields;
46
47                                  list($type, $postdata) = prepare_donnees_post($datas, $boundary);
48                                  $datas = $type . 'Content-Length: ' . strlen($postdata) . "\r\n\r\n" . $postdata;
49                                }
50                                break;
51      case 'DELETE':
52       if (!empty($postfields)) {
53               $current = "{$current}?{$postfields}";
54       }
55                }
56
57          $this->http_info = array(
58                  'url' => $current,
59                  'http_code' => 0,
60                  'content_type' => '',
61                  'header_size' => 0,
62                  'request_size' => 0,
63                  'redirect_count' => 0,
64          );
65          $this->url = $current;
66          $response = '';
67
68                // dix tentatives maximum en cas d'entetes 301...
69                for ($i = 0; $i<10; $i++){
70                  $current = recuperer_lapage($current, $trans, $method, $taille_max, $datas, $refuser_gz, $date_verif, $uri_referer);
71                        if (!$current) break;
72                        if (is_array($current)){
73                          break;
74                        }
75                  else
76                          spip_log("recuperer page recommence sur $current");
77                }
78
79          $this->info['redirect_count'] = $i;
80          if (!$current){
81                  $this->http_code = 500;
82                  $this->info['http_code'] = 500;
83                  if ($GLOBALS['meta']["http_proxy"])
84                    return $response;
85                  else
86                    return parent::http($url, $method, $postfields);
87          }
88          if (!is_array($current)){
89                  $this->http_code = 301;
90                  $this->http_info['http_code'] = 301;
91                  return $response;
92          }
93
94          $this->http_code = 200;
95          $this->http_info['http_code'] = 200;
96    list($headers, $response) = $current;
97
98          $this->http_info['header_size'] = strlen($headers);
99          $this->http_info['request_size'] = strlen($response);
100
101
102    return $response;
103  }
104
105}
Note: See TracBrowser for help on using the repository browser.