aboutsummaryrefslogtreecommitdiff
path: root/bridges/ElloBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/ElloBridge.php')
-rw-r--r--bridges/ElloBridge.php285
1 files changed, 138 insertions, 147 deletions
diff --git a/bridges/ElloBridge.php b/bridges/ElloBridge.php
index e9b2980e..b0c7b09f 100644
--- a/bridges/ElloBridge.php
+++ b/bridges/ElloBridge.php
@@ -1,150 +1,141 @@
<?php
-class ElloBridge extends BridgeAbstract {
-
- const MAINTAINER = 'teromene';
- const NAME = 'Ello Bridge';
- const URI = 'https://ello.co/';
- const CACHE_TIMEOUT = 4800; //2hours
- const DESCRIPTION = 'Returns the newest posts for Ello';
-
- const PARAMETERS = array(
- 'By User' => array(
- 'u' => array(
- 'name' => 'Username',
- 'required' => true,
- 'exampleValue' => 'zteph',
- 'title' => 'Username'
- )
- ),
- 'Search' => array(
- 's' => array(
- 'name' => 'Search',
- 'required' => true,
- 'exampleValue' => 'bird',
- 'title' => 'Search'
- )
- )
- );
- public function collectData() {
-
- $header = array(
- 'Authorization: Bearer ' . $this->getAPIKey()
- );
-
- if(!empty($this->getInput('u'))) {
- $postData = getContents(self::URI . 'api/v2/users/~' . urlencode($this->getInput('u')) . '/posts', $header) or
- returnServerError('Unable to query Ello API.');
- } else {
- $postData = getContents(self::URI . 'api/v2/posts?terms=' . urlencode($this->getInput('s')), $header) or
- returnServerError('Unable to query Ello API.');
- }
-
- $postData = json_decode($postData);
- $count = 0;
- foreach($postData->posts as $post) {
-
- $item = array();
- $item['author'] = $this->getUsername($post, $postData);
- $item['timestamp'] = strtotime($post->created_at);
- $item['title'] = strip_tags($this->findText($post->summary));
- $item['content'] = $this->getPostContent($post->body);
- $item['enclosures'] = $this->getEnclosures($post, $postData);
- $item['uri'] = self::URI . $item['author'] . '/post/' . $post->token;
- $content = $post->body;
-
- $this->items[] = $item;
- $count += 1;
-
- }
-
- }
-
- private function findText($path) {
-
- foreach($path as $summaryElement) {
-
- if($summaryElement->kind == 'text') {
- return $summaryElement->data;
- }
-
- }
-
- return '';
-
- }
-
- private function getPostContent($path) {
-
- $content = '';
- foreach($path as $summaryElement) {
-
- if($summaryElement->kind == 'text') {
- $content .= $summaryElement->data;
- } elseif ($summaryElement->kind == 'image') {
- $alt = '';
- if(property_exists($summaryElement->data, 'alt')) {
- $alt = $summaryElement->data->alt;
- }
- $content .= '<img src="' . $summaryElement->data->url . '" alt="' . $alt . '" />';
- }
-
- }
-
- return $content;
-
- }
-
- private function getEnclosures($post, $postData) {
-
- $assets = array();
- foreach($post->links->assets as $asset) {
- foreach($postData->linked->assets as $assetLink) {
- if($asset == $assetLink->id) {
- $assets[] = $assetLink->attachment->original->url;
- break;
- }
- }
- }
-
- return $assets;
-
- }
-
- private function getUsername($post, $postData) {
-
- foreach($postData->linked->users as $user) {
- if($user->id == $post->links->author->id) {
- return $user->username;
- }
- }
-
- }
-
- private function getAPIKey() {
- $cacheFac = new CacheFactory();
-
- $cache = $cacheFac->create(Configuration::getConfig('cache', 'type'));
- $cache->setScope(get_called_class());
- $cache->setKey(array('key'));
- $key = $cache->loadData();
-
- if($key == null) {
- $keyInfo = getContents(self::URI . 'api/webapp-token') or
- returnServerError('Unable to get token.');
- $key = json_decode($keyInfo)->token->access_token;
- $cache->saveData($key);
- }
-
- return $key;
-
- }
-
- public function getName(){
- if(!is_null($this->getInput('u'))) {
- return $this->getInput('u') . ' - Ello Bridge';
- }
-
- return parent::getName();
- }
+class ElloBridge extends BridgeAbstract
+{
+ const MAINTAINER = 'teromene';
+ const NAME = 'Ello Bridge';
+ const URI = 'https://ello.co/';
+ const CACHE_TIMEOUT = 4800; //2hours
+ const DESCRIPTION = 'Returns the newest posts for Ello';
+
+ const PARAMETERS = [
+ 'By User' => [
+ 'u' => [
+ 'name' => 'Username',
+ 'required' => true,
+ 'exampleValue' => 'zteph',
+ 'title' => 'Username'
+ ]
+ ],
+ 'Search' => [
+ 's' => [
+ 'name' => 'Search',
+ 'required' => true,
+ 'exampleValue' => 'bird',
+ 'title' => 'Search'
+ ]
+ ]
+ ];
+
+ public function collectData()
+ {
+ $header = [
+ 'Authorization: Bearer ' . $this->getAPIKey()
+ ];
+
+ if (!empty($this->getInput('u'))) {
+ $postData = getContents(self::URI . 'api/v2/users/~' . urlencode($this->getInput('u')) . '/posts', $header) or
+ returnServerError('Unable to query Ello API.');
+ } else {
+ $postData = getContents(self::URI . 'api/v2/posts?terms=' . urlencode($this->getInput('s')), $header) or
+ returnServerError('Unable to query Ello API.');
+ }
+
+ $postData = json_decode($postData);
+ $count = 0;
+ foreach ($postData->posts as $post) {
+ $item = [];
+ $item['author'] = $this->getUsername($post, $postData);
+ $item['timestamp'] = strtotime($post->created_at);
+ $item['title'] = strip_tags($this->findText($post->summary));
+ $item['content'] = $this->getPostContent($post->body);
+ $item['enclosures'] = $this->getEnclosures($post, $postData);
+ $item['uri'] = self::URI . $item['author'] . '/post/' . $post->token;
+ $content = $post->body;
+
+ $this->items[] = $item;
+ $count += 1;
+ }
+ }
+
+ private function findText($path)
+ {
+ foreach ($path as $summaryElement) {
+ if ($summaryElement->kind == 'text') {
+ return $summaryElement->data;
+ }
+ }
+
+ return '';
+ }
+
+ private function getPostContent($path)
+ {
+ $content = '';
+ foreach ($path as $summaryElement) {
+ if ($summaryElement->kind == 'text') {
+ $content .= $summaryElement->data;
+ } elseif ($summaryElement->kind == 'image') {
+ $alt = '';
+ if (property_exists($summaryElement->data, 'alt')) {
+ $alt = $summaryElement->data->alt;
+ }
+ $content .= '<img src="' . $summaryElement->data->url . '" alt="' . $alt . '" />';
+ }
+ }
+
+ return $content;
+ }
+
+ private function getEnclosures($post, $postData)
+ {
+ $assets = [];
+ foreach ($post->links->assets as $asset) {
+ foreach ($postData->linked->assets as $assetLink) {
+ if ($asset == $assetLink->id) {
+ $assets[] = $assetLink->attachment->original->url;
+ break;
+ }
+ }
+ }
+
+ return $assets;
+ }
+
+ private function getUsername($post, $postData)
+ {
+ foreach ($postData->linked->users as $user) {
+ if ($user->id == $post->links->author->id) {
+ return $user->username;
+ }
+ }
+ }
+
+ private function getAPIKey()
+ {
+ $cacheFac = new CacheFactory();
+
+ $cache = $cacheFac->create(Configuration::getConfig('cache', 'type'));
+ $cache->setScope(get_called_class());
+ $cache->setKey(['key']);
+ $key = $cache->loadData();
+
+ if ($key == null) {
+ $keyInfo = getContents(self::URI . 'api/webapp-token') or
+ returnServerError('Unable to get token.');
+ $key = json_decode($keyInfo)->token->access_token;
+ $cache->saveData($key);
+ }
+
+ return $key;
+ }
+
+ public function getName()
+ {
+ if (!is_null($this->getInput('u'))) {
+ return $this->getInput('u') . ' - Ello Bridge';
+ }
+
+ return parent::getName();
+ }
}