Auth_Yadis_HTTPFetcher::_findRedirect PHP Method

_findRedirect() public method

public _findRedirect ( $headers, $url )
    function _findRedirect($headers, $url)
    {
        foreach ($headers as $line) {
            if (strpos(strtolower($line), "location: ") === 0) {
                $parts = explode(" ", $line, 2);
                $loc = $parts[1];
                $ppos = strpos($loc, "://");
                if ($ppos === false || $ppos > strpos($loc, "/")) {
                    /* no host; add it */
                    $hpos = strpos($url, "://");
                    $prt = substr($url, 0, $hpos + 3);
                    $url = substr($url, $hpos + 3);
                    if (substr($loc, 0, 1) == "/") {
                        /* absolute path */
                        $fspos = strpos($url, "/");
                        if ($fspos) {
                            $loc = $prt . substr($url, 0, $fspos) . $loc;
                        } else {
                            $loc = $prt . $url . $loc;
                        }
                    } else {
                        /* relative path */
                        $pp = $prt;
                        while (1) {
                            $xpos = strpos($url, "/");
                            if ($xpos === false) {
                                break;
                            }
                            $apos = strpos($url, "?");
                            if ($apos !== false && $apos < $xpos) {
                                break;
                            }
                            $apos = strpos($url, "&");
                            if ($apos !== false && $apos < $xpos) {
                                break;
                            }
                            $pp .= substr($url, 0, $xpos + 1);
                            $url = substr($url, $xpos + 1);
                        }
                        $loc = $pp . $loc;
                    }
                }
                return $loc;
            }
        }
        return null;
    }