diff --git a/bridges/ElloBridge.php b/bridges/ElloBridge.php new file mode 100644 index 00000000..28aeb5f8 --- /dev/null +++ b/bridges/ElloBridge.php @@ -0,0 +1,146 @@ + array( + 'u' => array( + 'name' => 'Username', + 'required' => true, + 'title' => 'Username' + ) + ), + 'Search' => array( + 's' => array( + 'name' => 'Search', + 'required' => true, + 'title' => 'Search' + ) + ) + ); + + public function collectData() { + + $header = array( + 'Authorization: Bearer ' . $this->getAPIKey() + ); + + if(!empty($this->getInput('u'))) { + $postData = getContents(self::URI . 'api/v2/users/~' . $this->getInput('u') . '/posts', $header) or + returnServerError('Unable to query Ello API.'); + } else { + $postData = getContents(self::URI . 'api/v2/posts?terms=' . $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'] = $this->findText($post->summary); + $item['content'] = $this->getPostContent($post->body); + $item['enclosures'] = $this->getEnclosures($post, $postData); + $content = $post->body; + + $this->items[] = $item; + $count += 1; + + } + + } + + public function findText($path) { + + foreach($path as $summaryElement) { + + if($summaryElement->kind == 'text') { + return $summaryElement->data; + } + + } + + return ''; + + } + + public 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 .= '' . $alt . ''; + } + + } + + return $content; + + } + + public 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; + + } + + public function getUsername($post, $postData) { + + foreach($postData->linked->users as $user) { + if($user->id == $post->links->author->id) { + return $user->username; + } + } + + } + + public function getAPIKey() { + $cache = Cache::create('FileCache'); + $cache->setPath(CACHE_DIR); + $cache->setParameters(['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(); + } + +}