mirror of
https://github.com/wallabag/wallabag.git
synced 2024-09-29 06:42:07 +00:00
CS
This commit is contained in:
parent
d0ec2ddd23
commit
c18a2476b6
4 changed files with 95 additions and 96 deletions
|
@ -354,11 +354,11 @@ class EntryRestController extends WallabagRestController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($data['isArchived'])) {
|
if (null !== $data['isArchived']) {
|
||||||
$entry->setArchived((bool) $data['isArchived']);
|
$entry->setArchived((bool) $data['isArchived']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($data['isStarred'])) {
|
if (null !== $data['isStarred']) {
|
||||||
$entry->setStarred((bool) $data['isStarred']);
|
$entry->setStarred((bool) $data['isStarred']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ class EntryRestController extends WallabagRestController
|
||||||
$this->get('wallabag_core.tags_assigner')->assignTagsToEntry($entry, $data['tags']);
|
$this->get('wallabag_core.tags_assigner')->assignTagsToEntry($entry, $data['tags']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($data['isPublic'])) {
|
if (null !== $data['isPublic']) {
|
||||||
if (true === (bool) $data['isPublic'] && null === $entry->getUid()) {
|
if (true === (bool) $data['isPublic'] && null === $entry->getUid()) {
|
||||||
$entry->generateUid();
|
$entry->generateUid();
|
||||||
} elseif (false === (bool) $data['isPublic']) {
|
} elseif (false === (bool) $data['isPublic']) {
|
||||||
|
@ -457,11 +457,11 @@ class EntryRestController extends WallabagRestController
|
||||||
$contentProxy->updatePublishedAt($entry, $data['publishedAt']);
|
$contentProxy->updatePublishedAt($entry, $data['publishedAt']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($data['isArchived'])) {
|
if (null !== $data['isArchived']) {
|
||||||
$entry->setArchived((bool) $data['isArchived']);
|
$entry->setArchived((bool) $data['isArchived']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($data['isStarred'])) {
|
if (null !== $data['isStarred']) {
|
||||||
$entry->setStarred((bool) $data['isStarred']);
|
$entry->setStarred((bool) $data['isStarred']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -470,7 +470,7 @@ class EntryRestController extends WallabagRestController
|
||||||
$this->get('wallabag_core.tags_assigner')->assignTagsToEntry($entry, $data['tags']);
|
$this->get('wallabag_core.tags_assigner')->assignTagsToEntry($entry, $data['tags']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($data['isPublic'])) {
|
if (null !== $data['isPublic']) {
|
||||||
if (true === (bool) $data['isPublic'] && null === $entry->getUid()) {
|
if (true === (bool) $data['isPublic'] && null === $entry->getUid()) {
|
||||||
$entry->generateUid();
|
$entry->generateUid();
|
||||||
} elseif (false === (bool) $data['isPublic']) {
|
} elseif (false === (bool) $data['isPublic']) {
|
||||||
|
|
|
@ -66,6 +66,76 @@ class ContentProxy
|
||||||
$this->stockEntry($entry, $content);
|
$this->stockEntry($entry, $content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use a Symfony validator to ensure the language is well formatted.
|
||||||
|
*
|
||||||
|
* @param Entry $entry
|
||||||
|
* @param string $value Language to validate and save
|
||||||
|
*/
|
||||||
|
public function updateLanguage(Entry $entry, $value)
|
||||||
|
{
|
||||||
|
// some lang are defined as fr-FR, es-ES.
|
||||||
|
// replacing - by _ might increase language support
|
||||||
|
$value = str_replace('-', '_', $value);
|
||||||
|
|
||||||
|
$errors = $this->validator->validate(
|
||||||
|
$value,
|
||||||
|
(new LocaleConstraint())
|
||||||
|
);
|
||||||
|
|
||||||
|
if (0 === count($errors)) {
|
||||||
|
$entry->setLanguage($value);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->logger->warning('Language validation failed. ' . (string) $errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use a Symfony validator to ensure the preview picture is a real url.
|
||||||
|
*
|
||||||
|
* @param Entry $entry
|
||||||
|
* @param string $value URL to validate and save
|
||||||
|
*/
|
||||||
|
public function updatePreviewPicture(Entry $entry, $value)
|
||||||
|
{
|
||||||
|
$errors = $this->validator->validate(
|
||||||
|
$value,
|
||||||
|
(new UrlConstraint())
|
||||||
|
);
|
||||||
|
|
||||||
|
if (0 === count($errors)) {
|
||||||
|
$entry->setPreviewPicture($value);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->logger->warning('PreviewPicture validation failed. ' . (string) $errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update date.
|
||||||
|
*
|
||||||
|
* @param Entry $entry
|
||||||
|
* @param string $value Date to validate and save
|
||||||
|
*/
|
||||||
|
public function updatePublishedAt(Entry $entry, $value)
|
||||||
|
{
|
||||||
|
$date = $value;
|
||||||
|
|
||||||
|
// is it a timestamp?
|
||||||
|
if (filter_var($date, FILTER_VALIDATE_INT) !== false) {
|
||||||
|
$date = '@' . $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$entry->setPublishedAt(new \DateTime($date));
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$this->logger->warning('Error while defining date', ['e' => $e, 'url' => $entry->getUrl(), 'date' => $value]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stock entry with fetched or imported content.
|
* Stock entry with fetched or imported content.
|
||||||
* Will fall back to OpenGraph data if available.
|
* Will fall back to OpenGraph data if available.
|
||||||
|
@ -155,74 +225,4 @@ class ContentProxy
|
||||||
{
|
{
|
||||||
return !empty($content['title']) && !empty($content['html']) && !empty($content['url']);
|
return !empty($content['title']) && !empty($content['html']) && !empty($content['url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Use a Symfony validator to ensure the language is well formatted.
|
|
||||||
*
|
|
||||||
* @param Entry $entry
|
|
||||||
* @param string $value Language to validate and save
|
|
||||||
*/
|
|
||||||
public function updateLanguage(Entry $entry, $value)
|
|
||||||
{
|
|
||||||
// some lang are defined as fr-FR, es-ES.
|
|
||||||
// replacing - by _ might increase language support
|
|
||||||
$value = str_replace('-', '_', $value);
|
|
||||||
|
|
||||||
$errors = $this->validator->validate(
|
|
||||||
$value,
|
|
||||||
(new LocaleConstraint())
|
|
||||||
);
|
|
||||||
|
|
||||||
if (0 === count($errors)) {
|
|
||||||
$entry->setLanguage($value);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->logger->warning('Language validation failed. ' . (string) $errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Use a Symfony validator to ensure the preview picture is a real url.
|
|
||||||
*
|
|
||||||
* @param Entry $entry
|
|
||||||
* @param string $value URL to validate and save
|
|
||||||
*/
|
|
||||||
public function updatePreviewPicture(Entry $entry, $value)
|
|
||||||
{
|
|
||||||
$errors = $this->validator->validate(
|
|
||||||
$value,
|
|
||||||
(new UrlConstraint())
|
|
||||||
);
|
|
||||||
|
|
||||||
if (0 === count($errors)) {
|
|
||||||
$entry->setPreviewPicture($value);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->logger->warning('PreviewPicture validation failed. ' . (string) $errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update date.
|
|
||||||
*
|
|
||||||
* @param Entry $entry
|
|
||||||
* @param string $value Date to validate and save
|
|
||||||
*/
|
|
||||||
public function updatePublishedAt(Entry $entry, $value)
|
|
||||||
{
|
|
||||||
$date = $value;
|
|
||||||
|
|
||||||
// is it a timestamp?
|
|
||||||
if (filter_var($date, FILTER_VALIDATE_INT) !== false) {
|
|
||||||
$date = '@'.$value;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$entry->setPublishedAt(new \DateTime($date));
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$this->logger->warning('Error while defining date', ['e' => $e, 'url' => $entry->getUrl(), 'date' => $value]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -579,10 +579,9 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||||
$this->assertSame($entry->getId(), $content['id']);
|
$this->assertSame($entry->getId(), $content['id']);
|
||||||
$this->assertSame($entry->getUrl(), $content['url']);
|
$this->assertSame($entry->getUrl(), $content['url']);
|
||||||
$this->assertGreaterThanOrEqual(1, count($content['tags']), 'We force only one tag');
|
$this->assertGreaterThanOrEqual(1, count($content['tags']), 'We force only one tag');
|
||||||
$this->assertGreaterThan($nbTags, count($content['tags']));
|
|
||||||
$this->assertEmpty($content['published_by'], 'Authors were not saved because of an array instead of a string');
|
$this->assertEmpty($content['published_by'], 'Authors were not saved because of an array instead of a string');
|
||||||
$this->assertEquals($previousContent, $content['content'], 'Ensure content has not moved');
|
$this->assertSame($previousContent, $content['content'], 'Ensure content has not moved');
|
||||||
$this->assertEquals($previousLanguage, $content['language'], 'Ensure language has not moved');
|
$this->assertSame($previousLanguage, $content['language'], 'Ensure language has not moved');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetTagsEntry()
|
public function testGetTagsEntry()
|
||||||
|
@ -739,7 +738,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
$this->assertSame(1, $content['is_archived']);
|
$this->assertSame(1, $content['is_archived']);
|
||||||
$this->assertEquals($previousTitle.'++', $content['title']);
|
$this->assertSame($previousTitle . '++', $content['title']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSaveIsStarredAfterPatch()
|
public function testSaveIsStarredAfterPatch()
|
||||||
|
@ -915,7 +914,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||||
{
|
{
|
||||||
$this->client->request('POST', '/api/entries/tags/lists?list=' . json_encode([]));
|
$this->client->request('POST', '/api/entries/tags/lists?list=' . json_encode([]));
|
||||||
|
|
||||||
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
@ -952,7 +951,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||||
{
|
{
|
||||||
$this->client->request('DELETE', '/api/entries/tags/list?list=' . json_encode([]));
|
$this->client->request('DELETE', '/api/entries/tags/list?list=' . json_encode([]));
|
||||||
|
|
||||||
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
@ -983,7 +982,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||||
{
|
{
|
||||||
$this->client->request('POST', '/api/entries/lists?urls=' . json_encode([]));
|
$this->client->request('POST', '/api/entries/lists?urls=' . json_encode([]));
|
||||||
|
|
||||||
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
@ -1019,7 +1018,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||||
{
|
{
|
||||||
$this->client->request('DELETE', '/api/entries/list?urls=' . json_encode([]));
|
$this->client->request('DELETE', '/api/entries/list?urls=' . json_encode([]));
|
||||||
|
|
||||||
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
|
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
$content = json_decode($this->client->getResponse()->getContent(), true);
|
$content = json_decode($this->client->getResponse()->getContent(), true);
|
||||||
|
|
||||||
|
|
|
@ -521,13 +521,13 @@ class ContentProxyTest extends \PHPUnit_Framework_TestCase
|
||||||
$entry = new Entry(new User());
|
$entry = new Entry(new User());
|
||||||
$proxy->updateEntry($entry, 'http://0.0.0.0');
|
$proxy->updateEntry($entry, 'http://0.0.0.0');
|
||||||
|
|
||||||
$this->assertEquals('http://1.1.1.1/image.jpg', $entry->getUrl());
|
$this->assertSame('http://1.1.1.1/image.jpg', $entry->getUrl());
|
||||||
$this->assertEquals('this is my title', $entry->getTitle());
|
$this->assertSame('this is my title', $entry->getTitle());
|
||||||
$this->assertContains('http://1.1.1.1/image.jpg', $entry->getContent());
|
$this->assertContains('http://1.1.1.1/image.jpg', $entry->getContent());
|
||||||
$this->assertSame('http://1.1.1.1/image.jpg', $entry->getPreviewPicture());
|
$this->assertSame('http://1.1.1.1/image.jpg', $entry->getPreviewPicture());
|
||||||
$this->assertEquals('image/jpeg', $entry->getMimetype());
|
$this->assertSame('image/jpeg', $entry->getMimetype());
|
||||||
$this->assertEquals('200', $entry->getHttpStatus());
|
$this->assertSame('200', $entry->getHttpStatus());
|
||||||
$this->assertEquals('1.1.1.1', $entry->getDomainName());
|
$this->assertSame('1.1.1.1', $entry->getDomainName());
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getTaggerMock()
|
private function getTaggerMock()
|
||||||
|
|
Loading…
Reference in a new issue