mirror of
https://github.com/moparisthebest/wallabag
synced 2024-12-18 13:42:17 -05:00
Fetch content using full-text-rss
This commit is contained in:
parent
efa4cca537
commit
6fe342d0e9
11
app/app.php
11
app/app.php
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
use Knp\Provider\ConsoleServiceProvider;
|
use Knp\Provider\ConsoleServiceProvider;
|
||||||
use Poche\Api\EntryApi;
|
use Poche\Api\EntryApi;
|
||||||
|
use Poche\Api\ContentFullTextRssApi;
|
||||||
use Poche\Repository\EntryRepository;
|
use Poche\Repository\EntryRepository;
|
||||||
|
|
||||||
use Silex\Provider\FormServiceProvider;
|
use Silex\Provider\FormServiceProvider;
|
||||||
@ -38,6 +39,12 @@ $app['entry_repository'] = $app->share(function ($app) {
|
|||||||
return new EntryRepository($app['db']);
|
return new EntryRepository($app['db']);
|
||||||
});
|
});
|
||||||
|
|
||||||
$app['entry_api'] = $app->share(function ($app) {
|
$app['content_api'] = $app->share(function ($app) {
|
||||||
return new EntryApi($app['entry_repository']);
|
return new ContentFullTextRssApi();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$app['entry_api'] = $app->share(function ($app) {
|
||||||
|
return new EntryApi($app['entry_repository'], $app['content_api']);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
17
src/Poche/Api/ContentFullTextRssApi.php
Normal file
17
src/Poche/Api/ContentFullTextRssApi.php
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Poche\Api;
|
||||||
|
|
||||||
|
use Poche\Util\Url;
|
||||||
|
|
||||||
|
class ContentFullTextRssApi
|
||||||
|
{
|
||||||
|
|
||||||
|
public function fetchUrl($url) {
|
||||||
|
|
||||||
|
$url = new Url($url);
|
||||||
|
|
||||||
|
$content = $url->extract();
|
||||||
|
return array('title' => $content['title'], 'content' => $content['body']);
|
||||||
|
}
|
||||||
|
}
|
@ -6,8 +6,9 @@ class EntryApi
|
|||||||
{
|
{
|
||||||
private $entryRepository;
|
private $entryRepository;
|
||||||
|
|
||||||
public function __construct($entryRepository) {
|
public function __construct($entryRepository, $contentApi) {
|
||||||
$this->entryRepository = $entryRepository;
|
$this->entryRepository = $entryRepository;
|
||||||
|
$this->contentApi = $contentApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getEntries() {
|
public function getEntries() {
|
||||||
@ -18,8 +19,12 @@ class EntryApi
|
|||||||
|
|
||||||
//TODO: Fetch all what we need, fill the title, content …
|
//TODO: Fetch all what we need, fill the title, content …
|
||||||
|
|
||||||
|
$content = $this->contentApi->fetchUrl($url);
|
||||||
|
|
||||||
$entry = array(
|
$entry = array(
|
||||||
'url' => $url
|
'url' => $url,
|
||||||
|
'title' => $content['title'],
|
||||||
|
'content' => $content['content']
|
||||||
);
|
);
|
||||||
return $entry;
|
return $entry;
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ class Url
|
|||||||
|
|
||||||
function __construct($url)
|
function __construct($url)
|
||||||
{
|
{
|
||||||
$this->url = base64_decode($url);
|
$this->url = $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUrl() {
|
public function getUrl() {
|
||||||
@ -136,6 +136,7 @@ class Url
|
|||||||
// look for full mime type (e.g. image/jpeg) or just type (e.g. image)
|
// look for full mime type (e.g. image/jpeg) or just type (e.g. image)
|
||||||
$match[1] = strtolower(trim($match[1]));
|
$match[1] = strtolower(trim($match[1]));
|
||||||
$match[2] = strtolower(trim($match[2]));
|
$match[2] = strtolower(trim($match[2]));
|
||||||
|
|
||||||
foreach (array($match[1], $match[2]) as $_mime) {
|
foreach (array($match[1], $match[2]) as $_mime) {
|
||||||
if (isset($this->content_type_exc[$_mime])) {
|
if (isset($this->content_type_exc[$_mime])) {
|
||||||
$type = $match[1];
|
$type = $match[1];
|
||||||
|
@ -59,7 +59,7 @@ class ApiTest extends PocheWebTestCase
|
|||||||
array(),
|
array(),
|
||||||
array(),
|
array(),
|
||||||
array('CONTENT_TYPE' => 'application/json'),
|
array('CONTENT_TYPE' => 'application/json'),
|
||||||
'{"url":"http:\/\/deboutlesgens.com\/blog\/le-courage-de-vivre-consciemment\/"}'
|
'{"url":"http:\/\/perdu.com"}'
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals($client->getResponse()->getStatusCode(), 201);
|
$this->assertEquals($client->getResponse()->getStatusCode(), 201);
|
||||||
@ -72,7 +72,8 @@ class ApiTest extends PocheWebTestCase
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals($client->getResponse()->getContent(),'{"url":"http:\/\/deboutlesgens.com\/blog\/le-courage-de-vivre-consciemment\/"}');
|
$this->assertEquals($client->getResponse()->getContent(),'{"url":"http:\/\/perdu.com","title":"Vous Etes Perdu ?","content":"[unable to retrieve full-text content]"}');
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user