2018-11-25 21:24:31 +00:00
|
|
|
<?php
|
|
|
|
|
|
2018-11-26 08:55:06 +00:00
|
|
|
namespace BeyondCode\LaravelWebSockets\Dashboard\Http\Controllers;
|
2018-11-25 21:24:31 +00:00
|
|
|
|
2020-08-23 16:12:22 +00:00
|
|
|
use BeyondCode\LaravelWebSockets\Contracts\PushesToPusher;
|
2020-08-23 16:12:46 +00:00
|
|
|
use BeyondCode\LaravelWebSockets\Statistics\Rules\AppId;
|
2020-08-24 06:03:52 +00:00
|
|
|
use Exception;
|
2020-03-04 09:58:39 +00:00
|
|
|
use Illuminate\Http\Request;
|
2018-11-25 21:24:31 +00:00
|
|
|
|
|
|
|
|
class SendMessage
|
|
|
|
|
{
|
2020-08-23 16:12:22 +00:00
|
|
|
use PushesToPusher;
|
|
|
|
|
|
2020-08-18 17:21:22 +00:00
|
|
|
/**
|
|
|
|
|
* Send the message to the requested channel.
|
|
|
|
|
*
|
|
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
|
|
* @return \Illuminate\Http\Response
|
|
|
|
|
*/
|
2018-11-25 21:24:31 +00:00
|
|
|
public function __invoke(Request $request)
|
2018-12-04 08:08:25 +00:00
|
|
|
{
|
2020-08-23 16:12:22 +00:00
|
|
|
$request->validate([
|
2020-08-18 17:21:22 +00:00
|
|
|
'appId' => ['required', new AppId],
|
|
|
|
|
'key' => 'required|string',
|
|
|
|
|
'secret' => 'required|string',
|
|
|
|
|
'channel' => 'required|string',
|
|
|
|
|
'event' => 'required|string',
|
|
|
|
|
'data' => 'required|json',
|
2018-12-04 08:08:25 +00:00
|
|
|
]);
|
|
|
|
|
|
2020-08-23 16:12:22 +00:00
|
|
|
$broadcaster = $this->getPusherBroadcaster([
|
|
|
|
|
'key' => $request->key,
|
|
|
|
|
'secret' => $request->secret,
|
|
|
|
|
'id' => $request->appId,
|
|
|
|
|
]);
|
2018-12-04 08:08:25 +00:00
|
|
|
|
2020-08-24 06:03:52 +00:00
|
|
|
try {
|
2020-08-24 08:50:02 +00:00
|
|
|
$decodedData = @json_decode($request->data, true);
|
|
|
|
|
|
2020-08-24 06:03:52 +00:00
|
|
|
$broadcaster->broadcast(
|
|
|
|
|
[$request->channel],
|
|
|
|
|
$request->event,
|
2020-08-24 08:50:02 +00:00
|
|
|
$decodedData ?: []
|
2020-08-24 06:03:52 +00:00
|
|
|
);
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
return response()->json([
|
|
|
|
|
'ok' => false,
|
|
|
|
|
'exception' => $e->getMessage(),
|
|
|
|
|
]);
|
|
|
|
|
}
|
2018-11-25 21:24:31 +00:00
|
|
|
|
2020-08-24 06:03:52 +00:00
|
|
|
return response()->json([
|
|
|
|
|
'ok' => true,
|
|
|
|
|
]);
|
2018-11-25 21:24:31 +00:00
|
|
|
}
|
2018-11-26 07:56:56 +00:00
|
|
|
}
|