function do_test($context_options) { $context = stream_context_create(array('http' => $context_options)); $responses = array("data://text/plain,HTTP/1.0 302 Moved Temporarily\r\nLocation: http://127.0.0.1:12342/foo/bar2\r\n\r\n1", "data://text/plain,HTTP/1.0 301 Moved Permanently\r\nLocation: http://127.0.0.1:12342/foo/bar3\r\n\r\n", "data://text/plain,HTTP/1.0 302 Moved Temporarily\r\nLocation: http://127.0.0.1:12342/foo/bar4\r\n\r\n3", "data://text/plain,HTTP/1.0 200 OK\r\n\r\ndone."); $pid = http_server("tcp://127.0.0.1:12342", $responses, $output); $fd = fopen('http://127.0.0.1:12342/foo/bar', 'rb', false, $context); var_dump($fd); if ($fd) { $meta_data = stream_get_meta_data($fd); var_dump($meta_data['wrapper_data']); var_dump(stream_get_contents($fd)); } fseek($output, 0, SEEK_SET); var_dump(stream_get_contents($output)); http_server_kill($pid); }
function do_test($header) { $options = ['http' => ['method' => 'POST', 'header' => $header, 'follow_location' => true]]; $ctx = stream_context_create($options); $responses = ["data://text/plain,HTTP/1.1 201\r\nLocation: /foo\r\n\r\n", "data://text/plain,HTTP/1.1 200\r\nConnection: close\r\n\r\n"]; $pid = http_server('tcp://127.0.0.1:12342', $responses, $output); $fd = fopen('http://127.0.0.1:12342/', 'rb', false, $ctx); fseek($output, 0, SEEK_SET); echo stream_get_contents($output); http_server_kill($pid); }
function do_test() { $responses = array("data://text/plain,HTTP/1.0 200 OK\r\n\r\n"); $pid = http_server("tcp://127.0.0.1:12342", $responses, $output); foreach ($responses as $r) { $fd = fopen('http://127.0.0.1:12342/', 'rb', false); fseek($output, 0, SEEK_SET); var_dump(stream_get_contents($output)); fseek($output, 0, SEEK_SET); } http_server_kill($pid); }
function do_test() { $responses = array("data://text/plain,HTTP/1.0 404 Not Found\r\n\r\n", "data://text/plain,HTTP/1.0 404 Not Found\r\n\r\n", "data://text/plain,HTTP/1.0 404 Not Found\r\n\r\n"); $pid = http_server("tcp://127.0.0.1:12342", $responses, $output); $a = $b = count(get_resources()); $i = 3; while ($i--) { $context = stream_context_create(array('http' => array('timeout' => 1))); file_get_contents('http://127.0.0.1:12342/', 0, $context); unset($context); $b = $a; $a = count(get_resources()); } http_server_kill($pid); echo "leak? penultimate iteration: {$b}, last one: {$a}\n"; var_dump($a == $b); }
function do_test($context_options) { $context = stream_context_create(array('http' => $context_options)); $responses = array("data://text/plain,HTTP/1.0 200 Ok\r\nX-Foo: bar\r\n\r\n1", "data://text/plain,HTTP/1.0 404 Not found\r\nX-bar: baz\r\n\r\n2"); $pid = http_server("tcp://127.0.0.1:12342", $responses, $output); foreach ($responses as $r) { $fd = fopen('http://127.0.0.1:12342/foo/bar', 'rb', false, $context); var_dump($fd); if ($fd) { $meta_data = stream_get_meta_data($fd); var_dump($meta_data['wrapper_data']); var_dump(stream_get_contents($fd)); } fseek($output, 0, SEEK_SET); var_dump(stream_get_contents($output)); fseek($output, 0, SEEK_SET); } http_server_kill($pid); }
<?php require 'server.inc'; $x = new OAuth('conskey', 'conssecret', OAUTH_SIG_METHOD_PLAINTEXT); $x->setRequestEngine(OAUTH_REQENGINE_STREAMS); $x->setTimestamp(12345); $x->setNonce('testing'); $port = random_free_port(); $pid = http_server("tcp://127.0.0.1:{$port}", array("HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 40\r\n\r\noauth_token=1234&oauth_token_secret=4567"), $output); $x->setAuthType(OAUTH_AUTH_TYPE_URI); $x->setToken("key", "secret"); var_dump($x->getAccessToken("http://127.0.0.1:{$port}/test")); fseek($output, 0, SEEK_SET); var_dump(stream_get_contents($output)); http_server_kill($pid);
<?php require 'server.inc'; $responses = array("data://text/plain,HTTP/1.0 200 OK\r\n\r\n", "data://text/plain,HTTP/1.0 200 OK\r\n\r\n"); $pid = http_server("tcp://127.0.0.1:12342", $responses, $output); foreach (array('r', 'rb') as $mode) { $fd = fopen('http://127.0.0.1:12342/', $mode, false); $meta = stream_get_meta_data($fd); var_dump($meta['mode']); fclose($fd); } http_server_kill($pid);
<?php require __DIR__ . '/../http/server.inc'; $pid = http_server("tcp://127.0.0.1:12342", [__DIR__ . "/news.rss"]); $d = new DomDocument(); $e = $d->load("http://127.0.0.1:12342/news.rss"); echo "ALIVE\n"; http_server_kill($pid);
<?php require 'server.inc'; $x = new OAuth('1234', '1234'); $x->setRequestEngine(OAUTH_REQENGINE_CURL); $port = random_free_port(); $pid = http_server("tcp://127.0.0.1:{$port}", array("HTTP/1.0 302 Found\r\nLocation: http://127.0.0.1:{$port}/" . str_repeat('a', 512) . "bbb\r\n\r\n", "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 40\r\n\r\noauth_token=1234&oauth_token_secret=4567"), $output); try { $x->setAuthType(OAUTH_AUTH_TYPE_AUTHORIZATION); var_dump($x->getRequestToken("http://127.0.0.1:{$port}/test", null, 'GET')); } catch (Exception $e) { var_dump($x->debugInfo); } fseek($output, 0, SEEK_SET); var_dump(stream_get_contents($output)); http_server_kill($pid);
function do_test($version, $connection) { $options = ['http' => ['protocol_version' => $version]]; if ($connection) { $options['http']['header'] = "Connection: {$connection}"; } $ctx = stream_context_create($options); $responses = ["data://text/plain,HTTP/{$version} 204 No Content\r\n\r\n"]; $pid = http_server('tcp://127.0.0.1:12342', $responses, $output); $fd = fopen('http://127.0.0.1:12342/', 'rb', false, $ctx); fseek($output, 0, SEEK_SET); echo stream_get_contents($output); http_server_kill($pid); }