From 8fd738f550049f72d4c9af7f9a4273d45065a523 Mon Sep 17 00:00:00 2001
From: Michael <heluecht@pirati.ca>
Date: Thu, 18 Nov 2021 22:20:19 +0000
Subject: [PATCH] Removed "api_get_user"

---
 include/api.php          | 111 +++------------------------------------
 src/Module/BaseApi.php   |  12 +++++
 tests/legacy/ApiTest.php |  52 ------------------
 3 files changed, 20 insertions(+), 155 deletions(-)

diff --git a/include/api.php b/include/api.php
index 929900f49f..ddb224d211 100644
--- a/include/api.php
+++ b/include/api.php
@@ -133,24 +133,6 @@ function api_register_func($path, $func, $auth = false, $method = API_METHOD_ANY
 	];
 }
 
-/**
- * Check HTTP method of called API
- *
- * API endpoints can define which HTTP method to accept when called.
- * This function check the current HTTP method agains endpoint
- * registered method.
- *
- * @param string $method Required methods, uppercase, separated by comma
- * @return bool
- */
-function api_check_method($method)
-{
-	if ($method == "*") {
-		return true;
-	}
-	return (stripos($method, $_SERVER['REQUEST_METHOD'] ?? 'GET') !== false);
-}
-
 /**
  * Main API entry point
  *
@@ -186,10 +168,6 @@ function api_call(App $a, App\Arguments $args = null)
 	try {
 		foreach ($API as $p => $info) {
 			if (strpos($args->getCommand(), $p) === 0) {
-				if (!api_check_method($info['method'])) {
-					throw new MethodNotAllowedException();
-				}
-
 				if (!empty($info['auth']) && BaseApi::getCurrentUserID() === false) {
 					BasicAuth::getCurrentUserID(true);
 					Logger::info(API_LOG_PREFIX . 'nickname {nickname}', ['module' => 'api', 'action' => 'call', 'nickname' => $a->getLoggedInUserNickname()]);
@@ -304,85 +282,6 @@ function api_unique_id_to_nurl($id)
 	}
 }
 
-/**
- * Get user info array.
- *
- * @param App        $a          App
- * @param int|string $contact_id Contact ID or URL
- * @return array|bool
- * @throws BadRequestException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- */
-function api_get_user($contact_id = null)
-{
-	$user = null;
-	$extra_query = "";
-	$url = "";
-
-	Logger::info(API_LOG_PREFIX . 'Fetching data for user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $contact_id]);
-
-	// Searching for contact URL
-	if (intval($contact_id) == 0) {
-		$user = Strings::normaliseLink($contact_id);
-		$url = $user;
-		$extra_query = "AND `contact`.`nurl` = ? ";
-		if (!empty(BaseApi::getCurrentUserID())) {
-			$extra_query .= "AND `contact`.`uid`=" . intval(BaseApi::getCurrentUserID());
-		}
-	}
-
-	// Searching for contact id with uid = 0
-	if (intval($contact_id) != 0) {
-		$user = api_unique_id_to_nurl(intval($contact_id));
-
-		if ($user == "") {
-			throw new BadRequestException("User ID ".$contact_id." not found.");
-		}
-
-		$url = $user;
-		$extra_query = "AND `contact`.`nurl` = ? ";
-		if (!empty(BaseApi::getCurrentUserID())) {
-			$extra_query .= "AND `contact`.`uid`=" . intval(BaseApi::getCurrentUserID());
-		}
-	}
-
-	Logger::info(API_LOG_PREFIX . 'getting user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user]);
-
-	if (!$user) {
-		return false;
-	}
-
-	Logger::info(API_LOG_PREFIX . 'found user {user}', ['module' => 'api', 'action' => 'get_user', 'user' => $user, 'extra_query' => $extra_query]);
-
-	// user info
-	$uinfo = DBA::toArray(DBA::p(
-		"SELECT *, `contact`.`id` AS `cid` FROM `contact`
-			WHERE 1
-		$extra_query",
-		$user
-	));
-
-	if (DBA::isResult($uinfo)) {
-		// Selecting the id by priority, friendica first
-		api_best_nickname($uinfo);
-		return DI::twitterUser()->createFromContactId($uinfo[0]['cid'], $uinfo[0]['uid'])->toArray();
-	}
-
-	if ($url == "") {
-		throw new BadRequestException("User not found.");
-	}
-
-	$cid = Contact::getIdForURL($url, 0, false);
-
-	if (!empty($cid)) {
-		return DI::twitterUser()->createFromContactId($cid, 0)->toArray();
-	} else {
-		throw new BadRequestException("User ".$url." not found.");
-	}
-}
-
 /**
  * return api-formatted array for item's author and owner
  *
@@ -981,7 +880,10 @@ function api_users_lookup($type)
 	if (!empty($_REQUEST['user_id'])) {
 		foreach (explode(',', $_REQUEST['user_id']) as $id) {
 			if (!empty($id)) {
-				$users[] = api_get_user($id);
+				$cid = BaseApi::getContactIDForSearchterm($id);
+				if (!empty($cid)) {
+					$users[] = DI::twitterUser()->createFromContactId($cid, BaseApi::getCurrentUserID())->toArray();
+				}
 			}
 		}
 	}
@@ -2940,7 +2842,10 @@ function api_direct_messages_new($type)
 			$recipient = DI::twitterUser()->createFromContactId($contacts[0]['id'], $uid)->toArray();
 		}
 	} else {
-		$recipient = api_get_user($_POST['user_id']);
+		$cid = BaseApi::getContactIDForSearchterm($_POST['user_id']);
+		if (!empty($cid)) {
+			$recipient = DI::twitterUser()->createFromContactId($cid, $uid)->toArray();
+		}
 	}
 
 	if (empty($recipient)) {
diff --git a/src/Module/BaseApi.php b/src/Module/BaseApi.php
index a34f25f938..2e8e1d15b8 100644
--- a/src/Module/BaseApi.php
+++ b/src/Module/BaseApi.php
@@ -25,6 +25,7 @@ use Friendica\BaseModule;
 use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\DI;
+use Friendica\Model\Contact;
 use Friendica\Model\Post;
 use Friendica\Network\HTTPException;
 use Friendica\Security\BasicAuth;
@@ -290,4 +291,15 @@ class BaseApi extends BaseModule
 			}
 		}
 	}
+
+	public static function getContactIDForSearchterm($searchterm)
+	{
+		if (intval($searchterm) == 0) {
+			$cid = Contact::getIdForURL($searchterm, 0, false);
+		} else {
+			$cid = intval($searchterm);
+		}
+
+		return $cid;
+	}
 }
diff --git a/tests/legacy/ApiTest.php b/tests/legacy/ApiTest.php
index f4ac58d044..13509bf343 100644
--- a/tests/legacy/ApiTest.php
+++ b/tests/legacy/ApiTest.php
@@ -378,37 +378,6 @@ class ApiTest extends FixtureTest
 		BasicAuth::getCurrentUserID(true);
 	}
 
-	/**
-	 * Test the api_check_method() function.
-	 *
-	 * @return void
-	 */
-	public function testApiCheckMethod()
-	{
-		self::assertFalse(api_check_method('method'));
-	}
-
-	/**
-	 * Test the api_check_method() function with a correct method.
-	 *
-	 * @return void
-	 */
-	public function testApiCheckMethodWithCorrectMethod()
-	{
-		$_SERVER['REQUEST_METHOD'] = 'method';
-		self::assertTrue(api_check_method('method'));
-	}
-
-	/**
-	 * Test the api_check_method() function with a wildcard.
-	 *
-	 * @return void
-	 */
-	public function testApiCheckMethodWithWildcard()
-	{
-		self::assertTrue(api_check_method('*'));
-	}
-
 	/**
 	 * Test the api_call() function.
 	 *
@@ -784,27 +753,6 @@ class ApiTest extends FixtureTest
 		// self::assertSelfUser(api_get_user());
 	}
 
-	/**
-	 * Test the api_get_user() function with a valid user.
-	 *
-	 * @return void
-	 */
-	public function testApiGetUserWithCorrectUser()
-	{
-		self::assertOtherUser(api_get_user($this->otherUser['id']));
-	}
-
-	/**
-	 * Test the api_get_user() function with a wrong user ID.
-	 *
-	 * @return void
-	 */
-	public function testApiGetUserWithWrongUser()
-	{
-		$this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
-		self::assertOtherUser(api_get_user($this->wrongUserId));
-	}
-
 	/**
 	 * Test the api_get_user() function with a 0 user ID.
 	 *
-- 
2.39.5