60 lines
1.5 KiB
PHP
60 lines
1.5 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Events\Matrix;
|
||
|
|
||
|
use Illuminate\Http\Client\ConnectionException;
|
||
|
use Illuminate\Support\Facades\Http;
|
||
|
use Illuminate\Support\Facades\Log;
|
||
|
|
||
|
use App\Models\Echoarea;
|
||
|
|
||
|
abstract class Base
|
||
|
{
|
||
|
protected $_data = [];
|
||
|
|
||
|
public function __construct(array $request)
|
||
|
{
|
||
|
Log::info(sprintf('EMb:- Event Initialised [%s]',get_class($this)));
|
||
|
|
||
|
$this->_data = json_decode(json_encode($request));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Enable getting values for keys in the response
|
||
|
*
|
||
|
* @note: This method is limited to certain values to ensure integrity reasons
|
||
|
* @note: Classes should return:
|
||
|
* + channel_id,
|
||
|
* + team_id,
|
||
|
* + ts,
|
||
|
* + user_id
|
||
|
* @param string $key
|
||
|
* @return mixed|object
|
||
|
* @throws ConnectionException
|
||
|
*/
|
||
|
public function __get(string $key)
|
||
|
{
|
||
|
switch ($key) {
|
||
|
case 'echoarea':
|
||
|
$rooms = collect(config('matrix.rooms'));
|
||
|
|
||
|
return Echoarea::where('name',$rooms->get($this->room_id))->single();
|
||
|
|
||
|
case 'room':
|
||
|
$room_alias = Http::withToken(config('matrix.as_token'))
|
||
|
->get(sprintf('%s/_matrix/client/v3/rooms/%s/state/m.room.canonical_alias',config('matrix.server'),$this->room_id));
|
||
|
|
||
|
return $room_alias->json('alias',$this->room_id);
|
||
|
|
||
|
case 'topic':
|
||
|
$subject = Http::withToken(config('matrix.as_token'))
|
||
|
->get(sprintf('%s/_matrix/client/v3/rooms/%s/state/m.room.topic',config('matrix.server'),$this->room_id));
|
||
|
|
||
|
return $subject->json('topic','Message from Matrix');
|
||
|
|
||
|
case 'room_id':
|
||
|
default:
|
||
|
return object_get($this->_data,$key);
|
||
|
}
|
||
|
}
|
||
|
}
|