public static function createFromEnvironment()
 {
     $request = new self();
     $request->setProtocol(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on');
     $request->setMethod($_SERVER['REQUEST_METHOD']);
     $request->setHttpProtocol($_SERVER['SERVER_PROTOCOL']);
     $request->setHostName($_SERVER['HTTP_HOST']);
     $queryStart = strpos($_SERVER['REQUEST_URI'], '?');
     if ($queryStart !== false) {
         $request->setUri(substr($_SERVER['REQUEST_URI'], 0, $queryStart));
     } else {
         $request->setUri($_SERVER['REQUEST_URI']);
     }
     $request->setQueryString($_SERVER['QUERY_STRING']);
     $request->_setPostParameters($_POST);
     $headers = array();
     foreach ($_SERVER as $name => $value) {
         if (substr($name, 0, 5) !== 'HTTP_') {
             continue;
         }
         $headerName = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))));
         $headers[$headerName] = $value;
     }
     $request->setHeaders($headers);
     return $request;
 }
 /**
  * Build Artsit with URI and name
  * @access public
  * @static
  * @param  string $uri  Artist URI
  * @param  string $name Artist name
  * @return Artist
  */
 public static function build($uri, $name)
 {
     // create Artist instance
     $artistItem = new self();
     // update informations
     $artistItem->setUri((string) $uri);
     $artistItem->setName((string) $name);
     // return artist instance
     return $artistItem;
 }
