Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/bookmarks.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorblizzz <blizzz@owncloud.com>2016-04-25 02:13:58 +0300
committerblizzz <blizzz@owncloud.com>2016-04-25 02:13:58 +0300
commit8856fa23fe404db5c09675bf0612a740ac73432c (patch)
tree0fe9fa3492a637712260d96b46cb5584f9cd331c
parentecc50c347da31f3daa91daeccddba6207c2861b4 (diff)
parent8ea69ce561ad1d83cddd3212b70b2705c2c14a3c (diff)
Merge pull request #250 from owncloud/backport-246-9.0v9.0.4RC1v9.0.4v9.0.3RC1v9.0.3v9.0.2RC2v9.0.2RC1v9.0.2bookmarks-v0.7
[9.0] Backport of #246
-rw-r--r--controller/lib/bookmarks.php11
-rw-r--r--tests/lib_bookmark_test.php55
2 files changed, 49 insertions, 17 deletions
diff --git a/controller/lib/bookmarks.php b/controller/lib/bookmarks.php
index d58ab1d1..f3283939 100644
--- a/controller/lib/bookmarks.php
+++ b/controller/lib/bookmarks.php
@@ -553,7 +553,9 @@ class Bookmarks {
$page = "";
try {
- $page = \OC::$server->getHTTPHelper()->getUrlContent($url);
+ $request = \OC::$server->getHTTPClientService()->newClient()->get($url);
+ $page = $request->getBody();
+ $contentType = $request->getHeader('Content-Type');
} catch (\Exception $e) {
throw $e;
}
@@ -561,8 +563,11 @@ class Bookmarks {
//Check for encoding of site.
//If not UTF-8 convert it.
$encoding = array();
- preg_match('/charset="?(.*?)["|;]/i', $page, $encoding);
-
+ preg_match('#.+?/.+?;\\s?charset\\s?=\\s?(.+)#i', $contentType, $encoding);
+ if(empty($encoding)) {
+ preg_match('/charset="?(.*?)["|;]/i', $page, $encoding);
+ }
+
if (isset($encoding[1])) {
$decodeFrom = strtoupper($encoding[1]);
} else {
diff --git a/tests/lib_bookmark_test.php b/tests/lib_bookmark_test.php
index 0135b043..66f30236 100644
--- a/tests/lib_bookmark_test.php
+++ b/tests/lib_bookmark_test.php
@@ -96,14 +96,41 @@ class Test_LibBookmarks_Bookmarks extends PHPUnit_Framework_TestCase {
$config = $this->getMockBuilder('\OCP\IConfig')
->disableOriginalConstructor()->getMock();
- $clientService = $this->getMock('OCP\Http\Client\IClientService');
- $httpHelperMock = $this->getMockBuilder('\OC\HTTPHelper')
- ->setConstructorArgs(array($config, $clientService))
- ->getMock();
- $returnAmazonDe = file_get_contents(__DIR__ . '/res/amazonHtml.file');
- $returnGolemDe = file_get_contents(__DIR__ . '/res/golemHtml.file');
- $httpHelperMock->expects($this->any())->method('getUrlContent')->with($this->anything())->will($this->onConsecutiveCalls($returnAmazonDe, $returnGolemDe));
- $this->registerHttpHelper($httpHelperMock);
+ $amazonResponse = $this->getMock('OCP\Http\Client\IResponse');
+ $amazonResponse->expects($this->once())
+ ->method('getBody')
+ ->will($this->returnValue(file_get_contents(__DIR__ . '/res/amazonHtml.file')));
+ $amazonResponse->expects($this->once())
+ ->method('getHeader')
+ ->with('Content-Type')
+ ->will($this->returnValue(''));
+
+ $golemResponse = $this->getMock('OCP\Http\Client\IResponse');
+ $golemResponse->expects($this->once())
+ ->method('getBody')
+ ->will($this->returnValue(file_get_contents(__DIR__ . '/res/golemHtml.file')));
+ $golemResponse->expects($this->once())
+ ->method('getHeader')
+ ->with('Content-Type')
+ ->will($this->returnValue('text/html; charset=UTF-8'));
+
+ $clientMock = $this->getMock('OCP\Http\Client\IClient');
+ $clientMock->expects($this->exactly(2))
+ ->method('get')
+ ->will($this->returnCallback(function ($page) use($amazonResponse, $golemResponse) {
+ if($page === 'amazonHtml') {
+ return $amazonResponse;
+ } else if($page === 'golemHtml') {
+ return $golemResponse;
+ }
+ }));
+
+ $clientServiceMock = $this->getMock('OCP\Http\Client\IClientService');
+ $clientServiceMock->expects($this->any())
+ ->method('newClient')
+ ->will($this->returnValue($clientMock));
+
+ $this->registerHttpService($clientServiceMock);
$metadataAmazon = Bookmarks::getURLMetadata('amazonHtml');
$this->assertTrue($metadataAmazon['url'] == 'amazonHtml');
@@ -126,13 +153,13 @@ class Test_LibBookmarks_Bookmarks extends PHPUnit_Framework_TestCase {
}
/**
- * Register an http helper mock for testing purposes.
- * @param $httpHelper http helper mock
+ * Register an http service mock for testing purposes.
+ *
+ * @param \OCP\Http\Client\IClientService $service
*/
- private function registerHttpHelper($httpHelper) {
- $this->oldHttpHelper = \OC::$server->query('HTTPHelper');
- \OC::$server->registerService('HTTPHelper', function () use ($httpHelper) {
- return $httpHelper;
+ private function registerHttpService($service) {
+ \OC::$server->registerService('HttpClientService', function () use ($service) {
+ return $service;
});
}