Source for file factory.php

Documentation is available at factory.php

  1. <?php
  2. /**
  3.  * @package     Joomla.Platform
  4.  * @subpackage  HTTP
  5.  *
  6.  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
  7.  * @license     GNU General Public License version 2 or later; see LICENSE
  8.  */
  9.  
  10. defined('JPATH_PLATFORM'or die;
  11.  
  12. /**
  13.  * HTTP factory class.
  14.  *
  15.  * @package     Joomla.Platform
  16.  * @subpackage  HTTP
  17.  * @since       12.1
  18.  */
  19. {
  20.     /**
  21.      * method to receive Http instance.
  22.      *
  23.      * @param   JRegistry  $options   Client options object.
  24.      * @param   mixed      $adapters  Adapter (string) or queue of adapters (array) to use for communication.
  25.      *
  26.      * @return  JHttp      Joomla Http class
  27.      *
  28.      * @since   12.1
  29.      */
  30.     public static function getHttp(JRegistry $options null$adapters null)
  31.     {
  32.         if (empty($options))
  33.         {
  34.             $options new JRegistry;
  35.         }
  36.  
  37.         return new JHttp($optionsself::getAvailableDriver($options$adapters));
  38.     }
  39.  
  40.     /**
  41.      * Finds an available http transport object for communication
  42.      *
  43.      * @param   JRegistry  $options  Option for creating http transport object
  44.      * @param   mixed      $default  Adapter (string) or queue of adapters (array) to use
  45.      *
  46.      * @return  JHttpTransport Interface sub-class
  47.      *
  48.      * @since   12.1
  49.      */
  50.     public static function getAvailableDriver(JRegistry $options$default null)
  51.     {
  52.         if (is_null($default))
  53.         {
  54.             $availableAdapters self::getHttpTransports();
  55.         }
  56.         else
  57.         {
  58.             settype($default'array');
  59.             $availableAdapters $default;
  60.         }
  61.  
  62.         // Check if there is at least one available http transport adapter
  63.         if (!count($availableAdapters))
  64.         {
  65.             return false;
  66.         }
  67.  
  68.         foreach ($availableAdapters as $adapter)
  69.         {
  70.             $class 'JHttpTransport' ucfirst($adapter);
  71.  
  72.             if ($class::isSupported())
  73.             {
  74.                 return new $class($options);
  75.             }
  76.         }
  77.  
  78.         return false;
  79.     }
  80.  
  81.     /**
  82.      * Get the http transport handlers
  83.      *
  84.      * @return  array  An array of available transport handlers
  85.      *
  86.      * @since   12.1
  87.      */
  88.     public static function getHttpTransports()
  89.     {
  90.         $names array();
  91.         $iterator new DirectoryIterator(__DIR__ . '/transport');
  92.  
  93.         foreach ($iterator as $file)
  94.         {
  95.             $fileName $file->getFilename();
  96.  
  97.             // Only load for php files.
  98.             // Note: DirectoryIterator::getExtension only available PHP >= 5.3.6
  99.             if ($file->isFile(&& substr($fileNamestrrpos($fileName'.'1== 'php')
  100.             {
  101.                 $names[substr($fileName0strrpos($fileName'.'));
  102.             }
  103.         }
  104.  
  105.         return $names;
  106.     }
  107. }

Documentation generated on Tue, 19 Nov 2013 15:02:49 +0100 by phpDocumentor 1.4.3