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
+ );
+
+ }
+}