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; }
/** * @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; }
/** * 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; }