<?php
 
namespace App\Events;

use App\Helpers\Utility\SymObsfucate;
use Illuminate\Broadcasting\Channel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
 
class SimplePublicEvent implements ShouldBroadcastNow
{
    use Dispatchable, InteractsWithSockets;

    protected $broadcast_as, $broadcast_on, $data;

    public function __construct($_broadcast_as, $_broadcast_on, $_data) {
        $this->data = $_data;
        $this->broadcast_on = $_broadcast_on;
        $this->broadcast_as = $_broadcast_as;
    }

    public function broadcastWith() {
        return config('security.obsfucation.websockets') ?
            [ SymObsfucate::obsfucate($this->data, config('security.obsfucation.salt'), config('security.obsfucation.noise'), config('security.obsfucation.passes'), config('security.obsfucation.flip')) ]
            :
            $this->data;
    }

    public function broadcastAs() {
        return $this->broadcast_as;
    }

    public function broadcastOn() {
        return new Channel($this->broadcast_on);
    }
}