Nextcloud-App/lib/Service/MatrixListenerService.php

67 lines
1.6 KiB
PHP

<?php
namespace OCA\UPschooling\Service;
use Aryess\PhpMatrixSdk\Exceptions\MatrixException;
use Aryess\PhpMatrixSdk\Exceptions\MatrixHttpLibException;
use Aryess\PhpMatrixSdk\Exceptions\MatrixRequestException;
use Aryess\PhpMatrixSdk\Exceptions\ValidationException;
use Aryess\PhpMatrixSdk\MatrixClient;
use Psr\Log\LoggerInterface;
/**
*
*/
class MatrixListenerService {
/** @var LoggerInterface */
private $logger;
/** @var MatrixClient */
private $client;
/** @var string */
private $registrationSecret = "oyYh_iEJ7Aim.iB+ye.Xk;Gl3iHFab5*8K,zv~IulT85P=c-38";
/**
* @param LoggerInterface $logger
* @throws MatrixException
* @throws MatrixHttpLibException
* @throws MatrixRequestException
* @throws ValidationException
*/
public function __construct(LoggerInterface $logger) {
$this->logger = $logger;
$serverUrl = "http://synapse:8008";
$user = "upschooling";
$this->client = new MatrixClient($serverUrl);
$this->client->login($user, "secret", true);
$this->logger->debug("Logged in as " . $user . " on server " . $serverUrl);
}
/**
* Handle invites
*
* @throws MatrixException
*/
public function handleInvites(int $roomId, array $someState) {
$this->client->joinRoom($roomId);
}
public static function test() {
var_dump("Test");
}
public function listen() {
$syncResponse = $this->client->api()->sync();
foreach (array_get($syncResponse, 'rooms.invite', []) as $roomId => $inviteRoom) {
try {
$this->client->joinRoom($roomId);
} catch (\Exception $e) {
$this->logger->info("Join for room: " . $roomId . " failed.");
}
$this->logger->debug("joined " . $roomId);
}
}
}