forked from grumpydevelop/federator

- also integrated better support for newContent types - Integrated saving posts to database (posts gotten via outbox request as well as posts received in the NewContent endpoint) - proper support for handling comments - support for likes/dislikes - support for requesting followers / following endpoints - better inbox support database needs changes, don't forget to run migration
137 lines
3.4 KiB
PHP
137 lines
3.4 KiB
PHP
<?php
|
|
/**
|
|
* SPDX-FileCopyrightText: 2024 Sascha Nitsch (grumpydeveloper) https://contentnation.net/@grumpydevelop
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
* @author Author: Sascha Nitsch (grumpydeveloper)
|
|
**/
|
|
|
|
namespace Federator\Connector;
|
|
|
|
/**
|
|
* dummy connector that always return the same permission
|
|
*/
|
|
class DummyConnector implements Connector
|
|
{
|
|
/**
|
|
* constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* get followers of given user
|
|
*
|
|
* @param string $userId user id @unused-param
|
|
* @return \Federator\Data\FedUser[]|false
|
|
*/
|
|
public function getRemoteFollowersOfUser($userId)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* get following of given user
|
|
*
|
|
* @param string $id user id @unused-param
|
|
|
|
* @return \Federator\Data\FedUser[]|false
|
|
*/
|
|
public function getRemoteFollowingForUser($id)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* get posts by given user
|
|
*
|
|
* @param string $id user id @unused-param
|
|
* @param string $min min date @unused-param
|
|
* @param string $max max date @unused-param
|
|
* @return \Federator\Data\ActivityPub\Common\Activity[]|false
|
|
*/
|
|
public function getRemotePostsByUser($id, $min, $max)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* get statistics from remote system
|
|
*
|
|
* @return \Federator\Data\Stats|false
|
|
*/
|
|
public function getRemoteStats()
|
|
{
|
|
$stats = new \Federator\Data\Stats();
|
|
$stats->userCount = 9;
|
|
$stats->postCount = 11;
|
|
$stats->commentCount = 13;
|
|
return $stats;
|
|
}
|
|
|
|
/**
|
|
* Convert jsonData to Activity format
|
|
*
|
|
* @param array<string, mixed> $jsonData the json data from our platfrom @unused-param
|
|
* @return \Federator\Data\ActivityPub\Common\Activity|false
|
|
*/
|
|
public function jsonToActivity(array $jsonData) {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* get remote user by name
|
|
* @param string $_name user or profile name
|
|
* @return \Federator\Data\User | false
|
|
*/
|
|
public function getRemoteUserByName(string $_name)
|
|
{
|
|
// validate $_session and $user
|
|
$user = new \Federator\Data\User();
|
|
$user->externalid = $_name;
|
|
return $user;
|
|
}
|
|
|
|
/**
|
|
* get remote user by given session
|
|
* @param string $_session session id
|
|
* @param string $_user user or profile name
|
|
* @return \Federator\Data\User | false
|
|
*/
|
|
public function getRemoteUserBySession(string $_session, string $_user)
|
|
{
|
|
// validate $_session and $user
|
|
$user = new \Federator\Data\User();
|
|
$user->externalid = $_user;
|
|
$user->permissions = ['publish'];
|
|
$user->session = $_session;
|
|
return $user;
|
|
}
|
|
|
|
/**
|
|
* check if the headers include a valid signature
|
|
*
|
|
* @param string[] $headers the headers @unused-param
|
|
* @throws \Federator\Exceptions\PermissionDenied
|
|
* @return string|\Federator\Exceptions\PermissionDenied
|
|
*/
|
|
public function checkSignature($headers)
|
|
{
|
|
return new \Federator\Exceptions\PermissionDenied("Dummy connector: no signature check");
|
|
}
|
|
}
|
|
|
|
namespace Federator;
|
|
|
|
/**
|
|
* Function to initialize plugin
|
|
*
|
|
* @param \Federator\Main $main main instance
|
|
* @return void
|
|
*/
|
|
function dummy_load($main)
|
|
{
|
|
$dummy = new Connector\DummyConnector();
|
|
# echo "dummyconnector::dummy_load Loaded new connector, adding to main\n"; // TODO change to proper log
|
|
$main->setConnector($dummy);
|
|
}
|