1
1
Fork 0
mirror of https://code.mensbeam.com/MensBeam/Arsse.git synced 2024-12-22 21:22:40 +00:00

CS fixes and version bump

This commit is contained in:
J. King 2018-01-12 09:48:33 -05:00
parent 34b508171b
commit cbc9491f75
11 changed files with 26 additions and 28 deletions

View file

@ -7,7 +7,7 @@ declare(strict_types=1);
namespace JKingWeb\Arsse; namespace JKingWeb\Arsse;
class Arsse { class Arsse {
const VERSION = "0.2.1"; const VERSION = "0.3.0";
/** @var Lang */ /** @var Lang */
public static $lang; public static $lang;

View file

@ -13,7 +13,7 @@ class Date {
return null; return null;
} }
$out = ValueInfo::normalize($date, ValueInfo::T_STRING, null, $outFormat); $out = ValueInfo::normalize($date, ValueInfo::T_STRING, null, $outFormat);
if($outFormat=="unix") { if ($outFormat=="unix") {
$out = (int) $out; $out = (int) $out;
} elseif ($outFormat=="float") { } elseif ($outFormat=="float") {
$out = (float) $out; $out = (float) $out;

View file

@ -6,7 +6,6 @@
declare(strict_types=1); declare(strict_types=1);
namespace JKingWeb\Arsse; namespace JKingWeb\Arsse;
use JKingWeb\Arsse\Arsse; use JKingWeb\Arsse\Arsse;
use Psr\Http\Message\RequestInterface; use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
@ -67,9 +66,9 @@ class REST {
public function dispatch(ServerRequestInterface $req = null): ResponseInterface { public function dispatch(ServerRequestInterface $req = null): ResponseInterface {
// create a request object if not provided // create a request object if not provided
$req = $req ?? ServerRequestFactory::fromGlobals(); $req = $req ?? ServerRequestFactory::fromGlobals();
// find the API to handle // find the API to handle
try { try {
list ($api, $target, $class) = $this->apiMatch($req->getRequestTarget(), $this->apis); list($api, $target, $class) = $this->apiMatch($req->getRequestTarget(), $this->apis);
// authenticate the request pre-emptively // authenticate the request pre-emptively
$req = $this->authenticateRequest($req); $req = $this->authenticateRequest($req);
// modify the request to have an uppercase method and a stripped target // modify the request to have an uppercase method and a stripped target
@ -119,7 +118,7 @@ class REST {
return [$id, $target, $api['class']]; return [$id, $target, $api['class']];
} }
} }
// or throw an exception otherwise // or throw an exception otherwise
throw new REST\Exception501(); throw new REST\Exception501();
} }
@ -197,7 +196,7 @@ class REST {
if ($req->hasHeader("Access-Control-Request-Headers")) { if ($req->hasHeader("Access-Control-Request-Headers")) {
$res = $res->withHeader("Access-Control-Allow-Headers", $req->getHeaderLine("Access-Control-Request-Headers")); $res = $res->withHeader("Access-Control-Allow-Headers", $req->getHeaderLine("Access-Control-Request-Headers"));
} }
$res = $res->withHeader("Access-Control-Max-Age", (string) (60 *60 *24) ); // one day $res = $res->withHeader("Access-Control-Max-Age", (string) (60 *60 *24)); // one day
} }
$res = $res->withHeader("Access-Control-Allow-Origin", $req->getHeaderLine("Origin")); $res = $res->withHeader("Access-Control-Allow-Origin", $req->getHeaderLine("Origin"));
$res = $res->withHeader("Access-Control-Allow-Credentials", "true"); $res = $res->withHeader("Access-Control-Allow-Credentials", "true");

View file

@ -62,7 +62,7 @@ class Target {
protected function parseFragment(string $target): string { protected function parseFragment(string $target): string {
// store and strip off any fragment identifier and return the target without a fragment // store and strip off any fragment identifier and return the target without a fragment
$pos = strpos($target,"#"); $pos = strpos($target, "#");
if ($pos !== false) { if ($pos !== false) {
$this->fragment = rawurldecode(substr($target, $pos + 1)); $this->fragment = rawurldecode(substr($target, $pos + 1));
$target = substr($target, 0, $pos); $target = substr($target, 0, $pos);
@ -74,7 +74,7 @@ class Target {
// store and strip off any query string and return the target without a query // store and strip off any query string and return the target without a query
// note that the function assumes any fragment identifier has already been stripped off // note that the function assumes any fragment identifier has already been stripped off
// unlike the other parts the query string is currently neither parsed nor normalized // unlike the other parts the query string is currently neither parsed nor normalized
$pos = strpos($target,"?"); $pos = strpos($target, "?");
if ($pos !== false) { if ($pos !== false) {
$this->query = substr($target, $pos + 1); $this->query = substr($target, $pos + 1);
$target = substr($target, 0, $pos); $target = substr($target, 0, $pos);
@ -106,7 +106,7 @@ class Target {
$target = explode("/", $target); $target = explode("/", $target);
$out = []; $out = [];
// resolve relative path segments and decode each retained segment // resolve relative path segments and decode each retained segment
foreach($target as $index => $segment) { foreach ($target as $index => $segment) {
if ($segment==".") { if ($segment==".") {
// self-referential segments can be ignored // self-referential segments can be ignored
continue; continue;
@ -128,4 +128,4 @@ class Target {
return []; return [];
} }
} }
} }

View file

@ -9,7 +9,6 @@ namespace JKingWeb\Arsse\TestCase\Lang;
use JKingWeb\Arsse\Lang as TestClass; use JKingWeb\Arsse\Lang as TestClass;
use org\bovigo\vfs\vfsStream; use org\bovigo\vfs\vfsStream;
/** @covers \JKingWeb\Arsse\Lang */ /** @covers \JKingWeb\Arsse\Lang */
class TestBasic extends \JKingWeb\Arsse\Test\AbstractTest { class TestBasic extends \JKingWeb\Arsse\Test\AbstractTest {
use \JKingWeb\Arsse\Test\Lang\Setup; use \JKingWeb\Arsse\Test\Lang\Setup;

View file

@ -14,7 +14,7 @@ class TestDate extends \JKingWeb\Arsse\Test\AbstractTest {
$this->clearData(); $this->clearData();
} }
function testNormalizeADate() { public function testNormalizeADate() {
$exp = new \DateTimeImmutable("2018-01-01T00:00:00Z"); $exp = new \DateTimeImmutable("2018-01-01T00:00:00Z");
$this->assertEquals($exp, Date::normalize(1514764800)); $this->assertEquals($exp, Date::normalize(1514764800));
$this->assertEquals($exp, Date::normalize("2018-01-01T00:00:00")); $this->assertEquals($exp, Date::normalize("2018-01-01T00:00:00"));
@ -26,7 +26,7 @@ class TestDate extends \JKingWeb\Arsse\Test\AbstractTest {
$this->assertNull(Date::normalize("2018-01-01T00:00:00Z", "http")); $this->assertNull(Date::normalize("2018-01-01T00:00:00Z", "http"));
} }
function testFormatADate() { public function testFormatADate() {
$test = new \DateTimeImmutable("2018-01-01T00:00:00Z"); $test = new \DateTimeImmutable("2018-01-01T00:00:00Z");
$this->assertNull(Date::transform(null, "http")); $this->assertNull(Date::transform(null, "http"));
$this->assertNull(Date::transform("ook", "http")); $this->assertNull(Date::transform("ook", "http"));
@ -40,7 +40,7 @@ class TestDate extends \JKingWeb\Arsse\Test\AbstractTest {
$this->assertSame(1514764800.265579, Date::transform("2018-01-01T00:00:00.265579Z", "float", "iso8601m")); $this->assertSame(1514764800.265579, Date::transform("2018-01-01T00:00:00.265579Z", "float", "iso8601m"));
} }
function testMoveDateForward() { public function testMoveDateForward() {
$test = new \DateTimeImmutable("2018-01-01T00:00:00Z"); $test = new \DateTimeImmutable("2018-01-01T00:00:00Z");
$this->assertNull(Date::add("P1D", null)); $this->assertNull(Date::add("P1D", null));
$this->assertNull(Date::add("P1D", "ook")); $this->assertNull(Date::add("P1D", "ook"));
@ -49,7 +49,7 @@ class TestDate extends \JKingWeb\Arsse\Test\AbstractTest {
$this->assertNull(Date::add("ook", $test)); $this->assertNull(Date::add("ook", $test));
} }
function testMoveDateBack() { public function testMoveDateBack() {
$test = new \DateTimeImmutable("2018-01-01T00:00:00Z"); $test = new \DateTimeImmutable("2018-01-01T00:00:00Z");
$this->assertNull(Date::sub("P1D", null)); $this->assertNull(Date::sub("P1D", null));
$this->assertNull(Date::sub("P1D", "ook")); $this->assertNull(Date::sub("P1D", "ook"));

View file

@ -317,7 +317,7 @@ class TestV1_2 extends \JKingWeb\Arsse\Test\AbstractTest {
if (Arsse::$user->auth()) { if (Arsse::$user->auth()) {
$req = $req->withAttribute("authenticated", true)->withAttribute("authenticatedUser", "john.doe@example.com"); $req = $req->withAttribute("authenticated", true)->withAttribute("authenticatedUser", "john.doe@example.com");
} }
foreach($headers as $key => $value) { foreach ($headers as $key => $value) {
if (!is_null($value)) { if (!is_null($value)) {
$req = $req->withHeader($key, $value); $req = $req->withHeader($key, $value);
} else { } else {

View file

@ -264,7 +264,7 @@ class TestREST extends \JKingWeb\Arsse\Test\AbstractTest {
public function provideUnnormalizedResponses() { public function provideUnnormalizedResponses() {
$stream = fopen("php://memory", "w+b"); $stream = fopen("php://memory", "w+b");
fwrite($stream,"ook"); fwrite($stream, "ook");
return [ return [
[new EmptyResponse(204), new EmptyResponse(204)], [new EmptyResponse(204), new EmptyResponse(204)],
[new EmptyResponse(401), new EmptyResponse(401, ['WWW-Authenticate' => "Fake Value"])], [new EmptyResponse(401), new EmptyResponse(401, ['WWW-Authenticate' => "Fake Value"])],
@ -322,13 +322,13 @@ class TestREST extends \JKingWeb\Arsse\Test\AbstractTest {
public function provideMockRequests() { public function provideMockRequests() {
return [ return [
[new ServerRequest([], [], "/index.php/apps/news/api/v1-2/feeds", "GET"), "GET", true, NCN::Class, "/feeds"], [new ServerRequest([], [], "/index.php/apps/news/api/v1-2/feeds", "GET"), "GET", true, NCN::class, "/feeds"],
[new ServerRequest([], [], "/index.php/apps/news/api/v1-2/feeds", "HEAD"), "GET", true, NCN::Class, "/feeds"], [new ServerRequest([], [], "/index.php/apps/news/api/v1-2/feeds", "HEAD"), "GET", true, NCN::class, "/feeds"],
[new ServerRequest([], [], "/index.php/apps/news/api/v1-2/feeds", "get"), "GET", true, NCN::Class, "/feeds"], [new ServerRequest([], [], "/index.php/apps/news/api/v1-2/feeds", "get"), "GET", true, NCN::class, "/feeds"],
[new ServerRequest([], [], "/index.php/apps/news/api/v1-2/feeds", "head"), "GET", true, NCN::Class, "/feeds"], [new ServerRequest([], [], "/index.php/apps/news/api/v1-2/feeds", "head"), "GET", true, NCN::class, "/feeds"],
[new ServerRequest([], [], "/tt-rss/api/", "POST"), "POST", true, TTRSS::Class, "/"], [new ServerRequest([], [], "/tt-rss/api/", "POST"), "POST", true, TTRSS::class, "/"],
[new ServerRequest([], [], "/no/such/api/", "HEAD"), "GET", false], [new ServerRequest([], [], "/no/such/api/", "HEAD"), "GET", false],
[new ServerRequest([], [], "/no/such/api/", "GET"), "GET", false], [new ServerRequest([], [], "/no/such/api/", "GET"), "GET", false],
]; ];
} }
} }

View file

@ -63,4 +63,4 @@ class TestTarget extends \JKingWeb\Arsse\Test\AbstractTest {
["#%2e?%2f", [], true, true, "", ".?/", "#.%3F%2F"], ["#%2e?%2f", [], true, true, "", ".?/", "#.%3F%2F"],
]; ];
} }
} }

View file

@ -10,4 +10,4 @@ namespace JKingWeb\Arsse\TestCase\REST\TinyTinyRSS\PDO;
* @covers \JKingWeb\Arsse\REST\TinyTinyRSS\Exception */ * @covers \JKingWeb\Arsse\REST\TinyTinyRSS\Exception */
class TestAPI extends \JKingWeb\Arsse\TestCase\REST\TinyTinyRSS\TestAPI { class TestAPI extends \JKingWeb\Arsse\TestCase\REST\TinyTinyRSS\TestAPI {
use \JKingWeb\Arsse\Test\PDOTest; use \JKingWeb\Arsse\Test\PDOTest;
} }

View file

@ -11,7 +11,7 @@ trait PDOTest {
if (!is_array($value)) { if (!is_array($value)) {
return $value; return $value;
} }
foreach($value as $k => $v) { foreach ($value as $k => $v) {
if (is_array($v)) { if (is_array($v)) {
$value[$k] = $this->v($v); $value[$k] = $this->v($v);
} elseif (is_int($v) || is_float($v)) { } elseif (is_int($v) || is_float($v)) {
@ -20,4 +20,4 @@ trait PDOTest {
} }
return $value; return $value;
} }
} }