91 lines
2.4 KiB
PHP
91 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace kernel\services;
|
|
|
|
use GuzzleHttp\Exception\GuzzleException;
|
|
use kernel\Flash;
|
|
use kernel\helpers\Debug;
|
|
use kernel\helpers\Files;
|
|
use kernel\helpers\RESTClient;
|
|
use kernel\Request;
|
|
|
|
class ModuleShopService
|
|
{
|
|
protected string $url;
|
|
protected string $token;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->url = $_ENV['MODULE_SHOP_URL'];
|
|
$this->token = $_ENV['MODULE_SHOP_TOKEN'];
|
|
}
|
|
|
|
/**
|
|
* @param string $email
|
|
* @return mixed
|
|
* @throws GuzzleException
|
|
*/
|
|
public function email_auth(string $email): mixed
|
|
{
|
|
$request = RESTClient::post($this->url . "/api/secure/email_auth", ['email' => $email], false);
|
|
|
|
return json_decode($request->getBody()->getContents(), true);
|
|
}
|
|
|
|
/**
|
|
* @param string $code
|
|
* @return mixed
|
|
* @throws GuzzleException
|
|
*/
|
|
public function code_check(string $code): mixed
|
|
{
|
|
$request = RESTClient::post($this->url . "/api/secure/code_check", ['code' => $code], false);
|
|
|
|
return json_decode($request->getBody()->getContents(), true);
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
* @throws GuzzleException
|
|
*/
|
|
public function getGroupedBySlugModules(): mixed
|
|
{
|
|
$modulesInfo = RESTClient::request($_ENV['MODULE_SHOP_URL'] . '/api/module_shop/gb_slug');
|
|
return json_decode($modulesInfo->getBody()->getContents(), true);
|
|
}
|
|
|
|
/**
|
|
* @param string $slug
|
|
* @return void
|
|
* @throws GuzzleException
|
|
*/
|
|
public function installModule(string $slug): void
|
|
{
|
|
$moduleInfo = $this->getModuleInfoBySlug($slug);
|
|
|
|
$moduleInfo = RESTClient::request($_ENV['MODULE_SHOP_URL'] . '/api/module_shop/install/' . $moduleInfo['id']);
|
|
$moduleInfo = json_decode($moduleInfo->getBody()->getContents(), true);
|
|
|
|
Files::uploadByUrl($_ENV['MODULE_SHOP_URL'] . $moduleInfo['path_to_archive'], RESOURCES_DIR . "/tmp/modules");
|
|
|
|
(new ModuleService())->installModule('/resources/tmp/modules/' . basename($moduleInfo['path_to_archive']));
|
|
}
|
|
|
|
/**
|
|
* @param string $slug
|
|
* @return false|mixed
|
|
* @throws GuzzleException
|
|
*/
|
|
public function getModuleInfoBySlug(string $slug): mixed
|
|
{
|
|
$modulesInfo = $this->getGroupedBySlugModules();
|
|
foreach ($modulesInfo as $module) {
|
|
if ($module['slug'] === $slug) {
|
|
return $module;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
} |