omnicast/laravel-sdk

A production-ready Laravel SDK for interacting with the OmniCast WebRTC media server.

Maintainers

Package info

github.com/Rajibul-16103404/laravel-sdk

pkg:composer/omnicast/laravel-sdk

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-08-30 16:41 UTC

This package is auto-updated.

Last update: 2026-08-30 16:50:29 UTC


README

Latest Version on Packagist Total Downloads PHP Version License

A production-ready, secure Laravel SDK for interacting with the OmniCast WebRTC media server.

Requirements

  • PHP ^8.1
  • Laravel ^10.0 | ^11.0 | ^12.0

Installation

composer require omnicast/laravel-sdk

The service provider and facade are auto-discovered by Laravel. No manual registration needed.

Configuration

Publish the config file:

php artisan vendor:publish --tag=omnicast-config

Add these to your .env file:

OMNICAST_API_URL=https://omnilive.lolipoplive.top/api
OMNICAST_API_KEY=your-api-key
OMNICAST_API_SECRET=your-api-secret
OMNICAST_JWT_SECRET=your-jwt-secret

# Optional
OMNICAST_TIMEOUT=30
OMNICAST_JWT_TTL=86400

Usage

Using the Facade

use Omnicast\LaravelSdk\Facades\Omnicast;

// Generate a host JWT token
$token = Omnicast::generateHostToken('room-123', 'user-456', [
    'display_name' => 'Alice',
]);

// Generate a viewer / co-host join token
$viewerToken  = Omnicast::generateJoinToken('room-123', 'user-789');
$coHostToken  = Omnicast::generateJoinToken('room-123', 'user-321', 'co-host');

// Room list and count
$rooms     = Omnicast::getRooms();       // array
$roomCount = Omnicast::getRoomCount();   // int

// Participants
$participants = Omnicast::getParticipants('room-123'); // array
$count        = Omnicast::getParticipantCount('room-123'); // int

Using Dependency Injection

use Omnicast\LaravelSdk\OmnicastService;
use Omnicast\LaravelSdk\Exceptions\OmnicastException;

class StreamController extends Controller
{
    public function __construct(private readonly OmnicastService $omnicast) {}

    public function join(string $roomId, Request $request): JsonResponse
    {
        try {
            $token = $this->omnicast->generateJoinToken(
                roomId: $roomId,
                userId: (string) $request->user()->id,
                role: $request->input('role', 'viewer'),
            );

            return response()->json(['token' => $token]);
        } catch (OmnicastException $e) {
            return response()->json(['error' => $e->getMessage()], 500);
        }
    }
}

JWT Token Payload

Every issued token contains:

{
  "api_key":  "your-api-key",
  "room_id":  "room-123",
  "user_id":  "user-456",
  "role":     "host | viewer | co-host",
  "metadata": {},
  "iat":      1234567890,
  "exp":      1234654290
}
  • Algorithm: HS256
  • Default TTL: 86400 seconds (24 hours) — configurable via OMNICAST_JWT_TTL

Available Methods

Method Description
generateHostToken(roomId, userId, metadata) JWT with role = host
generateJoinToken(roomId, userId, role, metadata) JWT with role = viewer|co-host
getRooms() GET /rooms → list of rooms
getRoomCount() Total active room count
getParticipants(roomId) GET /rooms/{roomId}/participants
getParticipantCount(roomId) Participant count for a room

Exception Handling

All exceptions extend OmnicastException and expose getHttpStatusCode() and getResponseBody():

try {
    $rooms = Omnicast::getRooms();
} catch (\Omnicast\LaravelSdk\Exceptions\OmnicastException $e) {
    // $e->getMessage()        — human-readable message
    // $e->getHttpStatusCode() — HTTP status (or null)
    // $e->getResponseBody()   — raw API response body (or null)
}

Testing

composer install
./vendor/bin/phpunit --testdox

License

The MIT License (MIT). See LICENSE for details.