-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathXirSys.php
134 lines (118 loc) · 4.83 KB
/
XirSys.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
class XirSys
{
// Please fill in your XirSys credentials here
// Make sure it matches your dashboard credentials exactly
private $domain = '< Please insert domain here >';
private $application = 'default';
private $ident = '< Please insert ident here >';
private $secret = '< Please insert secret here >';
// Forces getIceServers to return compatible URLs for STUNS and TURNS
private $secure = '1';
// Enable cross-origin resource sharing
// For more information, visit: http://enable-cors.org
private $enableCors = '0';
// The XirSys POST request URLs
const SERVICE_ENDPOINT = 'https://api.xirsys.com/';
const GET_ICE_SERVERS = 'getIceServers';
const GET_TOKEN = 'getToken';
const ADD_ROOM = 'addRoom';
const ADD_APPLICATION = 'addApplication';
const ADD_DOMAIN = 'addDomain';
// Prepares a POST request to get XirSys ICE servers
public function getIceServers($room, $username) {
$url = self::SERVICE_ENDPOINT.self::GET_ICE_SERVERS;
$fields_string = '';
$fields = array(
'domain' => urlencode($this->domain),
'application' => urlencode($this->application),
'room' => urlencode($room),
'username' => urlencode($username),
'ident' => urlencode($this->ident),
'secret' => urlencode($this->secret),
'secure' => urlencode($this->secure)
);
// Executes the request
return $this->executeRequest($url, $fields);
}
// Prepares a POST request to get a XirSys security token
public function getToken($room, $username) {
$url = self::SERVICE_ENDPOINT.self::GET_TOKEN;
$fields_string = '';
$fields = array(
'domain' => urlencode($this->domain),
'application' => urlencode($this->application),
'room' => urlencode($room),
'username' => urlencode($username),
'ident' => urlencode($this->ident),
'secret' => urlencode($this->secret),
'secure' => urlencode($this->secure)
);
return $this->executeRequest($url, $fields);
}
// Prepares a POST request to add a XirSys room
// Username is not needed here
public function addRoom($room) {
$url = self::SERVICE_ENDPOINT.self::ADD_ROOM;
$fields_string = '';
$fields = array(
'domain' => urlencode($this->domain),
'application' => urlencode($this->application),
'room' => urlencode($room),
'ident' => urlencode($this->ident),
'secret' => urlencode($this->secret),
'secure' => urlencode($this->secure)
);
return $this->executeRequest($url, $fields);
}
// Prepares a POST request to add a XirSys application
// Room or username are not needed here
public function addApplication($application) {
$url = self::SERVICE_ENDPOINT.self::ADD_APPLICATION;
$fields_string = '';
$fields = array(
'domain' => urlencode($this->domain),
'application' => urlencode($application),
'ident' => urlencode($this->ident),
'secret' => urlencode($this->secret),
'secure' => urlencode($this->secure)
);
return $this->executeRequest($url, $fields);
}
// Prepares a POST request to add a XirSys domain
// Application, room, or username are not needed here
public function addDomain($domain) {
$url = self::SERVICE_ENDPOINT.self::ADD_DOMAIN;
$fields_string = '';
$fields = array(
'domain' => urlencode($domain),
'ident' => urlencode($this->ident),
'secret' => urlencode($this->secret),
'secure' => urlencode($this->secure)
);
return $this->executeRequest($url, $fields);
}
// Executes the POST request
public function executeRequest($url, $fields) {
// Use key 'http' even when sending the request to https
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
// URLify the POST data
'content' => http_build_query($fields),
),
);
// Prepares the POST request to be executed
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}
// If CORS is enabled, sets proper headers
public function checkForCors() {
if ($this->enableCors === '1') {
header("Access-Control-Allow-Origin: *");
}
}
}
?>