HTTP message API (#19)

* HTTP message API

* Added MacOS CI

* Grabbed fixes for mac from aws-crt-ffi
This commit is contained in:
Justin Boswell
2021-03-25 13:14:07 -04:00
committed by GitHub
parent 974fe3d74a
commit 9c9422c21f
14 changed files with 421 additions and 69 deletions
+47
View File
@@ -0,0 +1,47 @@
<?php
namespace AWS\CRT\HTTP;
use AWS\CRT\Internal\Encoding;
final class Headers {
private $headers;
public function __construct($headers = []) {
$this->headers = $headers;
}
public static function marshall($headers) {
$buf = "";
foreach ($headers->headers as $header => $value) {
$buf .= Encoding::encodeString($header);
$buf .= Encoding::encodeString($value);
}
return $buf;
}
public static function unmarshall($buf) {
$strings = Encoding::readStrings($buf);
$headers = [];
for ($idx = 0; $idx < count($strings);) {
$headers[$strings[$idx++]] = $strings[$idx++];
}
return new Headers($headers);
}
public function count() {
return count($this->headers);
}
public function get($header) {
return isset($this->headers[$header]) ? $this->headers[$header] : null;
}
public function set($header, $value) {
$this->headers[$header] = $value;
}
public function toArray() {
return array_merge($this->headers);
}
}