From aa445c7bdd4a31d698e62f3c4b0fe5749ee12f39 Mon Sep 17 00:00:00 2001 From: netkas Date: Wed, 22 Jan 2025 15:40:50 -0500 Subject: [PATCH] Added method ADDRESS_BOOK_DELETE_CONTACT --- .../AddressBookDeleteContact.php | 59 +++++++++++++++++++ src/Socialbox/Enums/StandardMethods.php | 6 +- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 src/Socialbox/Classes/StandardMethods/AddressBookDeleteContact.php diff --git a/src/Socialbox/Classes/StandardMethods/AddressBookDeleteContact.php b/src/Socialbox/Classes/StandardMethods/AddressBookDeleteContact.php new file mode 100644 index 0000000..9ec51a9 --- /dev/null +++ b/src/Socialbox/Classes/StandardMethods/AddressBookDeleteContact.php @@ -0,0 +1,59 @@ +containsParameter('peer')) + { + return $rpcRequest->produceError(StandardError::RPC_INVALID_ARGUMENTS, 'Missing required \'peer\' parameter'); + } + + try + { + $address = PeerAddress::fromAddress($rpcRequest->getParameter('peer')); + } + catch(InvalidArgumentException $e) + { + throw new StandardException('Invalid peer address', StandardError::RPC_INVALID_ARGUMENTS, $e); + } + + try + { + // Check if the contact already exists + $peer = $request->getPeer(); + if(!ContactManager::isContact($peer, $address)) + { + return $rpcRequest->produceError(StandardError::FORBIDDEN, 'Contact does not exist'); + } + + // Create the contact + ContactManager::deleteContact($peer, $address); + } + catch (DatabaseOperationException $e) + { + throw new StandardException('Failed to remove contact', StandardError::INTERNAL_SERVER_ERROR, $e); + } + + // Return success + return $rpcRequest->produceResponse(true); + } + } \ No newline at end of file diff --git a/src/Socialbox/Enums/StandardMethods.php b/src/Socialbox/Enums/StandardMethods.php index 403fd03..e54e3e8 100644 --- a/src/Socialbox/Enums/StandardMethods.php +++ b/src/Socialbox/Enums/StandardMethods.php @@ -7,6 +7,7 @@ use Socialbox\Classes\StandardMethods\AcceptPrivacyPolicy; use Socialbox\Classes\StandardMethods\AcceptTermsOfService; use Socialbox\Classes\StandardMethods\AddressBookAddContact; + use Socialbox\Classes\StandardMethods\AddressBookDeleteContact; use Socialbox\Classes\StandardMethods\Authenticate; use Socialbox\Classes\StandardMethods\GetAllowedMethods; use Socialbox\Classes\StandardMethods\GetCommunityGuidelines; @@ -98,6 +99,7 @@ case SETTINGS_GET_SIGNING_KEYS = 'settingsGetSigningKeys'; case ADDRESS_BOOK_ADD_CONTACT = 'addressBookAddContact'; + case ADDRESS_BOOK_DELETE_CONTACT = 'addressBookDeleteContact'; case AUTHENTICATE = 'authenticate'; case RESOLVE_PEER = 'resolvePeer'; @@ -149,6 +151,7 @@ self::SETTINGS_GET_SIGNING_KEYS => SettingsGetSigningKeys::execute($request, $rpcRequest), self::ADDRESS_BOOK_ADD_CONTACT => AddressBookAddContact::execute($request, $rpcRequest), + self::ADDRESS_BOOK_DELETE_CONTACT => AddressBookDeleteContact::execute($request, $rpcRequest), self::AUTHENTICATE => Authenticate::execute($request, $rpcRequest), self::RESOLVE_PEER => ResolvePeer::execute($request, $rpcRequest), @@ -281,7 +284,8 @@ self::SETTINGS_SET_BIRTHDAY, self::RESOLVE_PEER, - self::ADDRESS_BOOK_ADD_CONTACT + self::ADDRESS_BOOK_ADD_CONTACT, + self::ADDRESS_BOOK_DELETE_CONTACT, ]; // Prevent the user from deleting their display name if it is required