Fichier ecrire/inc/distant.php

Ce fichier gère l'obtention de données distantes

Source

Liste des constantes

Valeur

  • 2097152

Package

Valeur

  • 'SPIP-' . $GLOBALS['spip_version_affichee'] . ' (' . $GLOBALS['home_server'] . ')'

Package

Valeur

  • 'HTTP/1.0'

Package

Valeur

  • ',' . preg_replace('@^https?:@', 'https?:', isset($GLOBALS['meta']['adresse_site']) ? $GLOBALS['meta']['adresse_site'] : '') . '/?spip.php[?]action=acceder_document.file=(.)$,'

Package

Liste des fonctions

Prend en argument un chemin relatif au rep racine, ou une URL Renvoie un chemin relatif au rep racine, ou false

boolean | string copie_locale( string $source , string $mode = 'auto' , string $local = null , integer $taille_max = null )

Paramètres

  1. string $source
  2. string $mode = 'auto'
    • 'test' - ne faire que tester
    • 'auto' - charger au besoin
    • 'modif' - Si deja present, ne charger que si If-Modified-Since
    • 'force' - charger toujours (mettre a jour)
  3. string $local = null

    permet de specifier le nom du fichier local (stockage d'un cache par exemple, et non document IMG)

  4. integer $taille_max = null

    taille maxi de la copie local, par defaut _COPIE_LOCALE_MAX_SIZE

Retour

  • boolean | string

Utilisé par

Appelle le pipeline

Package

Soit obtient l'extension du fichier directement de l'URL de la source, soit tente de le calculer.

string fichier_copie_locale( string $source )

Paramètres

  1. string $source

    URL de la source distante

Retour

  • string

    Nom du fichier calculé

Package

Décompose l'url en son schema+host+path+port et lance la requete. Retourne le descripteur sur lequel lire la réponse.

array init_http( string $method , string $url , boolean $refuse_gz = false , string $referer = '' , string $datas = '' , string $vers = 'HTTP/1.0' , string $date = '' )

Paramètres

  1. string $method

    HEAD, GET, POST

  2. string $url
  3. boolean $refuse_gz = false
  4. string $referer = ''
  5. string $datas = ''
  6. string $vers = 'HTTP/1.0'
  7. string $date = ''

Retour

  • array

Utilisé par

Package

boolean | resource lance_requete( string $method , string $scheme , array $user , string $host , string $path , string $port , boolean $noproxy , boolean $refuse_gz = false , string $referer = '' , string $datas = '' , string $vers = 'HTTP/1.0' , integer | string $date = '' )

Paramètres

  1. string $method

    type de la requete (GET, HEAD, POST...)

  2. string $scheme

    protocole (http, tls, ftp...)

  3. array $user

    couple (utilisateur, mot de passe) en cas d'authentification http

  4. string $host

    nom de domaine

  5. string $path

    chemin de la page cherchee

  6. string $port

    port utilise pour la connexion

  7. boolean $noproxy

    protocole utilise si requete sans proxy

  8. boolean $refuse_gz = false

    refuser la compression GZ

  9. string $referer = ''

    referer

  10. string $datas = ''

    donnees postees

  11. string $vers = 'HTTP/1.0'

    version HTTP

  12. integer | string $date = ''

    timestamp pour entente If-Modified-Since

Retour

  • boolean | resource

    false|int si echec resource socket vers l'url demandee

Utilisé par

Package

On peut passer en parametre le proxy et la liste des host exclus, pour les besoins des tests, lors de la configuration

string need_proxy( string $host , string $http_proxy = null , string $http_noproxy = null )

Paramètres

  1. string $host
  2. string $http_proxy = null
  3. string $http_noproxy = null

Retour

  • string

Package

Si on doit conserver une copie locale des fichiers distants, autant que ca soit à un endroit canonique

string nom_fichier_copie_locale( string $source , string $extension )

Paramètres

  1. string $source

    URL de la source

  2. string $extension

    Extension du fichier

Retour

  • string

    Nom du fichier pour copie locale

Utilisé par

Package

Note

  • Si ca peut être bijectif c'est encore mieux, mais là tout de suite je ne trouve pas l'idee, étant donné les limitations des filesystems

..

  • on traite les retour ligne pour les mettre au bon format

  • on decoupe en entete/corps (separes par ligne vide) si $donnees est un tableau

  • structuration en chaine avec boundary si necessaire ou fournie et bon Content-Type

array prepare_donnees_post( string | array $donnees , string $boundary = '' )

Paramètres

  1. string | array $donnees
  2. string $boundary = ''

Retour

  • array

    entete,corps

Utilisé par

Package

boolean | integer | string recuperer_body( resource $handle , integer $taille_max = _INC_DISTANT_MAX_SIZE , string $fichier = '' )

Paramètres

  1. resource $handle
  2. integer $taille_max = _INC_DISTANT_MAX_SIZE
  3. string $fichier = ''

    fichier dans lequel copier le contenu de la resource

Retour

  • boolean | integer | string

    bool false si echec int taille du fichier si argument fichier fourni string contenu de la resource

Utilisé par

Package

boolean | array recuperer_entetes_complets( resource $handle , integer | boolean $if_modified_since = false )

Paramètres

  1. resource $handle
  2. integer | boolean $if_modified_since = false

Retour

  • boolean | array

    int status string headers int last_modified string location

Utilisé par

Package

array recuperer_infos_distantes( string $source , integer $max , boolean $charger_si_petite_image = true )

Paramètres

  1. string $source

    URL de la source

  2. integer $max

    Taille maximum du fichier à télécharger

  3. boolean $charger_si_petite_image = true

    Pour télécharger le document s'il est petit

Retour

  • array

    Couples des informations obtenues parmis :

    - 'body' = chaine
    - 'type_image' = booleen
    - 'titre' = chaine
    - 'largeur' = intval
    - 'hauteur' = intval
    - 'taille' = intval
    - 'extension' = chaine
    - 'fichier' = chaine
    - 'mime_type' = chaine

Utilisé par

Package

array | boolean recuperer_url( string $url , array $options = array() )

Paramètres

  1. string $url
  2. array $options = array()

    bool transcoder : true si on veut transcoder la page dans le charset du site string methode : Type de requête HTTP à faire (HEAD, GET, POST, PUT, DELETE) int taille_max : Arrêter le contenu au-delà (0 = seulement les entetes ==> requête HEAD). Par defaut taille_max = 1Mo ou 16Mo si copie dans un fichier array headers : tableau associatif d'entetes https a envoyer string|array datas : Pour envoyer des donnees (array) et/ou entetes au complet, avec saut de ligne entre headers et donnees ( string @see prepare_donnees_post()) (force la methode POST si donnees non vide) string boundary : boundary pour formater les datas au format array bool refuser_gz : Pour forcer le refus de la compression (cas des serveurs orthographiques) int if_modified_since : Un timestamp unix pour arrêter la récuperation si la page distante n'a pas été modifiée depuis une date donnée string uri_referer : Pour préciser un référer différent string file : nom du fichier dans lequel copier le contenu int follow_location : nombre de redirections a suivre (0 pour ne rien suivre) string version_http : version du protocole HTTP a utiliser (par defaut defini par la constante _INC_DISTANT_VERSION_HTTP)

Retour

  • array | boolean

    false si echec array sinon : int status : le status de la page string headers : les entetes de la page string page : le contenu de la page (vide si copie dans un fichier) int last_modified : timestamp de derniere modification string location : url de redirection envoyee par la page string url : url reelle de la page recuperee int length : taille du contenu ou du fichier

    string file : nom du fichier si enregistre dans un fichier

Package

Le délai de cache est fourni par l'option delai_cache Les autres options et le format de retour sont identiques à la fonction recuperer_url

array | boolean | mixed recuperer_url_cache( string $url , array $options = array() )

Paramètres

  1. string $url
  2. array $options = array()

    int delai_cache : anciennete acceptable pour le contenu (en seconde)

Retour

  • array | boolean | mixed

Package

url_to_ascii()

Convertir une URL dont le host est en utf8 en ascii Utilise la librairie https://github.com/phlylabs/idna-convert/tree/v0.9.1 dans sa derniere version compatible toutes version PHP 5 La fonction PHP idn_to_ascii depend d'un package php5-intl et est rarement disponible

array | string url_to_ascii( string $url_idn )

Paramètres

  1. string $url_idn

Retour

  • array | string

Package

false | string valider_url_distante( string $url , array $known_hosts = array() )

Paramètres

  1. string $url
  2. array $known_hosts = array()

    url/hosts externes connus et acceptes

Retour

  • false | string

    url ou false en cas d'echec

Package