Skip to content

Commit 60a058d

Browse files
committed
tests
1 parent c3fae4b commit 60a058d

File tree

7 files changed

+416
-90
lines changed

7 files changed

+416
-90
lines changed

src/PHPixie/HTTP/Builder.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,14 @@ public function editableHeaders()
1212

1313
public function messages()
1414
{}
15+
16+
17+
public function data()
18+
{}
19+
20+
public function headers()
21+
{}
22+
public function serverData()
23+
{}
24+
1525
}

src/PHPixie/HTTP/Data/Server.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace PHPixie\HTTP;
3+
namespace PHPixie\HTTP\Data;
44

55
class Server
66
{

src/PHPixie/HTTP/Messages.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,18 @@ public function sapiServerRequest(
5757
$server = null,
5858
$get = null,
5959
$post = null,
60-
$cookies = null,
60+
$cookie = null,
6161
$files = null,
6262
$attributes = array()
6363
)
6464
{
6565
return new Messages\Message\Request\ServerRequest\SAPI(
6666
$this,
67-
$server !== null ? $server : $_SERVER,
68-
$get !== null ? $server : $_GET,
69-
$post !== null ? $server : $_POST,
70-
$cookies !== null ? $server : $_COOKIES,
71-
$files !== null ? $server : $_FILES,
67+
$server !== null ? $server : $_SERVER,
68+
$get !== null ? $get : $_GET,
69+
$post !== null ? $post : $_POST,
70+
$cookie !== null ? $cookie : $_COOKIE,
71+
$files !== null ? $files : $_FILES,
7272
$attributes
7373
);
7474
}

src/PHPixie/HTTP/Request.php

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,50 +5,76 @@
55
class Request
66
{
77
protected $serverRequest;
8-
protected $dataMap;
9-
8+
protected $dataMap = array();
109
protected $dataMethods = array(
1110
'query' => 'getQueryParams',
1211
'data' => 'getParsedBody',
1312
'attributes' => 'getAttributes',
13+
'uploads' => 'getFileUploads',
1414
);
1515

16-
public function __construct($serverRequest)
16+
protected $server;
17+
protected $headers;
18+
19+
public function __construct($builder, $serverRequest)
1720
{
18-
$this->serverRequest = $serverRequest;
21+
$this->builder = $builder;
22+
$this->serverRequest = $serverRequest;
1923
}
2024

2125
public function query()
2226
{
23-
$this->getData('query');
27+
return $this->getData('query');
2428
}
2529

2630
public function data()
2731
{
28-
$this->getData('data');
32+
return $this->getData('data');
2933
}
3034

3135
public function attributes()
3236
{
33-
$this->getData('attributes');
37+
return $this->getData('attributes');
3438
}
3539

36-
public function server()
40+
public function uploads()
3741
{
38-
42+
return $this->getData('uploads');
3943
}
4044

41-
45+
public function server()
46+
{
47+
if($this->server === null) {
48+
$data = $this->serverRequest->getServerParams();
49+
$this->server = $this->builder->serverData($data);
50+
}
51+
52+
return $this->server;
53+
}
4254

43-
public function header($name, $default = null)
55+
public function headers()
4456
{
45-
return $this->serverRequest=?
57+
if($this->headers === null) {
58+
$data = $this->serverRequest->getHeaders();
59+
$this->headers = $this->builder->headers($data);
60+
}
61+
62+
return $this->headers;
4663
}
4764

65+
public function serverRequest()
66+
{
67+
return $this->serverRequest;
68+
}
4869

49-
protected f
50-
public function url()
70+
protected function getData($type)
5171
{
52-
return $this->
72+
if(!array_key_exists($type, $this->dataMap)) {
73+
$method = $this->dataMethods[$type];
74+
$data = $this->serverRequest->$method();
75+
$this->dataMap[$type] = $this->builder->data($data);
76+
}
77+
78+
return $this->dataMap[$type];
5379
}
5480
}

src/PHPixie/HTTP/Writer.php

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
3+
namespace PHPixie\HTTP;
4+
5+
class Writer
6+
{
7+
public function a()
8+
{
9+
$this->outputStatusHeader(
10+
$response->statusCode(),
11+
$response->reasonPhrase()
12+
);
13+
14+
$this->outputHeaders($response->headers()->asArray());
15+
$this->outputCookies($context->cookies);
16+
$this->outputStream($response->body());
17+
}
18+
19+
public function sapi($response)
20+
{
21+
$this->outputStatusHeader(
22+
$response->getStatusCode(),
23+
$response->getReasonPhrase(),
24+
$response->getProtocolVersion()
25+
);
26+
27+
$this->outputHeaders($response->getHeaders());
28+
$this->outputStream($response->getBody());
29+
}
30+
31+
protected function outputHeaders($headers)
32+
{
33+
foreach($headers as $name => $lines) {
34+
foreach($lines as $key => $line) {
35+
$this->outputHeader("$name: $line", $key === 0);
36+
}
37+
}
38+
}
39+
40+
protected function outputHeader($header)
41+
{
42+
header($header);
43+
}
44+
45+
protected function outputCookies($cookies)
46+
{
47+
foreach($cookies->getUpdates() as $update) {
48+
setcookie(
49+
$update->name(),
50+
$update->value(),
51+
$update->expires(),
52+
$update->path(),
53+
$update->domain(),
54+
$update->secure(),
55+
$update->httpOnly()
56+
);
57+
}
58+
}
59+
60+
protected function outputStream($stream)
61+
{
62+
if($body instanceof \PHPixie\HTTP\Messages\Stream\Implementation) {
63+
fpassthru($body->detach());
64+
65+
}else{
66+
echo (string) $body;
67+
}
68+
}
69+
70+
protected function outputStatusHeader($statusCode, $reasonPhrase, $protocolVersion = '1.1')
71+
{
72+
if($protocolVersion === null) {
73+
$protocolVersion = '1.1';
74+
return "HTTP/{$protocolVersion} $statusCode $reasonPhrase";
75+
}
76+
}
77+
}

0 commit comments

Comments
 (0)