* avatar overrides added
* cli commands framework added * labinfo service for lab temp monitoring * kanban entry label support
This commit is contained in:
parent
f6e918ed86
commit
1ab6691827
17
bin/cli
Executable file
17
bin/cli
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require __DIR__ . '/../vendor/autoload.php';
|
||||||
|
|
||||||
|
use Symfony\Component\Console\Application;
|
||||||
|
|
||||||
|
/** @var \Interop\Container\ContainerInterface $container */
|
||||||
|
$container = require __DIR__ . '/../config/container.php';
|
||||||
|
$application = new Application('Application console');
|
||||||
|
|
||||||
|
$commands = $container->get('config')['console']['commands'];
|
||||||
|
foreach ($commands as $command) {
|
||||||
|
$application->add($container->get($command));
|
||||||
|
}
|
||||||
|
|
||||||
|
$application->run();
|
||||||
@ -13,6 +13,8 @@
|
|||||||
"doctrine/common": "^2.8",
|
"doctrine/common": "^2.8",
|
||||||
"los/basepath": "^1.0",
|
"los/basepath": "^1.0",
|
||||||
"roave/security-advisories": "dev-master",
|
"roave/security-advisories": "dev-master",
|
||||||
|
"symfony/console": "^3.3",
|
||||||
|
"symfony/css-selector": "^3.3",
|
||||||
"zendframework/zend-cache": "^2.7",
|
"zendframework/zend-cache": "^2.7",
|
||||||
"zendframework/zend-component-installer": "^1.0",
|
"zendframework/zend-component-installer": "^1.0",
|
||||||
"zendframework/zend-config": "^3.1",
|
"zendframework/zend-config": "^3.1",
|
||||||
|
|||||||
333
composer.lock
generated
333
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "5339f5a32d2cf40a211bd68ff895f13a",
|
"content-hash": "58819bed1efddc237ebfcd76754b3380",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "container-interop/container-interop",
|
"name": "container-interop/container-interop",
|
||||||
@ -727,6 +727,53 @@
|
|||||||
],
|
],
|
||||||
"time": "2016-08-06T14:39:51+00:00"
|
"time": "2016-08-06T14:39:51+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/log",
|
||||||
|
"version": "1.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/log.git",
|
||||||
|
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
||||||
|
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Log\\": "Psr/Log/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for logging libraries",
|
||||||
|
"homepage": "https://github.com/php-fig/log",
|
||||||
|
"keywords": [
|
||||||
|
"log",
|
||||||
|
"psr",
|
||||||
|
"psr-3"
|
||||||
|
],
|
||||||
|
"time": "2016-10-10T12:19:37+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "roave/security-advisories",
|
"name": "roave/security-advisories",
|
||||||
"version": "dev-master",
|
"version": "dev-master",
|
||||||
@ -864,6 +911,243 @@
|
|||||||
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
|
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
|
||||||
"time": "2017-07-18T08:09:10+00:00"
|
"time": "2017-07-18T08:09:10+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/console",
|
||||||
|
"version": "v3.3.6",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/console.git",
|
||||||
|
"reference": "b0878233cb5c4391347e5495089c7af11b8e6201"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201",
|
||||||
|
"reference": "b0878233cb5c4391347e5495089c7af11b8e6201",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.5.9",
|
||||||
|
"symfony/debug": "~2.8|~3.0",
|
||||||
|
"symfony/polyfill-mbstring": "~1.0"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"symfony/dependency-injection": "<3.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"psr/log": "~1.0",
|
||||||
|
"symfony/config": "~3.3",
|
||||||
|
"symfony/dependency-injection": "~3.3",
|
||||||
|
"symfony/event-dispatcher": "~2.8|~3.0",
|
||||||
|
"symfony/filesystem": "~2.8|~3.0",
|
||||||
|
"symfony/http-kernel": "~2.8|~3.0",
|
||||||
|
"symfony/process": "~2.8|~3.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"psr/log": "For using the console logger",
|
||||||
|
"symfony/event-dispatcher": "",
|
||||||
|
"symfony/filesystem": "",
|
||||||
|
"symfony/process": ""
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.3-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\Console\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony Console Component",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"time": "2017-07-29T21:27:59+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/css-selector",
|
||||||
|
"version": "v3.3.6",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/css-selector.git",
|
||||||
|
"reference": "4d882dced7b995d5274293039370148e291808f2"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/css-selector/zipball/4d882dced7b995d5274293039370148e291808f2",
|
||||||
|
"reference": "4d882dced7b995d5274293039370148e291808f2",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.5.9"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.3-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\CssSelector\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jean-François Simon",
|
||||||
|
"email": "jeanfrancois.simon@sensiolabs.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony CssSelector Component",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"time": "2017-05-01T15:01:29+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/debug",
|
||||||
|
"version": "v3.3.6",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/debug.git",
|
||||||
|
"reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13",
|
||||||
|
"reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.5.9",
|
||||||
|
"psr/log": "~1.0"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"symfony/http-kernel": "~2.8|~3.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.3-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Component\\Debug\\": ""
|
||||||
|
},
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/Tests/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony Debug Component",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"time": "2017-07-28T15:27:31+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/polyfill-mbstring",
|
||||||
|
"version": "v1.5.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||||
|
"reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
|
||||||
|
"reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.3"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-mbstring": "For best performance"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.5-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Polyfill\\Mbstring\\": ""
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"bootstrap.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nicolas Grekas",
|
||||||
|
"email": "p@tchwork.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony polyfill for the Mbstring extension",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"compatibility",
|
||||||
|
"mbstring",
|
||||||
|
"polyfill",
|
||||||
|
"portable",
|
||||||
|
"shim"
|
||||||
|
],
|
||||||
|
"time": "2017-06-14T15:44:48+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "zendframework/zend-cache",
|
"name": "zendframework/zend-cache",
|
||||||
"version": "2.7.2",
|
"version": "2.7.2",
|
||||||
@ -2820,53 +3104,6 @@
|
|||||||
],
|
],
|
||||||
"time": "2017-06-30T08:15:21+00:00"
|
"time": "2017-06-30T08:15:21+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "psr/log",
|
|
||||||
"version": "1.0.2",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/php-fig/log.git",
|
|
||||||
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
|
||||||
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.3.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.0.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Psr\\Log\\": "Psr/Log/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "PHP-FIG",
|
|
||||||
"homepage": "http://www.php-fig.org/"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Common interface for logging libraries",
|
|
||||||
"homepage": "https://github.com/php-fig/log",
|
|
||||||
"keywords": [
|
|
||||||
"log",
|
|
||||||
"psr",
|
|
||||||
"psr-3"
|
|
||||||
],
|
|
||||||
"time": "2016-10-10T12:19:37+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "sebastian/code-unit-reverse-lookup",
|
"name": "sebastian/code-unit-reverse-lookup",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
|
|||||||
15
config/autoload/cli.global.php
Normal file
15
config/autoload/cli.global.php
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'dependencies' => [
|
||||||
|
'invokables' => [],
|
||||||
|
'factories' => [
|
||||||
|
App\Command\UpdateLabInfoCommand::class => App\Command\UpdateLabInfoFactory::class,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'console' => [
|
||||||
|
'commands' => [
|
||||||
|
App\Command\UpdateLabInfoCommand::class,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
@ -15,9 +15,11 @@ return [
|
|||||||
'baseUrl' => 'https://jirapducc.mo.ca.am.ericsson.se/rest/api/2/search?jql=filter=%s&maxResults=1000&fields=%s',
|
'baseUrl' => 'https://jirapducc.mo.ca.am.ericsson.se/rest/api/2/search?jql=filter=%s&maxResults=1000&fields=%s',
|
||||||
'filterId' => 14229,
|
'filterId' => 14229,
|
||||||
'fields' => [
|
'fields' => [
|
||||||
'assignee',
|
|
||||||
'summary',
|
'summary',
|
||||||
|
'priority',
|
||||||
'issuetype',
|
'issuetype',
|
||||||
|
'labels',
|
||||||
|
'assignee',
|
||||||
'status',
|
'status',
|
||||||
'customfield_10010',
|
'customfield_10010',
|
||||||
'customfield_11226',
|
'customfield_11226',
|
||||||
@ -31,6 +33,7 @@ return [
|
|||||||
'customfield_11692',
|
'customfield_11692',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
'url.labTemperatureUrl' => 'https://159.107.194.61/public/mapshow_simple.htm?id=3381&mapid=884B46A7-AE59-4523-9981-8E9FEB7C1FCF',
|
||||||
'http.proxy.enabled' => false,
|
'http.proxy.enabled' => false,
|
||||||
'http.proxy.type' => CURLPROXY_SOCKS5,
|
'http.proxy.type' => CURLPROXY_SOCKS5,
|
||||||
'http.proxy.url' => "localhost:1080",
|
'http.proxy.url' => "localhost:1080",
|
||||||
|
|||||||
BIN
public/avatars/enorsos
Normal file
BIN
public/avatars/enorsos
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
BIN
public/avatars/epetfid
Normal file
BIN
public/avatars/epetfid
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
BIN
public/avatars/ethzto
Normal file
BIN
public/avatars/ethzto
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 675 B |
BIN
public/avatars/etorist
Normal file
BIN
public/avatars/etorist
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 288 B |
@ -3,7 +3,7 @@
|
|||||||
namespace App\Action;
|
namespace App\Action;
|
||||||
|
|
||||||
use App\Response\JsonCorsResponse;
|
use App\Response\JsonCorsResponse;
|
||||||
use App\Service\DataCollectorService;
|
use App\Service\JiraCollectorService;
|
||||||
use Interop\Http\ServerMiddleware\DelegateInterface;
|
use Interop\Http\ServerMiddleware\DelegateInterface;
|
||||||
use Interop\Http\ServerMiddleware\MiddlewareInterface as ServerMiddlewareInterface;
|
use Interop\Http\ServerMiddleware\MiddlewareInterface as ServerMiddlewareInterface;
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
@ -12,7 +12,7 @@ class KanbanAction implements ServerMiddlewareInterface
|
|||||||
{
|
{
|
||||||
private $dataCollector;
|
private $dataCollector;
|
||||||
|
|
||||||
public function __construct(DataCollectorService $dataCollectorService)
|
public function __construct(JiraCollectorService $dataCollectorService)
|
||||||
{
|
{
|
||||||
$this->dataCollector = $dataCollectorService;
|
$this->dataCollector = $dataCollectorService;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
namespace App\Action;
|
namespace App\Action;
|
||||||
|
|
||||||
use App\Service\DataCollectorService;
|
use App\Service\JiraCollectorService;
|
||||||
use Interop\Container\ContainerInterface;
|
use Interop\Container\ContainerInterface;
|
||||||
|
|
||||||
class KanbanFactory
|
class KanbanFactory
|
||||||
{
|
{
|
||||||
public function __invoke(ContainerInterface $container)
|
public function __invoke(ContainerInterface $container)
|
||||||
{
|
{
|
||||||
$dataCollectorService = $container->get(DataCollectorService::class);
|
$dataCollectorService = $container->get(JiraCollectorService::class);
|
||||||
return new KanbanAction($dataCollectorService);
|
return new KanbanAction($dataCollectorService);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
33
src/App/Command/UpdateLabInfoCommand.php
Normal file
33
src/App/Command/UpdateLabInfoCommand.php
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Command;
|
||||||
|
|
||||||
|
use App\Service\LabInfoCollectorService;
|
||||||
|
use Symfony\Component\Console\Command\Command;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
|
||||||
|
class UpdateLabInfoCommand extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var LabInfoCollectorService
|
||||||
|
*/
|
||||||
|
private $labInfoService;
|
||||||
|
|
||||||
|
public function __construct(LabInfoCollectorService $labInfoService)
|
||||||
|
{
|
||||||
|
$this->labInfoService = $labInfoService;
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function configure()
|
||||||
|
{
|
||||||
|
$this->setName('labinfo:print')
|
||||||
|
->setDescription('Updates cache of jcat packages, streams and active nightly ci configuration');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function execute(InputInterface $input, OutputInterface $output)
|
||||||
|
{
|
||||||
|
$output->writeln($this->labInfoService->getLabTemperatureData());
|
||||||
|
}
|
||||||
|
}
|
||||||
16
src/App/Command/UpdateLabInfoFactory.php
Normal file
16
src/App/Command/UpdateLabInfoFactory.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Command;
|
||||||
|
|
||||||
|
use App\Service\LabInfoCollectorService;
|
||||||
|
use Interop\Container\ContainerInterface;
|
||||||
|
|
||||||
|
class UpdateLabInfoFactory
|
||||||
|
{
|
||||||
|
public function __invoke(ContainerInterface $container)
|
||||||
|
{
|
||||||
|
/** @var LabInfoCollectorService $labInfoService */
|
||||||
|
$labInfoService = $container->get(LabInfoCollectorService::class);
|
||||||
|
return new UpdateLabInfoCommand($labInfoService);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -48,7 +48,8 @@ class ConfigProvider
|
|||||||
Action\KanbanAction::class => Action\KanbanFactory::class,
|
Action\KanbanAction::class => Action\KanbanFactory::class,
|
||||||
|
|
||||||
Service\AvatarService::class => Service\AvatarServiceFactory::class,
|
Service\AvatarService::class => Service\AvatarServiceFactory::class,
|
||||||
Service\DataCollectorService::class => Service\DataCollectorServiceFactory::class,
|
Service\JiraCollectorService::class => Service\JiraCollectorServiceFactory::class,
|
||||||
|
Service\LabInfoCollectorService::class => Service\LabInfoCollectorServiceFactory::class,
|
||||||
|
|
||||||
'service.avatarCache' => function(ContainerInterface $container): StorageInterface {
|
'service.avatarCache' => function(ContainerInterface $container): StorageInterface {
|
||||||
$cache = new FilesytemCache();
|
$cache = new FilesytemCache();
|
||||||
@ -65,11 +66,18 @@ class ConfigProvider
|
|||||||
|
|
||||||
$httpClient = new Client();
|
$httpClient = new Client();
|
||||||
$httpClient->setAdapter($curlAdapter = new Client\Adapter\Curl());
|
$httpClient->setAdapter($curlAdapter = new Client\Adapter\Curl());
|
||||||
$curlAdapter->setOptions(['timeout' => 300]);
|
$curlAdapter->setOptions([
|
||||||
|
'timeout' => 300,
|
||||||
|
]);
|
||||||
|
$curlAdapter
|
||||||
|
->setCurlOption(CURLOPT_SSL_VERIFYPEER, false)
|
||||||
|
->setCurlOption(CURLOPT_SSL_VERIFYHOST, false)
|
||||||
|
;
|
||||||
if($config->get('http.proxy.enabled', false)) {
|
if($config->get('http.proxy.enabled', false)) {
|
||||||
$curlAdapter
|
$curlAdapter
|
||||||
->setCurlOption(CURLOPT_PROXYTYPE, $config->get('http.proxy.type'))
|
->setCurlOption(CURLOPT_PROXYTYPE, $config->get('http.proxy.type'))
|
||||||
->setCurlOption(CURLOPT_PROXY, $config->get('http.proxy.url'));
|
->setCurlOption(CURLOPT_PROXY, $config->get('http.proxy.url'))
|
||||||
|
;
|
||||||
}
|
}
|
||||||
return $httpClient;
|
return $httpClient;
|
||||||
},
|
},
|
||||||
|
|||||||
@ -47,6 +47,11 @@ class KanbanEntry implements \JsonSerializable
|
|||||||
*/
|
*/
|
||||||
private $issuePriorityIcon;
|
private $issuePriorityIcon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string[]
|
||||||
|
*/
|
||||||
|
private $labels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JIRA: customfield_11226
|
* JIRA: customfield_11226
|
||||||
* @var int
|
* @var int
|
||||||
@ -277,6 +282,24 @@ class KanbanEntry implements \JsonSerializable
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
public function getLabels(): ?array
|
||||||
|
{
|
||||||
|
return $this->labels;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string[] $labels
|
||||||
|
* @return KanbanEntry
|
||||||
|
*/
|
||||||
|
public function setLabels(?array $labels): KanbanEntry
|
||||||
|
{
|
||||||
|
$this->labels = $labels;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[]|ArrayCollection
|
* @return string[]|ArrayCollection
|
||||||
*/
|
*/
|
||||||
@ -477,6 +500,7 @@ class KanbanEntry implements \JsonSerializable
|
|||||||
'assignee' => $this->getAssignee(),
|
'assignee' => $this->getAssignee(),
|
||||||
'issuePriority' => $this->getIssuePriority(),
|
'issuePriority' => $this->getIssuePriority(),
|
||||||
'issuePriorityIcon' => $this->getIssuePriorityIcon(),
|
'issuePriorityIcon' => $this->getIssuePriorityIcon(),
|
||||||
|
'labels' => $this->getLabels(),
|
||||||
'prio' => $this->getPrio(),
|
'prio' => $this->getPrio(),
|
||||||
'functionalArea' => $this->getFunctionalAreas()->getValues(),
|
'functionalArea' => $this->getFunctionalAreas()->getValues(),
|
||||||
'externalId' => $this->getExternalId(),
|
'externalId' => $this->getExternalId(),
|
||||||
|
|||||||
@ -12,7 +12,7 @@ use Zend\Http\Client;
|
|||||||
use Zend\Json\Decoder;
|
use Zend\Json\Decoder;
|
||||||
use Zend\Json\Json;
|
use Zend\Json\Json;
|
||||||
|
|
||||||
class DataCollectorService
|
class JiraCollectorService
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var Config
|
* @var Config
|
||||||
@ -89,6 +89,7 @@ class DataCollectorService
|
|||||||
->setAnswerCode($jsonIssue['fields']['customfield_11692'])
|
->setAnswerCode($jsonIssue['fields']['customfield_11692'])
|
||||||
->setIssuePriority($jsonIssue['fields']['priority']['name'])
|
->setIssuePriority($jsonIssue['fields']['priority']['name'])
|
||||||
->setIssuePriorityIcon($jsonIssue['fields']['priority']['iconUrl'])
|
->setIssuePriorityIcon($jsonIssue['fields']['priority']['iconUrl'])
|
||||||
|
->setLabels($jsonIssue['fields']['labels'])
|
||||||
;
|
;
|
||||||
|
|
||||||
// externalId : customfield_10010
|
// externalId : customfield_10010
|
||||||
@ -6,7 +6,7 @@ use Interop\Container\ContainerInterface;
|
|||||||
use Zend\Config\Config;
|
use Zend\Config\Config;
|
||||||
use Zend\Http\Client;
|
use Zend\Http\Client;
|
||||||
|
|
||||||
class DataCollectorServiceFactory
|
class JiraCollectorServiceFactory
|
||||||
{
|
{
|
||||||
public function __invoke(ContainerInterface $container)
|
public function __invoke(ContainerInterface $container)
|
||||||
{
|
{
|
||||||
@ -14,6 +14,6 @@ class DataCollectorServiceFactory
|
|||||||
$httpClient = $container->get(Client::class);
|
$httpClient = $container->get(Client::class);
|
||||||
$config = new Config($configArray['app.config']);
|
$config = new Config($configArray['app.config']);
|
||||||
$avatarService = $container->get(AvatarService::class);
|
$avatarService = $container->get(AvatarService::class);
|
||||||
return new DataCollectorService($httpClient, $config, $avatarService);
|
return new JiraCollectorService($httpClient, $config, $avatarService);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
86
src/App/Service/LabInfoCollectorService.php
Normal file
86
src/App/Service/LabInfoCollectorService.php
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use Symfony\Component\CssSelector\CssSelectorConverter;
|
||||||
|
use Zend\Config\Config;
|
||||||
|
use Zend\Http\Client;
|
||||||
|
|
||||||
|
class LabInfoCollectorService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Config
|
||||||
|
*/
|
||||||
|
private $config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Client
|
||||||
|
*/
|
||||||
|
private $httpClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $tempSensors = [
|
||||||
|
'Temp 5' => 'back_left',
|
||||||
|
'Temp 4' => 'back_middle',
|
||||||
|
'Temp 3' => 'back_right',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JiraClientService constructor.
|
||||||
|
* @param Client $client
|
||||||
|
* @param Config $config
|
||||||
|
*/
|
||||||
|
public function __construct(Client $client, Config $config)
|
||||||
|
{
|
||||||
|
$this->httpClient = $client;
|
||||||
|
$this->config = $config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLabTemperatureData()
|
||||||
|
{
|
||||||
|
/** @var Config $labTemperatureUrl */
|
||||||
|
$labTemperatureUrl = $this->config->get('url.labTemperatureUrl');
|
||||||
|
|
||||||
|
$response = $this->httpClient
|
||||||
|
->setUri($labTemperatureUrl)
|
||||||
|
->send();
|
||||||
|
|
||||||
|
if(!$response->isSuccess()) {
|
||||||
|
throw new \UnexpectedValueException("Bad LAB result", $response->getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->parseHtml($response->getBody());
|
||||||
|
}
|
||||||
|
|
||||||
|
private function parseHtml($html): array
|
||||||
|
{
|
||||||
|
$cssToXpathConverter = new CssSelectorConverter();
|
||||||
|
$xpathLabelQuery = $cssToXpathConverter->toXPath('a.sensormenu.isnotpaused');
|
||||||
|
$xpathValueQuery = $cssToXpathConverter->toXPath('div.graphlabel2');
|
||||||
|
|
||||||
|
$xmlErrorHandling = libxml_use_internal_errors(TRUE);
|
||||||
|
$domDocument = new \DOMDocument();
|
||||||
|
$domDocument->loadHTML($html);
|
||||||
|
libxml_clear_errors();
|
||||||
|
libxml_use_internal_errors($xmlErrorHandling);
|
||||||
|
|
||||||
|
$documentXpath = new \DOMXPath($domDocument);
|
||||||
|
/** @var \DOMNodeList $element */
|
||||||
|
$element = $documentXpath->query($xpathLabelQuery);
|
||||||
|
|
||||||
|
$thing = [];
|
||||||
|
/** @var \DOMElement $item */
|
||||||
|
foreach($element as $item) {
|
||||||
|
$sensorName = trim($item->nodeValue);
|
||||||
|
if( in_array($sensorName, array_keys($this->tempSensors)) ){
|
||||||
|
/** @var \DOMNodeList $element */
|
||||||
|
$valueElement = $documentXpath->query($xpathValueQuery, $item->parentNode->parentNode);
|
||||||
|
$thing[$this->tempSensors[$sensorName]] = $valueElement->item(0)->nodeValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $thing;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
src/App/Service/LabInfoCollectorServiceFactory.php
Normal file
18
src/App/Service/LabInfoCollectorServiceFactory.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use Interop\Container\ContainerInterface;
|
||||||
|
use Zend\Config\Config;
|
||||||
|
use Zend\Http\Client;
|
||||||
|
|
||||||
|
class LabInfoCollectorServiceFactory
|
||||||
|
{
|
||||||
|
public function __invoke(ContainerInterface $container)
|
||||||
|
{
|
||||||
|
$configArray = $container->get('config');
|
||||||
|
$httpClient = $container->get(Client::class);
|
||||||
|
$config = new Config($configArray['app.config']);
|
||||||
|
return new LabInfoCollectorService($httpClient, $config);
|
||||||
|
}
|
||||||
|
}
|
||||||
86
src/App/Service/TrInfoCollectorService.php
Normal file
86
src/App/Service/TrInfoCollectorService.php
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use Symfony\Component\CssSelector\CssSelectorConverter;
|
||||||
|
use Zend\Config\Config;
|
||||||
|
use Zend\Http\Client;
|
||||||
|
|
||||||
|
class TrInfoCollectorService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Config
|
||||||
|
*/
|
||||||
|
private $config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Client
|
||||||
|
*/
|
||||||
|
private $httpClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $tempSensors = [
|
||||||
|
'Temp 5' => 'back_left',
|
||||||
|
'Temp 4' => 'back_middle',
|
||||||
|
'Temp 3' => 'back_right',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JiraClientService constructor.
|
||||||
|
* @param Client $client
|
||||||
|
* @param Config $config
|
||||||
|
*/
|
||||||
|
public function __construct(Client $client, Config $config)
|
||||||
|
{
|
||||||
|
$this->httpClient = $client;
|
||||||
|
$this->config = $config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLabTemperatureData()
|
||||||
|
{
|
||||||
|
/** @var Config $labTemperatureUrl */
|
||||||
|
$labTemperatureUrl = $this->config->get('url.labTemperatureUrl');
|
||||||
|
|
||||||
|
$response = $this->httpClient
|
||||||
|
->setUri($labTemperatureUrl)
|
||||||
|
->send();
|
||||||
|
|
||||||
|
if(!$response->isSuccess()) {
|
||||||
|
throw new \UnexpectedValueException("Bad LAB result", $response->getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->parseHtml($response->getBody());
|
||||||
|
}
|
||||||
|
|
||||||
|
private function parseHtml($html): array
|
||||||
|
{
|
||||||
|
$cssToXpathConverter = new CssSelectorConverter();
|
||||||
|
$xpathLabelQuery = $cssToXpathConverter->toXPath('a.sensormenu.isnotpaused');
|
||||||
|
$xpathValueQuery = $cssToXpathConverter->toXPath('div.graphlabel2');
|
||||||
|
|
||||||
|
$xmlErrorHandling = libxml_use_internal_errors(TRUE);
|
||||||
|
$domDocument = new \DOMDocument();
|
||||||
|
$domDocument->loadHTML($html);
|
||||||
|
libxml_clear_errors();
|
||||||
|
libxml_use_internal_errors($xmlErrorHandling);
|
||||||
|
|
||||||
|
$documentXpath = new \DOMXPath($domDocument);
|
||||||
|
/** @var \DOMNodeList $element */
|
||||||
|
$element = $documentXpath->query($xpathLabelQuery);
|
||||||
|
|
||||||
|
$thing = [];
|
||||||
|
/** @var \DOMElement $item */
|
||||||
|
foreach($element as $item) {
|
||||||
|
$sensorName = trim($item->nodeValue);
|
||||||
|
if( in_array($sensorName, array_keys($this->tempSensors)) ){
|
||||||
|
/** @var \DOMNodeList $element */
|
||||||
|
$valueElement = $documentXpath->query($xpathValueQuery, $item->parentNode->parentNode);
|
||||||
|
$thing[$this->tempSensors[$sensorName]] = $valueElement->item(0)->nodeValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $thing;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
src/App/Service/TrInfoCollectorServiceFactory.php
Normal file
18
src/App/Service/TrInfoCollectorServiceFactory.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use Interop\Container\ContainerInterface;
|
||||||
|
use Zend\Config\Config;
|
||||||
|
use Zend\Http\Client;
|
||||||
|
|
||||||
|
class TrInfoCollectorServiceFactory
|
||||||
|
{
|
||||||
|
public function __invoke(ContainerInterface $container)
|
||||||
|
{
|
||||||
|
$configArray = $container->get('config');
|
||||||
|
$httpClient = $container->get(Client::class);
|
||||||
|
$config = new Config($configArray['app.config']);
|
||||||
|
return new TrInfoCollectorService($httpClient, $config);
|
||||||
|
}
|
||||||
|
}
|
||||||
86
src/App/Service/VacationInfoCollectorService.php
Normal file
86
src/App/Service/VacationInfoCollectorService.php
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use Symfony\Component\CssSelector\CssSelectorConverter;
|
||||||
|
use Zend\Config\Config;
|
||||||
|
use Zend\Http\Client;
|
||||||
|
|
||||||
|
class VacationInfoCollectorService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Config
|
||||||
|
*/
|
||||||
|
private $config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Client
|
||||||
|
*/
|
||||||
|
private $httpClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $tempSensors = [
|
||||||
|
'Temp 5' => 'back_left',
|
||||||
|
'Temp 4' => 'back_middle',
|
||||||
|
'Temp 3' => 'back_right',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JiraClientService constructor.
|
||||||
|
* @param Client $client
|
||||||
|
* @param Config $config
|
||||||
|
*/
|
||||||
|
public function __construct(Client $client, Config $config)
|
||||||
|
{
|
||||||
|
$this->httpClient = $client;
|
||||||
|
$this->config = $config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLabTemperatureData()
|
||||||
|
{
|
||||||
|
/** @var Config $labTemperatureUrl */
|
||||||
|
$labTemperatureUrl = $this->config->get('url.labTemperatureUrl');
|
||||||
|
|
||||||
|
$response = $this->httpClient
|
||||||
|
->setUri($labTemperatureUrl)
|
||||||
|
->send();
|
||||||
|
|
||||||
|
if(!$response->isSuccess()) {
|
||||||
|
throw new \UnexpectedValueException("Bad LAB result", $response->getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->parseHtml($response->getBody());
|
||||||
|
}
|
||||||
|
|
||||||
|
private function parseHtml($html): array
|
||||||
|
{
|
||||||
|
$cssToXpathConverter = new CssSelectorConverter();
|
||||||
|
$xpathLabelQuery = $cssToXpathConverter->toXPath('a.sensormenu.isnotpaused');
|
||||||
|
$xpathValueQuery = $cssToXpathConverter->toXPath('div.graphlabel2');
|
||||||
|
|
||||||
|
$xmlErrorHandling = libxml_use_internal_errors(TRUE);
|
||||||
|
$domDocument = new \DOMDocument();
|
||||||
|
$domDocument->loadHTML($html);
|
||||||
|
libxml_clear_errors();
|
||||||
|
libxml_use_internal_errors($xmlErrorHandling);
|
||||||
|
|
||||||
|
$documentXpath = new \DOMXPath($domDocument);
|
||||||
|
/** @var \DOMNodeList $element */
|
||||||
|
$element = $documentXpath->query($xpathLabelQuery);
|
||||||
|
|
||||||
|
$thing = [];
|
||||||
|
/** @var \DOMElement $item */
|
||||||
|
foreach($element as $item) {
|
||||||
|
$sensorName = trim($item->nodeValue);
|
||||||
|
if( in_array($sensorName, array_keys($this->tempSensors)) ){
|
||||||
|
/** @var \DOMNodeList $element */
|
||||||
|
$valueElement = $documentXpath->query($xpathValueQuery, $item->parentNode->parentNode);
|
||||||
|
$thing[$this->tempSensors[$sensorName]] = $valueElement->item(0)->nodeValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $thing;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
src/App/Service/VacationInfoCollectorServiceFactory.php
Normal file
18
src/App/Service/VacationInfoCollectorServiceFactory.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use Interop\Container\ContainerInterface;
|
||||||
|
use Zend\Config\Config;
|
||||||
|
use Zend\Http\Client;
|
||||||
|
|
||||||
|
class VacationInfoCollectorServiceFactory
|
||||||
|
{
|
||||||
|
public function __invoke(ContainerInterface $container)
|
||||||
|
{
|
||||||
|
$configArray = $container->get('config');
|
||||||
|
$httpClient = $container->get(Client::class);
|
||||||
|
$config = new Config($configArray['app.config']);
|
||||||
|
return new VacationInfoCollectorService($httpClient, $config);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user