Skip to content

Commit

Permalink
psalm improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
chriskapp committed Oct 29, 2022
1 parent a016492 commit 0ac56d9
Show file tree
Hide file tree
Showing 18 changed files with 193 additions and 83 deletions.
18 changes: 14 additions & 4 deletions src/Service/Action.php
Expand Up @@ -71,8 +71,13 @@ public function create(int $categoryId, ActionCreate $action, UserContext $conte
{
$this->assertSandboxAccess($action);

$name = $action->getName();
if (empty($name) || !preg_match('/^[a-zA-Z0-9\\-\\_]{3,255}$/', $name)) {
throw new StatusCode\BadRequestException('Invalid action name');
}

// check whether action exists
if ($this->exists($action->getName())) {
if ($this->exists($name)) {
throw new StatusCode\BadRequestException('Action already exists');
}

Expand All @@ -89,7 +94,7 @@ public function create(int $categoryId, ActionCreate $action, UserContext $conte

// call lifecycle
if ($handler instanceof LifecycleInterface) {
$handler->onCreate($action->getName(), $parameters);
$handler->onCreate($name, $parameters);
}

// create action
Expand Down Expand Up @@ -138,6 +143,11 @@ public function update(int $actionId, ActionUpdate $action, UserContext $context
throw new StatusCode\GoneException('Action was deleted');
}

$name = $action->getName();
if (empty($name) || !preg_match('/^[a-zA-Z0-9\\-\\_]{3,255}$/', $name)) {
throw new StatusCode\BadRequestException('Invalid action name');
}

// in case the class is empty use the existing class
$class = $action->getClass();
if (empty($class)) {
Expand All @@ -156,13 +166,13 @@ public function update(int $actionId, ActionUpdate $action, UserContext $context

// call lifecycle
if ($handler instanceof LifecycleInterface) {
$handler->onUpdate($action->getName(), $parameters);
$handler->onUpdate($name, $parameters);
}

// update action
$record = new Table\Generated\ActionRow([
Table\Generated\ActionTable::COLUMN_ID => $existing->getId(),
Table\Generated\ActionTable::COLUMN_NAME => $action->getName(),
Table\Generated\ActionTable::COLUMN_NAME => $name,
Table\Generated\ActionTable::COLUMN_CLASS => $class,
Table\Generated\ActionTable::COLUMN_ASYNC => $action->getAsync(),
Table\Generated\ActionTable::COLUMN_ENGINE => $engine,
Expand Down
7 changes: 6 additions & 1 deletion src/Service/Category.php
Expand Up @@ -52,8 +52,13 @@ public function __construct(Table\Category $categoryTable, EventDispatcherInterf

public function create(CategoryCreate $category, UserContext $context): int
{
$name = $category->getName();
if (empty($name)) {
throw new StatusCode\BadRequestException('Name not provided');
}

// check whether rate exists
if ($this->exists($category->getName())) {
if ($this->exists($name)) {
throw new StatusCode\BadRequestException('Category already exists');
}

Expand Down
11 changes: 8 additions & 3 deletions src/Service/Connection.php
Expand Up @@ -64,8 +64,13 @@ public function __construct(Table\Connection $connectionTable, Factory\Connectio

public function create(ConnectionCreate $connection, UserContext $context): int
{
$name = $connection->getName();
if (empty($name)) {
throw new StatusCode\BadRequestException('Name not provided');
}

// check whether connection exists
if ($this->exists($connection->getName())) {
if ($this->exists($name)) {
throw new StatusCode\BadRequestException('Connection already exists');
}

Expand All @@ -75,7 +80,7 @@ public function create(ConnectionCreate $connection, UserContext $context): int

// call deployment
if ($factory instanceof DeploymentInterface) {
$factory->onUp($connection->getName(), $parameters);
$factory->onUp($name, $parameters);
}

$conn = $factory->getConnection($parameters);
Expand All @@ -85,7 +90,7 @@ public function create(ConnectionCreate $connection, UserContext $context): int

// call lifecycle
if ($factory instanceof LifecycleInterface) {
$factory->onCreate($connection->getName(), $parameters, $conn);
$factory->onCreate($name, $parameters, $conn);
}

// create connection
Expand Down
7 changes: 6 additions & 1 deletion src/Service/Cronjob.php
Expand Up @@ -54,8 +54,13 @@ public function create(int $categoryId, CronjobCreate $cronjob, UserContext $con
{
Cronjob\Validator::assertCron($cronjob->getCron());

$name = $cronjob->getName();
if (empty($name)) {
throw new StatusCode\BadRequestException('Name not provided');
}

// check whether cronjob exists
if ($this->exists($cronjob->getName())) {
if ($this->exists($name)) {
throw new StatusCode\BadRequestException('Cronjob already exists');
}

Expand Down
7 changes: 6 additions & 1 deletion src/Service/Event.php
Expand Up @@ -52,8 +52,13 @@ public function __construct(Table\Event $eventTable, EventDispatcherInterface $e

public function create(int $categoryId, EventCreate $event, UserContext $context): int
{
$name = $event->getName();
if (empty($name)) {
throw new StatusCode\BadRequestException('Name not provided');
}

// check whether event exists
if ($this->exists($event->getName())) {
if ($this->exists($name)) {
throw new StatusCode\BadRequestException('Event already exists');
}

Expand Down
6 changes: 4 additions & 2 deletions src/Service/Generator/EntityCreator.php
Expand Up @@ -98,7 +98,9 @@ public function createRoutes(int $categoryId, array $routes, $basePath, $scopes,
$scopes = $scopes ?: [];

foreach ($routes as $index => $record) {
$record->setPath($this->buildPath($basePath, $record->getPath()));
$path = $this->buildPath($basePath, $record->getPath());

$record->setPath($path);
$record->setScopes(array_unique(array_merge($scopes, $record->getScopes() ?? [])));

foreach ($record->getConfig() as $version) {
Expand Down Expand Up @@ -136,7 +138,7 @@ public function createRoutes(int $categoryId, array $routes, $basePath, $scopes,
}
}

$id = $this->routeService->exists($record->getPath());
$id = $this->routeService->exists($path);
if (!$id) {
$id = $this->routeService->create($categoryId, $record, $context);
}
Expand Down
80 changes: 43 additions & 37 deletions src/Service/Marketplace/App.php
Expand Up @@ -31,16 +31,19 @@
class App
{
private string $name;
private ?string $version = null;
private string $version;
private string $downloadUrl;
private string $sha1Hash;
private ?string $description = null;
private ?string $screenshot = null;
private ?string $website = null;
private ?string $downloadUrl = null;
private ?string $sha1Hash = null;

public function __construct(string $name)
public function __construct(string $name, string $version, string $downloadUrl, string $sha1Hash)
{
$this->name = $name;
$this->version = $version;
$this->downloadUrl = $downloadUrl;
$this->sha1Hash = $sha1Hash;
}

public function getName(): string
Expand All @@ -53,7 +56,7 @@ public function setName(string $name): void
$this->name = $name;
}

public function getVersion(): ?string
public function getVersion(): string
{
return $this->version;
}
Expand All @@ -63,54 +66,54 @@ public function setVersion(string $version): void
$this->version = $version;
}

public function getDescription(): ?string
public function getDownloadUrl(): string
{
return $this->description;
return $this->downloadUrl;
}

public function setDescription(string $description): void
public function setDownloadUrl(string $downloadUrl): void
{
$this->description = $description;
$this->downloadUrl = $downloadUrl;
}

public function getScreenshot(): ?string
public function getSha1Hash(): string
{
return $this->screenshot;
return $this->sha1Hash;
}

public function setScreenshot(string $screenshot): void
public function setSha1Hash(string $sha1Hash): void
{
$this->screenshot = $screenshot;
$this->sha1Hash = $sha1Hash;
}

public function getWebsite(): ?string
public function getDescription(): ?string
{
return $this->website;
return $this->description;
}

public function setWebsite(string $website): void
public function setDescription(string $description): void
{
$this->website = $website;
$this->description = $description;
}

public function getDownloadUrl(): ?string
public function getScreenshot(): ?string
{
return $this->downloadUrl;
return $this->screenshot;
}

public function setDownloadUrl(string $downloadUrl): void
public function setScreenshot(string $screenshot): void
{
$this->downloadUrl = $downloadUrl;
$this->screenshot = $screenshot;
}

public function getSha1Hash(): ?string
public function getWebsite(): ?string
{
return $this->sha1Hash;
return $this->website;
}

public function setSha1Hash(string $sha1Hash): void
public function setWebsite(string $website): void
{
$this->sha1Hash = $sha1Hash;
$this->website = $website;
}

public function toArray(): array
Expand All @@ -125,14 +128,25 @@ public function toArray(): array
];
}

public static function fromArray(string $name, array $data)
public static function fromArray(string $name, array $data): static
{
$app = new static($name);
$version = $data['version'] ?? null;
if (empty($version) || !is_string($version)) {
throw new \InvalidArgumentException('No version available');
}

$downloadUrl = $data['downloadUrl'] ?? null;
if (empty($downloadUrl) || !is_string($downloadUrl)) {
throw new \InvalidArgumentException('No download url available');
}

if (isset($data['version'])) {
$app->setVersion($data['version']);
$sha1Hash = $data['sha1Hash'] ?? null;
if (empty($sha1Hash) || !is_string($sha1Hash)) {
throw new \InvalidArgumentException('No hash available');
}

$app = new static($name, $version, $downloadUrl, $sha1Hash);

if (isset($data['description'])) {
$app->setDescription($data['description']);
}
Expand All @@ -145,14 +159,6 @@ public static function fromArray(string $name, array $data)
$app->setWebsite($data['website']);
}

if (isset($data['downloadUrl'])) {
$app->setDownloadUrl($data['downloadUrl']);
}

if (isset($data['sha1Hash'])) {
$app->setSha1Hash($data['sha1Hash']);
}

return $app;
}
}
17 changes: 15 additions & 2 deletions src/Service/Marketplace/Installer.php
Expand Up @@ -55,8 +55,17 @@ public function __construct(Repository\Local $localRepository, Repository\Remote

public function install(MarketplaceInstall $install, UserContext $context, bool $replaceEnv = true): App
{
$remoteApp = $this->remoteRepository->fetchByName($install->getName());
$localApp = $this->localRepository->fetchByName($install->getName());
$name = $install->getName();
if (empty($name)) {
throw new StatusCode\BadRequestException('Name not provided');
}

$remoteApp = $this->remoteRepository->fetchByName($name);
$localApp = $this->localRepository->fetchByName($name);

if (!$remoteApp instanceof App) {
throw new StatusCode\BadRequestException('App not available');
}

if ($localApp instanceof App) {
throw new StatusCode\BadRequestException('App already installed');
Expand All @@ -72,6 +81,10 @@ public function update(string $name, UserContext $context): App
$remoteApp = $this->remoteRepository->fetchByName($name);
$localApp = $this->localRepository->fetchByName($name);

if (!$remoteApp instanceof App) {
throw new StatusCode\BadRequestException('App not available');
}

if (!$localApp instanceof App) {
throw new StatusCode\BadRequestException('App is not installed');
}
Expand Down
20 changes: 15 additions & 5 deletions src/Service/Page.php
Expand Up @@ -52,7 +52,12 @@ public function __construct(Table\Page $pageTable, EventDispatcherInterface $eve

public function create(PageCreate $page, UserContext $context): int
{
$slug = $this->createSlug($page->getTitle());
$title = $page->getTitle();
if (empty($title)) {
throw new StatusCode\BadRequestException('Title not provided');
}

$slug = $this->createSlug($title);

// check whether page exists
if ($this->exists($slug)) {
Expand All @@ -67,7 +72,7 @@ public function create(PageCreate $page, UserContext $context): int

$record = new Table\Generated\PageRow([
Table\Generated\PageTable::COLUMN_STATUS => $page->getStatus(),
Table\Generated\PageTable::COLUMN_TITLE => $page->getTitle(),
Table\Generated\PageTable::COLUMN_TITLE => $title,
Table\Generated\PageTable::COLUMN_SLUG => $slug,
Table\Generated\PageTable::COLUMN_CONTENT => $page->getContent(),
Table\Generated\PageTable::COLUMN_METADATA => $page->getMetadata() !== null ? json_encode($page->getMetadata()) : null,
Expand Down Expand Up @@ -102,15 +107,20 @@ public function update(int $pageId, PageUpdate $page, UserContext $context): int
throw new StatusCode\GoneException('Page was deleted');
}

$this->assertStatus($page);
$title = $page->getTitle();
if (empty($title)) {
throw new StatusCode\BadRequestException('Title not provided');
}

$slug = $this->createSlug($title);

$slug = $this->createSlug($page->getTitle());
$this->assertStatus($page);

// update action
$record = new Table\Generated\PageRow([
Table\Generated\PageTable::COLUMN_ID => $existing->getId(),
Table\Generated\PageTable::COLUMN_STATUS => $page->getStatus(),
Table\Generated\PageTable::COLUMN_TITLE => $page->getTitle(),
Table\Generated\PageTable::COLUMN_TITLE => $title,
Table\Generated\PageTable::COLUMN_SLUG => $slug,
Table\Generated\PageTable::COLUMN_CONTENT => $page->getContent(),
Table\Generated\PageTable::COLUMN_METADATA => $page->getMetadata() !== null ? json_encode($page->getMetadata()) : null,
Expand Down
2 changes: 1 addition & 1 deletion src/Service/Payment.php
Expand Up @@ -130,7 +130,7 @@ private function getProduct(int $planId): ProductInterface
$plan->getName(),
$plan->getPrice(),
$plan->getPoints(),
$plan->getPeriodType(),
$plan->getPeriodType() ?? ProductInterface::INTERVAL_ONETIME,
$plan->getExternalId()
);
}
Expand Down

0 comments on commit 0ac56d9

Please sign in to comment.