51 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Listeners;
 | 
						|
 | 
						|
use Illuminate\Foundation\Events\MaintenanceModeDisabled as EventsMaintenanceModeDisabled;
 | 
						|
use Illuminate\Support\Facades\Request;
 | 
						|
use Illuminate\Support\Facades\Storage;
 | 
						|
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
 | 
						|
 | 
						|
class MaintenanceModeDisabledNotification
 | 
						|
{
 | 
						|
    public function __construct() {}
 | 
						|
 | 
						|
    public function handle(EventsMaintenanceModeDisabled $event): void
 | 
						|
    {
 | 
						|
        ray('Maintenance mode disabled!');
 | 
						|
        $files = Storage::disk('webhooks-during-maintenance')->files();
 | 
						|
        $files = collect($files);
 | 
						|
        $files = $files->sort();
 | 
						|
        foreach ($files as $file) {
 | 
						|
            $content = Storage::disk('webhooks-during-maintenance')->get($file);
 | 
						|
            $data = json_decode($content, true);
 | 
						|
            $symfonyRequest = new SymfonyRequest(
 | 
						|
                $data['query'],
 | 
						|
                $data['request'],
 | 
						|
                $data['attributes'],
 | 
						|
                $data['cookies'],
 | 
						|
                $data['files'],
 | 
						|
                $data['server'],
 | 
						|
                $data['content']
 | 
						|
            );
 | 
						|
 | 
						|
            foreach ($data['headers'] as $key => $value) {
 | 
						|
                $symfonyRequest->headers->set($key, $value);
 | 
						|
            }
 | 
						|
            $request = Request::createFromBase($symfonyRequest);
 | 
						|
            $endpoint = str($file)->after('_')->beforeLast('_')->value();
 | 
						|
            $class = "App\Http\Controllers\Webhook\\".ucfirst(str($endpoint)->before('::')->value());
 | 
						|
            $method = str($endpoint)->after('::')->value();
 | 
						|
            try {
 | 
						|
                $instance = new $class;
 | 
						|
                $instance->$method($request);
 | 
						|
            } catch (\Throwable $th) {
 | 
						|
                ray($th);
 | 
						|
            } finally {
 | 
						|
                Storage::disk('webhooks-during-maintenance')->delete($file);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |