PHP: webhook receiver
This commit is contained in:
parent
1da1ab11a5
commit
264e2e4e6f
@ -3,8 +3,8 @@
|
||||
"description": "Basic server application built for PHP",
|
||||
"type": "project",
|
||||
"require": {
|
||||
"vlucas/phpdotenv": "^5.6",
|
||||
"agence104/livekit-server-sdk": "^1.2"
|
||||
"vlucas/phpdotenv": "5.6.0",
|
||||
"agence104/livekit-server-sdk": "1.2.3"
|
||||
},
|
||||
"authors": [
|
||||
{
|
||||
@ -17,6 +17,6 @@
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"start": "php -S localhost:6080"
|
||||
"start": "php -S 0.0.0.0:6080"
|
||||
}
|
||||
}
|
||||
|
||||
32
application-server/php/composer.lock
generated
32
application-server/php/composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "6e73a888ba4267c04997551edd60c885",
|
||||
"content-hash": "6e44cb3fdf0c966fd5e708c217221e07",
|
||||
"packages": [
|
||||
{
|
||||
"name": "agence104/livekit-server-sdk",
|
||||
@ -758,20 +758,20 @@
|
||||
},
|
||||
{
|
||||
"name": "psr/http-factory",
|
||||
"version": "1.0.2",
|
||||
"version": "1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-factory.git",
|
||||
"reference": "e616d01114759c4c489f93b099585439f795fe35"
|
||||
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
|
||||
"reference": "e616d01114759c4c489f93b099585439f795fe35",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.0.0",
|
||||
"php": ">=7.1",
|
||||
"psr/http-message": "^1.0 || ^2.0"
|
||||
},
|
||||
"type": "library",
|
||||
@ -795,7 +795,7 @@
|
||||
"homepage": "https://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interfaces for PSR-7 HTTP message factories",
|
||||
"description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
|
||||
"keywords": [
|
||||
"factory",
|
||||
"http",
|
||||
@ -807,9 +807,9 @@
|
||||
"response"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/http-factory/tree/1.0.2"
|
||||
"source": "https://github.com/php-fig/http-factory"
|
||||
},
|
||||
"time": "2023-04-10T20:10:41+00:00"
|
||||
"time": "2024-04-15T12:06:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
@ -966,16 +966,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
"version": "v3.4.0",
|
||||
"version": "v3.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
|
||||
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
|
||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -984,7 +984,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.4-dev"
|
||||
"dev-main": "3.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
@ -1013,7 +1013,7 @@
|
||||
"description": "A generic function and convention to trigger deprecation notices",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1029,7 +1029,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-23T14:45:45+00:00"
|
||||
"time": "2024-04-18T09:32:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
|
||||
@ -4,20 +4,20 @@ require __DIR__ . "/vendor/autoload.php";
|
||||
use Agence104\LiveKit\AccessToken;
|
||||
use Agence104\LiveKit\AccessTokenOptions;
|
||||
use Agence104\LiveKit\VideoGrant;
|
||||
use Agence104\LiveKit\WebhookReceiver;
|
||||
use Dotenv\Dotenv;
|
||||
|
||||
Dotenv::createImmutable(__DIR__)->safeLoad();
|
||||
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: OPTIONS,GET,POST,PUT,DELETE");
|
||||
header("Access-Control-Max-Age: 3600");
|
||||
header("Access-Control-Allow-Methods: OPTIONS,POST");
|
||||
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
|
||||
|
||||
$LIVEKIT_API_KEY = $_ENV["LIVEKIT_API_KEY"] ?? "devkey";
|
||||
$LIVEKIT_API_SECRET = $_ENV["LIVEKIT_API_SECRET"] ?? "secret";
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] === "POST" && $_SERVER["PATH_INFO"] === "/token") {
|
||||
if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER["REQUEST_METHOD"] === "POST" && $_SERVER["PATH_INFO"] === "/token") {
|
||||
$data = json_decode(file_get_contents("php://input"), true);
|
||||
|
||||
$roomName = $data["roomName"] ?? null;
|
||||
@ -43,5 +43,24 @@ if ($_SERVER["REQUEST_METHOD"] === "POST" && $_SERVER["PATH_INFO"] === "/token")
|
||||
exit();
|
||||
}
|
||||
|
||||
$webhookReceiver = (new WebhookReceiver($LIVEKIT_API_KEY, $LIVEKIT_API_SECRET));
|
||||
|
||||
if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER["REQUEST_METHOD"] === "POST" && $_SERVER["PATH_INFO"] === "/webhook") {
|
||||
$headers = getallheaders();
|
||||
$authHeader = $headers['Authorization'];
|
||||
$body = file_get_contents("php://input");
|
||||
try {
|
||||
$event = $webhookReceiver->receive($body, $authHeader);
|
||||
error_log('LiveKit Webhook:');
|
||||
error_log(print_r($event->getEvent(), true));
|
||||
exit();
|
||||
} catch (Exception $e) {
|
||||
http_response_code(401);
|
||||
echo "Error validating webhook event";
|
||||
echo json_encode($e->getMessage());
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode("Unsupported endpoint or method");
|
||||
exit();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user