parent
36d1156cf8
commit
973bcccd7c
@ -0,0 +1,107 @@ |
||||
<?php |
||||
/** |
||||
* Copy of http://dk1.php.net/manual/en/stream.streamwrapper.example-1.php |
||||
* Used to simulate php://input for Request tests |
||||
*/ |
||||
class RequestStream { |
||||
protected $position; |
||||
protected $varname; |
||||
|
||||
function stream_open($path, $mode, $options, &$opened_path) { |
||||
$url = parse_url($path); |
||||
$this->varname = $url["host"]; |
||||
$this->position = 0; |
||||
|
||||
return true; |
||||
} |
||||
|
||||
function stream_read($count) { |
||||
$ret = substr($GLOBALS[$this->varname], $this->position, $count); |
||||
$this->position += strlen($ret); |
||||
return $ret; |
||||
} |
||||
|
||||
function stream_write($data) { |
||||
$left = substr($GLOBALS[$this->varname], 0, $this->position); |
||||
$right = substr($GLOBALS[$this->varname], $this->position + strlen($data)); |
||||
$GLOBALS[$this->varname] = $left . $data . $right; |
||||
$this->position += strlen($data); |
||||
return strlen($data); |
||||
} |
||||
|
||||
function stream_tell() { |
||||
return $this->position; |
||||
} |
||||
|
||||
function stream_eof() { |
||||
return $this->position >= strlen($GLOBALS[$this->varname]); |
||||
} |
||||
|
||||
function stream_seek($offset, $whence) { |
||||
switch ($whence) { |
||||
case SEEK_SET: |
||||
if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) { |
||||
$this->position = $offset; |
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
break; |
||||
|
||||
case SEEK_CUR: |
||||
if ($offset >= 0) { |
||||
$this->position += $offset; |
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
break; |
||||
|
||||
case SEEK_END: |
||||
if (strlen($GLOBALS[$this->varname]) + $offset >= 0) { |
||||
$this->position = strlen($GLOBALS[$this->varname]) + $offset; |
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
break; |
||||
|
||||
default: |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
public function stream_stat() { |
||||
$size = strlen($GLOBALS[$this->varname]); |
||||
$time = time(); |
||||
$data = array( |
||||
'dev' => 0, |
||||
'ino' => 0, |
||||
'mode' => 0777, |
||||
'nlink' => 1, |
||||
'uid' => 0, |
||||
'gid' => 0, |
||||
'rdev' => '', |
||||
'size' => $size, |
||||
'atime' => $time, |
||||
'mtime' => $time, |
||||
'ctime' => $time, |
||||
'blksize' => -1, |
||||
'blocks' => -1, |
||||
); |
||||
return array_values($data) + $data; |
||||
//return false; |
||||
} |
||||
|
||||
function stream_metadata($path, $option, $var) { |
||||
if($option == STREAM_META_TOUCH) { |
||||
$url = parse_url($path); |
||||
$varname = $url["host"]; |
||||
if(!isset($GLOBALS[$varname])) { |
||||
$GLOBALS[$varname] = ''; |
||||
} |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
} |
Loading…
Reference in new issue