Example #3
0
 /**
  * @param wfWAFRequest|null $request
  * @return wfWAFRequest
  */
 public static function createFromGlobals($request = null)
 {
     if ($request === null) {
         if (version_compare(phpversion(), '5.3.0') > 0) {
             $class = get_called_class();
             $request = new $class();
         } else {
             $request = new self();
         }
     }
     $request->setAuth(array());
     $request->setCookies(array());
     $request->setFileNames(array());
     $request->setFiles(array());
     $request->setHeaders(array());
     $request->setHost('');
     $request->setIP('');
     $request->setMethod('');
     $request->setPath('');
     $request->setProtocol('');
     $request->setTimestamp('');
     $request->setURI('');
     $request->setBody(wfWAFUtils::stripMagicQuotes($_POST));
     $request->setQueryString(wfWAFUtils::stripMagicQuotes($_GET));
     $request->setCookies(wfWAFUtils::stripMagicQuotes($_COOKIE));
     $request->setFiles(wfWAFUtils::stripMagicQuotes($_FILES));
     if (!empty($_FILES)) {
         $fileNames = array();
         foreach ($_FILES as $input => $file) {
             $fileNames[$input] = wfWAFUtils::stripMagicQuotes($file['name']);
         }
         $request->setFileNames($fileNames);
     }
     if (is_array($_SERVER)) {
         //All of these depend on $_SERVER being non-null and an array
         $auth = array();
         if (array_key_exists('PHP_AUTH_USER', $_SERVER)) {
             $auth['user'] = wfWAFUtils::stripMagicQuotes($_SERVER['PHP_AUTH_USER']);
         }
         if (array_key_exists('PHP_AUTH_PW', $_SERVER)) {
             $auth['password'] = wfWAFUtils::stripMagicQuotes($_SERVER['PHP_AUTH_PW']);
         }
         $request->setAuth($auth);
         if (array_key_exists('REQUEST_TIME_FLOAT', $_SERVER)) {
             $timestamp = $_SERVER['REQUEST_TIME_FLOAT'];
         } else {
             if (array_key_exists('REQUEST_TIME', $_SERVER)) {
                 $timestamp = $_SERVER['REQUEST_TIME'];
             } else {
                 $timestamp = time();
             }
         }
         $request->setTimestamp($timestamp);
         $headers = array();
         foreach ($_SERVER as $key => $value) {
             if (wfWAFUtils::strpos($key, 'HTTP_') === 0) {
                 $header = wfWAFUtils::substr($key, 5);
                 $header = str_replace(array(' ', '_'), array('', ' '), $header);
                 $header = ucwords(wfWAFUtils::strtolower($header));
                 $header = str_replace(' ', '-', $header);
                 $headers[$header] = wfWAFUtils::stripMagicQuotes($value);
             }
         }
         if (array_key_exists('CONTENT_TYPE', $_SERVER)) {
             $headers['Content-Type'] = wfWAFUtils::stripMagicQuotes($_SERVER['CONTENT_TYPE']);
         }
         if (array_key_exists('CONTENT_LENGTH', $_SERVER)) {
             $headers['Content-Length'] = wfWAFUtils::stripMagicQuotes($_SERVER['CONTENT_LENGTH']);
         }
         $request->setHeaders($headers);
         $host = '';
         if (array_key_exists('Host', $headers)) {
             $host = $headers['Host'];
         } else {
             if (array_key_exists('SERVER_NAME', $_SERVER)) {
                 $host = wfWAFUtils::stripMagicQuotes($_SERVER['SERVER_NAME']);
             }
         }
         $request->setHost($host);
         $request->setMethod(array_key_exists('REQUEST_METHOD', $_SERVER) ? wfWAFUtils::stripMagicQuotes($_SERVER['REQUEST_METHOD']) : 'GET');
         $request->setProtocol(array_key_exists('HTTPS', $_SERVER) && $_SERVER['HTTPS'] && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http');
         $request->setUri(array_key_exists('REQUEST_URI', $_SERVER) ? wfWAFUtils::stripMagicQuotes($_SERVER['REQUEST_URI']) : '');
         $uri = parse_url($request->getURI());
         if (is_array($uri) && array_key_exists('path', $uri)) {
             $path = $uri['path'];
         } else {
             $path = $request->getURI();
         }
         $request->setPath($path);
     }
     return $request;
 }
 /**
  * Extract Album informations from object
  * @access public
  * @static
  * @param  \stdClass $album Object represent Album
  * @return Album
  */
 public static function extractInfos($album)
 {
     // create Album instance
     $albumItem = new self();
     // update informations
     $albumItem->setUri((string) isset($album->href) ? $album->href : '');
     $albumItem->setName((string) isset($album->name) ? $album->name : '');
     // is popularity available ?
     if (isset($album->popularity)) {
         // update popularity
         $albumItem->setPopularity((double) $album->popularity);
     }
     // is released date available ?
     if (isset($album->released)) {
         // update released dates
         $albumItem->setReleased((string) $album->released);
     }
     // is teritories availabality available ?
     if (isset($album->availability) && isset($album->availability->territories)) {
         // update territories availability
         $albumItem->setTerritories(explode(' ', $album->availability->territories));
     }
     // is artists available (from search service) ?
     if (isset($album->artists) && is_array($album->artists)) {
         // setup artists container
         $artists = array();
         // iterate artists
         foreach ($album->artists as $artist) {
             // create Artist and store on container
             $artists[] = Artist::extractInfos($artist);
         }
         // set artists of album
         $albumItem->setArtists($artists);
     }
     // is artists available (from lookup service) ?
     if (isset($album->{'artist-id'}) && isset($album->artist)) {
         // create and store principal artist
         $albumItem->setArtist(Artist::build($album->{'artist-id'}, $album->artist));
     }
     // is tracks available ?
     if (isset($album->tracks) && is_array($album->tracks)) {
         // setup tracks container
         $tracks = array();
         // iterate external ids
         foreach ($album->tracks as $track) {
             // create Track and store on container
             $tracks[] = Track::extractInfos($track);
         }
         // set albums tracks
         $albumItem->setTracks($tracks);
     }
     // is external ids available ?
     if (isset($album->{'external-ids'}) && is_array($album->{'external-ids'})) {
         // setup external ids container
         $externalIds = array();
         // iterate external ids
         foreach ($album->{'external-ids'} as $externalId) {
             // create ExternalId and store on container
             $externalIds[] = ExternalId::extractInfos($externalId);
         }
         // set external ids of album
         $albumItem->setExternalIds($externalIds);
     }
     // return album instance
     return $albumItem;
 }
 /**
  * Extract Track informations from object
  * @access public
  * @static
  * @param  \stdClass $track Object represent Track
  * @return Track
  */
 public static function extractInfos($track)
 {
     // create Track instance
     $trackItem = new self();
     // update informations
     $trackItem->setUri((string) $track->href);
     $trackItem->setName((string) $track->name);
     // is popularity available ?
     if (isset($track->popularity)) {
         // update popularity
         $trackItem->setPopularity((double) $track->popularity);
     }
     // is disc number available ?
     if (isset($track->{'disc-number'})) {
         // update disc number
         $trackItem->setDiscNumber($track->{'disc-number'});
     }
     // is track number available ?
     if (isset($track->{'track-number'})) {
         // update track number
         $trackItem->setTrackNumber($track->{'track-number'});
     }
     // is track length available ?
     if (isset($track->length)) {
         // update track length
         $trackItem->setLength($track->length);
     }
     // is track albul available ?
     if (isset($track->album)) {
         // update track album
         $trackItem->setAlbum(Album::extractInfos($track->album));
     }
     // is artists available ?
     if (isset($track->artists) && is_array($track->artists)) {
         // setup artists container
         $artists = array();
         // iterate artists
         foreach ($track->artists as $artist) {
             // create Artist and store on container
             $artists[] = Artist::extractInfos($artist);
         }
         // set artists of track
         $trackItem->setArtists($artists);
     }
     // is external ids available ?
     if (isset($track->{'external-ids'}) && is_array($track->{'external-ids'})) {
         // setup external ids container
         $externalIds = array();
         // iterate external ids
         foreach ($track->{'external-ids'} as $externalId) {
             // create ExternalId and store on container
             $externalIds[] = ExternalId::extractInfos($externalId);
         }
         // set external ids of track
         $trackItem->setExternalIds($externalIds);
     }
     // is teritories availabality available ?
     if (isset($track->availability) && isset($track->availability->territories)) {
         // update territories availability
         $trackItem->setTerritories(explode(' ', $track->availability->territories));
     }
     // on retourne l'instance de la piste
     return $trackItem;
 }
Example #6
0
 /**
  * Factory method for <i>HttpRequest</i> creation from server
  *
  * This method uses superglobal array <code>$_SERVER</code> to build single
  * Request-Line consisting of <i>METHOD</i>, <i>URI</i> and <i>PROTOCOL</i>.
  * Headers and content is created via functions <code>getallheaders()</code>
  * and <code>file_get_contents()</code>.
  *
  * @return HttpRequest request object
  */
 public static function createFromServer()
 {
     $request = new self();
     $request->setMethod($_SERVER['REQUEST_METHOD']);
     $request->setUri($_SERVER['REQUEST_URI']);
     $request->setVersion($_SERVER['SERVER_PROTOCOL']);
     $request->setHeaders(getallheaders());
     $request->setContent(file_get_contents('php://input'));
     return $request;
 }