From 30cb37cda5e347bca8634c8222d90ef136a3b833 Mon Sep 17 00:00:00 2001
From: Pierre Rudloff <contact@rudloff.pro>
Date: Tue, 19 Dec 2017 14:20:32 +0100
Subject: [PATCH] Implement saved_searches/list API

---
 doc/api.md      |  7 ++++++-
 include/api.php | 30 ++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/doc/api.md b/doc/api.md
index d756e81a40..3a2740764a 100644
--- a/doc/api.md
+++ b/doc/api.md
@@ -615,6 +615,12 @@ This is an alias for `search`.
 
 ---
 
+### saved_searches/list (*; AUTH)
+
+This call does not have any parameter.
+
+---
+
 ### users/search (*)
 
 #### Parameters
@@ -1234,7 +1240,6 @@ The following API calls from the Twitter API are not implemented in either Frien
 * lists/subscriptions
 * lists/members/destroy_all
 * lists/ownerships
-* saved_searches/list
 * saved_searches/show/:id
 * saved_searches/create
 * saved_searches/destroy/:id
diff --git a/include/api.php b/include/api.php
index a7853ed32b..659f23b58c 100644
--- a/include/api.php
+++ b/include/api.php
@@ -5490,6 +5490,36 @@ function api_friendica_profile_show($type)
 }
 api_register_func('api/friendica/profile/show', 'api_friendica_profile_show', true, API_METHOD_GET);
 
+/**
+ * Returns a list of saved searches.
+ *
+ * @see https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/get-saved_searches-list
+ *
+ * @param  string $type Return format: json or xml
+ *
+ * @return string|array
+ * @throws UnauthorizedException
+ */
+function api_saved_searches_list($type)
+{
+	$terms = dba::select('search', array('id', 'term'), array('uid' => local_user()));
+
+	$result = array();
+	while ($term = $terms->fetch()) {
+		$result[] = array(
+			'name' => $term['term'],
+			'query' => $term['term'],
+			'id_str' => $term['id'],
+			'id' => intval($term['id'])
+		);
+	}
+
+	return api_format_data("terms", $type, array('terms' => $result));
+}
+
+/// @TODO move to top of file or somwhere better
+api_register_func('api/saved_searches/list', 'api_saved_searches_list', true);
+
 /*
 @TODO Maybe open to implement?
 To.Do:
-- 
2.39.5