Merge pull request #4824 from nextcloud/log-connection-problems-appfetcher
Log connectiong problems while fetching data from appstore
This commit is contained in:
commit
22dff1974f
|
@ -26,23 +26,27 @@ use OC\Files\AppData\Factory;
|
|||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Http\Client\IClientService;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
|
||||
class AppFetcher extends Fetcher {
|
||||
/**
|
||||
* @param Factory $appDataFactory
|
||||
* @param IClientService $clientService
|
||||
* @param ITimeFactory $timeFactory
|
||||
* @param IConfig $config;
|
||||
* @param IConfig $config
|
||||
* @param ILogger $logger
|
||||
*/
|
||||
public function __construct(Factory $appDataFactory,
|
||||
IClientService $clientService,
|
||||
ITimeFactory $timeFactory,
|
||||
IConfig $config) {
|
||||
IConfig $config,
|
||||
ILogger $logger) {
|
||||
parent::__construct(
|
||||
$appDataFactory,
|
||||
$clientService,
|
||||
$timeFactory,
|
||||
$config
|
||||
$config,
|
||||
$logger
|
||||
);
|
||||
|
||||
$this->fileName = 'apps.json';
|
||||
|
|
|
@ -25,6 +25,7 @@ use OC\Files\AppData\Factory;
|
|||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Http\Client\IClientService;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
|
||||
class CategoryFetcher extends Fetcher {
|
||||
/**
|
||||
|
@ -32,16 +33,19 @@ class CategoryFetcher extends Fetcher {
|
|||
* @param IClientService $clientService
|
||||
* @param ITimeFactory $timeFactory
|
||||
* @param IConfig $config
|
||||
* @param ILogger $logger
|
||||
*/
|
||||
public function __construct(Factory $appDataFactory,
|
||||
IClientService $clientService,
|
||||
ITimeFactory $timeFactory,
|
||||
IConfig $config) {
|
||||
IConfig $config,
|
||||
ILogger $logger) {
|
||||
parent::__construct(
|
||||
$appDataFactory,
|
||||
$clientService,
|
||||
$timeFactory,
|
||||
$config
|
||||
$config,
|
||||
$logger
|
||||
);
|
||||
$this->fileName = 'categories.json';
|
||||
$this->endpointUrl = 'https://apps.nextcloud.com/api/v1/categories.json';
|
||||
|
|
|
@ -22,12 +22,14 @@
|
|||
namespace OC\App\AppStore\Fetcher;
|
||||
|
||||
use OC\Files\AppData\Factory;
|
||||
use GuzzleHttp\Exception\ConnectException;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Files\IAppData;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\Http\Client\IClientService;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
|
||||
abstract class Fetcher {
|
||||
const INVALIDATE_AFTER_SECONDS = 300;
|
||||
|
@ -40,6 +42,8 @@ abstract class Fetcher {
|
|||
protected $timeFactory;
|
||||
/** @var IConfig */
|
||||
protected $config;
|
||||
/** @var Ilogger */
|
||||
protected $logger;
|
||||
/** @var string */
|
||||
protected $fileName;
|
||||
/** @var string */
|
||||
|
@ -52,15 +56,18 @@ abstract class Fetcher {
|
|||
* @param IClientService $clientService
|
||||
* @param ITimeFactory $timeFactory
|
||||
* @param IConfig $config
|
||||
* @param ILogger $logger
|
||||
*/
|
||||
public function __construct(Factory $appDataFactory,
|
||||
IClientService $clientService,
|
||||
ITimeFactory $timeFactory,
|
||||
IConfig $config) {
|
||||
IConfig $config,
|
||||
ILogger $logger) {
|
||||
$this->appData = $appDataFactory->get('appstore');
|
||||
$this->clientService = $clientService;
|
||||
$this->timeFactory = $timeFactory;
|
||||
$this->config = $config;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -153,6 +160,9 @@ abstract class Fetcher {
|
|||
$responseJson = $this->fetch($ETag, $content);
|
||||
$file->putContent(json_encode($responseJson));
|
||||
return json_decode($file->getContent(), true)['data'];
|
||||
} catch (ConnectException $e) {
|
||||
$this->logger->logException($e, ['app' => 'appstoreFetcher']);
|
||||
return [];
|
||||
} catch (\Exception $e) {
|
||||
return [];
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ use OCP\Http\Client\IClient;
|
|||
use OCP\Http\Client\IClientService;
|
||||
use OCP\Http\Client\IResponse;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
use Test\TestCase;
|
||||
|
||||
class AppFetcherTest extends TestCase {
|
||||
|
@ -43,6 +44,8 @@ class AppFetcherTest extends TestCase {
|
|||
protected $timeFactory;
|
||||
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
|
||||
protected $config;
|
||||
/** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
|
||||
protected $logger;
|
||||
/** @var AppFetcher */
|
||||
protected $fetcher;
|
||||
/** @var string */
|
||||
|
@ -64,6 +67,7 @@ EOD;
|
|||
$this->clientService = $this->createMock(IClientService::class);
|
||||
$this->timeFactory = $this->createMock(ITimeFactory::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->logger = $this->createMock(ILogger::class);
|
||||
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
|
@ -74,7 +78,8 @@ EOD;
|
|||
$factory,
|
||||
$this->clientService,
|
||||
$this->timeFactory,
|
||||
$this->config
|
||||
$this->config,
|
||||
$this->logger
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,8 @@ class CategoryFetcherTest extends FetcherBase {
|
|||
$this->appDataFactory,
|
||||
$this->clientService,
|
||||
$this->timeFactory,
|
||||
$this->config
|
||||
$this->config,
|
||||
$this->logger
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ use OCP\Http\Client\IClient;
|
|||
use OCP\Http\Client\IClientService;
|
||||
use OCP\Http\Client\IResponse;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
use Test\TestCase;
|
||||
|
||||
abstract class FetcherBase extends TestCase {
|
||||
|
@ -45,6 +46,8 @@ abstract class FetcherBase extends TestCase {
|
|||
protected $timeFactory;
|
||||
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
|
||||
protected $config;
|
||||
/** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
|
||||
protected $logger;
|
||||
/** @var Fetcher */
|
||||
protected $fetcher;
|
||||
/** @var string */
|
||||
|
@ -63,6 +66,7 @@ abstract class FetcherBase extends TestCase {
|
|||
$this->clientService = $this->createMock(IClientService::class);
|
||||
$this->timeFactory = $this->createMock(ITimeFactory::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->logger = $this->createMock(ILogger::class);
|
||||
}
|
||||
|
||||
public function testGetWithAlreadyExistingFileAndUpToDateTimestampAndVersion() {
|
||||
|
|
Loading…
Reference in New Issue