From b47189921f035c87fe33bb304e2cc2835de82ede Mon Sep 17 00:00:00 2001 From: Joseph Date: Sat, 7 Sep 2019 16:37:30 +0000 Subject: [PATCH] [CuriousCatBridge] Add new bridge (#1216) * Create CuriousCatBridge.php --- bridges/CuriousCatBridge.php | 109 +++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 bridges/CuriousCatBridge.php diff --git a/bridges/CuriousCatBridge.php b/bridges/CuriousCatBridge.php new file mode 100644 index 00000000..0ebc8bd6 --- /dev/null +++ b/bridges/CuriousCatBridge.php @@ -0,0 +1,109 @@ + array( + 'name' => 'Username', + 'type' => 'text', + 'required' => true, + 'exampleValue' => 'koethekoethe', + ) + )); + + const CACHE_TIMEOUT = 3600; + + public function collectData() { + + $url = self::URI . '/api/v2/profile?username=' . urlencode($this->getInput('username')); + + $apiJson = getContents($url) + or returnServerError('Could not request: ' . $url); + + $apiData = json_decode($apiJson, true); + + foreach($apiData['posts'] as $post) { + $item = array(); + + $item['author'] = 'Anonymous'; + + if ($post['senderData']['id'] !== false) { + $item['author'] = $post['senderData']['username']; + } + + $item['uri'] = $this->getURI() . '/post/' . $post['id']; + $item['title'] = $this->ellipsisTitle($post['comment']); + + $item['content'] = $this->processContent($post); + $item['timestamp'] = $post['timestamp']; + + $this->items[] = $item; + } + } + + public function getURI() { + + if (!is_null($this->getInput('username'))) { + return self::URI . '/' . $this->getInput('username'); + } + + return parent::getURI(); + } + + public function getName() { + + if (!is_null($this->getInput('username'))) { + return $this->getInput('username') . ' - Curious Cat'; + } + + return parent::getName(); + } + + private function processContent($post) { + + $author = 'Anonymous'; + + if ($post['senderData']['id'] !== false) { + $authorUrl = self::URI . '/' . $post['senderData']['username']; + + $author = <<{$post['senderData']['username']} +EOD; + } + + $question = $this->formatUrls($post['comment']); + $answer = $this->formatUrls($post['reply']); + + $content = <<{$author} asked:

+
{$question}

+

{$post['addresseeData']['username']} answered:

+
{$answer}
+EOD; + + return $content; + } + + private function ellipsisTitle($text) { + $length = 150; + + if (strlen($text) > $length) { + $text = explode('
', wordwrap($text, $length, '
')); + return $text[0] . '...'; + } + + return $text; + } + + private function formatUrls($content) { + + return preg_replace( + '/(http[s]{0,1}\:\/\/[a-zA-Z0-9.\/\?\&=\-_]{4,})/ims', + '$1 ', + $content + ); + + } +}