Skip to content

Commit f63c4b6

Browse files
authored
Merge pull request #16 from rtckit/v0.6.0
v0.6.0
2 parents 0a47d9d + 41e7a2c commit f63c4b6

File tree

79 files changed

+1505
-531
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1505
-531
lines changed

README.md

Lines changed: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,35 @@ $message = \RTCKit\SIP\Message::parse($text);
2929
echo get_class($message) . PHP_EOL;
3030

3131
/* Outputs something similar to:
32-
* Protocol version: SIP/2.0
33-
* Request method: REGISTER
34-
* Request URI: sip:192.168.0.1
35-
* Via: 192.168.0.2:5050
36-
* Via branch: z9hG4bK.eAV4o0nXr
37-
* From: sip:[email protected]
38-
* From tag: SFJbQ2oWh
39-
40-
* Sequence number: 20
41-
* Call ID: ob0EYyuyC0
32+
* Protocol version: SIP/2.0
33+
* Request method: REGISTER
34+
* Request URI: sip:192.168.0.1
35+
* Via: 192.168.0.2:5050
36+
* Via branch: z9hG4bK.eAV4o0nXr
37+
* From scheme: sip
38+
* From user: buzz
39+
* From host: 192.168.0.1
40+
* From tag: SFJbQ2oWh
41+
* To scheme: sip
42+
* To user: buzz
43+
* To host: 192.168.0.1
44+
* Sequence number: 20
45+
* Call ID: ob0EYyuyC0
4246
*/
43-
printf("Protocol version: %s" . PHP_EOL, $message->version);
44-
printf("Request method: %s" . PHP_EOL, $message->method);
45-
printf("Request URI: %s" . PHP_EOL, $message->uri);
46-
printf("Via: %s" . PHP_EOL, $message->via->values[0]->host);
47-
printf("Via branch: %s" . PHP_EOL, $message->via->values[0]->branch);
48-
printf("From: %s" . PHP_EOL, $message->from->addr);
49-
printf("From tag: %s" . PHP_EOL, $message->from->tag);
50-
printf("To: %s" . PHP_EOL, $message->to->addr);
51-
printf("Sequence number: %s" . PHP_EOL, $message->cSeq->sequence);
52-
printf("Call ID: %s" . PHP_EOL, $message->callId->value);
47+
printf("Protocol version: %s" . PHP_EOL, $message->version);
48+
printf("Request method: %s" . PHP_EOL, $message->method);
49+
printf("Request URI: %s" . PHP_EOL, $message->uri);
50+
printf("Via: %s" . PHP_EOL, $message->via->values[0]->host);
51+
printf("Via branch: %s" . PHP_EOL, $message->via->values[0]->branch);
52+
printf("From scheme: %s" . PHP_EOL, $request->from->uri->scheme);
53+
printf("From user: %s" . PHP_EOL, $request->from->uri->user);
54+
printf("From host: %s" . PHP_EOL, $request->from->uri->host);
55+
printf("From tag: %s" . PHP_EOL, $request->from->tag);
56+
printf("To scheme: %s" . PHP_EOL, $request->to->uri->scheme);
57+
printf("To user: %s" . PHP_EOL, $request->to->uri->user);
58+
printf("To host: %s" . PHP_EOL, $request->to->uri->host);
59+
printf("Sequence number: %s" . PHP_EOL, $message->cSeq->sequence);
60+
printf("Call ID: %s" . PHP_EOL, $message->callId->value);
5361
```
5462

5563
#### SIP Message Rendering
@@ -70,11 +78,17 @@ $response->via->values[0]->host = '192.168.0.2:5050';
7078
$response->via->values[0]->branch = 'z9hG4bK.eAV4o0nXr';
7179

7280
$response->from = new \RTCKit\SIP\Header\NameAddrHeader;
73-
$response->from->addr = 'sip:[email protected]';
81+
$response->from->uri = new \RTCKit\SIP\URI;
82+
$response->from->uri->scheme = 'sip';
83+
$response->from->uri->user = 'buzz';
84+
$response->from->uri->host = '192.168.0.1';
7485
$response->from->tag = 'SFJbQ2oWh';
7586

7687
$response->to = new \RTCKit\SIP\Header\NameAddrHeader;
77-
$response->to->addr = 'sip:[email protected]';
88+
$response->to->uri = new \RTCKit\SIP\URI;
89+
$response->to->uri->scheme = 'sip';
90+
$response->to->uri->user = 'buzz';
91+
$response->to->uri->host = '192.168.0.1';
7892
$response->to->tag = '8cQtUyH6N5N9K';
7993

8094
$response->cSeq = new \RTCKit\SIP\Header\CSeqHeader;
@@ -89,7 +103,12 @@ $response->maxForwards->value = 70;
89103

90104
$response->contact = new \RTCKit\SIP\Header\ContactHeader;
91105
$response->contact->values[0] = new \RTCKit\SIP\Header\ContactValue;
92-
$response->contact->values[0]->addr = 'sip:[email protected]:5050;transport=udp';
106+
$response->contact->values[0]->uri = new \RTCKit\SIP\URI;
107+
$response->contact->values[0]->uri->scheme = 'sip';
108+
$response->contact->values[0]->uri->user = 'buzz';
109+
$response->contact->values[0]->uri->host = '192.168.0.2';
110+
$response->contact->values[0]->uri->port = 5050;
111+
$response->contact->values[0]->uri->transport = 'udp';
93112
$response->contact->values[0]->expires = 3600;
94113

95114
$response->userAgent = new \RTCKit\SIP\Header\Header;

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "rtckit/sip",
33
"description": "Parser/Renderer for SIP protocol written in PHP",
4-
"version": "0.5.1",
4+
"version": "0.6.0",
55
"type": "library",
66
"keywords": [
77
"sip",

examples/01-parse-request.php

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,30 +25,35 @@
2525
'Accept: text/plain' . "\r\n" .
2626
'Accept: application/vnd.gsma.rcs-ft-http+xml' . "\r\n" .
2727
'Contact: <sip:[email protected]:5050;transport=udp>' . "\r\n" .
28-
' ;q=0.7; expires=3600' . "\r\n" .
29-
' ;+sip.instance="<urn:uuid:5cc54b96-ab90-4652-b4e5-de74c8e56fb7>"' . "\r\n" .
30-
'Contact: <sip:[email protected];transport=tcp>;reg-id=1;expires=3600' . "\r\n" .
31-
' ;+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' . "\r\n" .
32-
'Contact: <sip:[email protected];transport=tcp>;reg-id=2;expires=3600' . "\r\n" .
33-
' ;+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' . "\r\n" .
28+
' ;q=0.7; expires=3600' . "\r\n" .
29+
' ;+sip.instance="<urn:uuid:5cc54b96-ab90-4652-b4e5-de74c8e56fb7>"' . "\r\n" .
30+
'Contact: <sip:[email protected];transport=tcp>;reg-id=1;expires=3600' . "\r\n" .
31+
' ;+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' . "\r\n" .
32+
'Contact: <sip:[email protected];transport=tcp>;reg-id=2;expires=3600' . "\r\n" .
33+
' ;+sip.instance="<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' . "\r\n" .
3434
'Expires: 3600' . "\r\n" .
3535
'User-Agent: MyDeskPhone/1.0.0' . "\r\n" .
3636
"\r\n";
3737

3838
$request = Message::parse($text);
3939

40-
printf("Message type: %s" . PHP_EOL, (get_class($request) === Request::class) ? 'SIP Request' : 'BOGUS!!!');
41-
printf("Protocol version: %s" . PHP_EOL, $request->version);
42-
printf("Request method: %s" . PHP_EOL, $request->method);
43-
printf("Request URI: %s" . PHP_EOL, $request->uri);
44-
printf("Via: %s" . PHP_EOL, $request->via->values[0]->host);
45-
printf("Via branch: %s" . PHP_EOL, $request->via->values[0]->branch);
46-
printf("From: %s" . PHP_EOL, $request->from->addr);
47-
printf("From tag: %s" . PHP_EOL, $request->from->tag);
48-
printf("To: %s" . PHP_EOL, $request->to->addr);
49-
printf("CSeq: %s" . PHP_EOL, $request->cSeq->sequence);
50-
printf("Call ID: %s" . PHP_EOL, $request->callId->value);
51-
printf("Max forwards: %d" . PHP_EOL, $request->maxForwards->value);
40+
printf("Message type: %s" . PHP_EOL, (get_class($request) === Request::class) ? 'SIP Request' : 'BOGUS!!!');
41+
printf("Protocol version: %s" . PHP_EOL, $request->version);
42+
printf("Request method: %s" . PHP_EOL, $request->method);
43+
printf("Request URI scheme: %s" . PHP_EOL, $request->uri->scheme);
44+
printf("Request URI host: %s" . PHP_EOL, $request->uri->host);
45+
printf("Via: %s" . PHP_EOL, $request->via->values[0]->host);
46+
printf("Via branch: %s" . PHP_EOL, $request->via->values[0]->branch);
47+
printf("From scheme: %s" . PHP_EOL, $request->from->uri->scheme);
48+
printf("From user: %s" . PHP_EOL, $request->from->uri->user);
49+
printf("From host: %s" . PHP_EOL, $request->from->uri->host);
50+
printf("From tag: %s" . PHP_EOL, $request->from->tag);
51+
printf("To scheme: %s" . PHP_EOL, $request->to->uri->scheme);
52+
printf("To user: %s" . PHP_EOL, $request->to->uri->user);
53+
printf("To host: %s" . PHP_EOL, $request->to->uri->host);
54+
printf("CSeq: %s" . PHP_EOL, $request->cSeq->sequence);
55+
printf("Call ID: %s" . PHP_EOL, $request->callId->value);
56+
printf("Max forwards: %d" . PHP_EOL, $request->maxForwards->value);
5257

5358
printf("Supported: ");
5459

@@ -70,8 +75,10 @@
7075
printf("- %s" . PHP_EOL, $val->value);
7176
}
7277

73-
74-
printf("Contact: %s" . PHP_EOL, $request->contact->values[0]->addr);
78+
printf("Contact scheme: %s" . PHP_EOL, $request->contact->values[0]->uri->scheme);
79+
printf("Contact user: %s" . PHP_EOL, $request->contact->values[0]->uri->user);
80+
printf("Contact host: %s" . PHP_EOL, $request->contact->values[0]->uri->host);
81+
printf("Contact transport: %s" . PHP_EOL, $request->contact->values[0]->uri->transport);
7582
printf("Contact q-value: %s" . PHP_EOL, $request->contact->values[0]->q);
7683
printf("Contact expires: %s" . PHP_EOL, $request->contact->values[0]->expires);
7784
printf("Contact instance: %s" . PHP_EOL, $request->contact->values[0]->params['+sip.instance']);

examples/02-render-request.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@
1818
use RTCKit\SIP\Header\ViaHeader;
1919
use RTCKit\SIP\Header\ViaValue;
2020
use RTCKit\SIP\Request;
21+
use RTCKit\SIP\URI;
2122

2223
$request = new Request;
2324
$request->version = 'SIP/2.0';
2425
$request->method = 'REGISTER';
25-
$request->uri = 'sip:192.168.0.1';
26+
$request->uri = new URI;
27+
$request->uri->scheme = 'sip';
28+
$request->uri->host = '192.168.0.1';
2629

2730
$request->via = new ViaHeader;
2831
$request->via->values[0] = new ViaValue;
@@ -33,11 +36,17 @@
3336
$request->via->values[0]->branch = 'z9hG4bK.eAV4o0nXr';
3437

3538
$request->from = new NameAddrHeader;
36-
$request->from->addr = 'sip:[email protected]';
39+
$request->from->uri = new URI;
40+
$request->from->uri->scheme = 'sip';
41+
$request->from->uri->user = 'buzz';
42+
$request->from->uri->host = '192.168.0.1';
3743
$request->from->tag = 'SFJbQ2oWh';
3844

3945
$request->to = new NameAddrHeader;
40-
$request->to->addr = 'sip:[email protected]';
46+
$request->to->uri = new URI;
47+
$request->to->uri->scheme = 'sip';
48+
$request->to->uri->user = 'buzz';
49+
$request->to->uri->host = '192.168.0.1';
4150

4251
$request->cSeq = new CSeqHeader;
4352
$request->cSeq->sequence = 20;
@@ -51,7 +60,12 @@
5160

5261
$request->contact = new ContactHeader;
5362
$request->contact->values[0] = new ContactValue;
54-
$request->contact->values[0]->addr = 'sip:[email protected]:5050;transport=udp';
63+
$request->contact->values[0]->uri = new URI;
64+
$request->contact->values[0]->uri->scheme = 'sip';
65+
$request->contact->values[0]->uri->user = 'buzz';
66+
$request->contact->values[0]->uri->host = '192.168.0.2';
67+
$request->contact->values[0]->uri->port = 5050;
68+
$request->contact->values[0]->uri->transport = 'udp';
5569
$request->contact->values[0]->q = 0.7;
5670
$request->contact->values[0]->expires = 3600;
5771
$request->contact->values[0]->params['+sip.instance'] = '"<urn:uuid:5cc54b96-ab90-4652-b4e5-de74c8e56fb7>"';

examples/03-parse-response.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,21 @@
3838
printf("Response reason: %s" . PHP_EOL, $response->reason);
3939
printf("Via: %s" . PHP_EOL, $response->via->values[0]->host);
4040
printf("Via branch: %s" . PHP_EOL, $response->via->values[0]->branch);
41-
printf("From: %s" . PHP_EOL, $response->from->addr);
41+
printf("From scheme: %s" . PHP_EOL, $response->from->uri->scheme);
42+
printf("From user: %s" . PHP_EOL, $response->from->uri->user);
43+
printf("From host: %s" . PHP_EOL, $response->from->uri->host);
4244
printf("From tag: %s" . PHP_EOL, $response->from->tag);
43-
printf("To: %s" . PHP_EOL, $response->to->addr);
45+
printf("To scheme: %s" . PHP_EOL, $response->to->uri->scheme);
46+
printf("To host: %s" . PHP_EOL, $response->to->uri->host);
4447
printf("To tag: %s" . PHP_EOL, $response->to->tag);
4548
printf("Call ID: %s" . PHP_EOL, $response->callId->value);
4649
printf("User agent: %s" . PHP_EOL, $response->userAgent->values[0]);
4750
printf("CSeq: %s" . PHP_EOL, $response->cSeq->sequence);
48-
printf("Contact: %s" . PHP_EOL, $response->contact->values[0]->addr);
51+
printf("Contact scheme: %s" . PHP_EOL, $response->contact->values[0]->uri->scheme);
52+
printf("Contact user: %s" . PHP_EOL, $response->contact->values[0]->uri->user);
53+
printf("Contact host: %s" . PHP_EOL, $response->contact->values[0]->uri->host);
54+
printf("Contact port: %s" . PHP_EOL, $response->contact->values[0]->uri->port);
55+
printf("Contact transport: %s" . PHP_EOL, $response->contact->values[0]->uri->transport);
4956

5057
printf("Accept: ");
5158

examples/04-render-response.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use RTCKit\SIP\Header\ViaHeader;
1919
use RTCKit\SIP\Header\ViaValue;
2020
use RTCKit\SIP\Response;
21+
use RTCKit\SIP\URI;
2122

2223
$response = new Response;
2324
$response->version = 'SIP/2.0';
@@ -32,11 +33,17 @@
3233
$response->via->values[0]->branch = 'z9hG4bK.eAV4o0nXr';
3334

3435
$response->from = new NameAddrHeader;
35-
$response->from->addr = 'sip:[email protected]';
36+
$response->from->uri = new URI;
37+
$response->from->uri->scheme = 'sip';
38+
$response->from->uri->user = 'buzz';
39+
$response->from->uri->host = '192.168.0.1';
3640
$response->from->tag = 'SFJbQ2oWh';
3741

3842
$response->to = new NameAddrHeader;
39-
$response->to->addr = 'sip:[email protected]';
43+
$response->to->uri = new URI;
44+
$response->to->uri->scheme = 'sip';
45+
$response->to->uri->user = 'buzz';
46+
$response->to->uri->host = '192.168.0.1';
4047
$response->to->tag = '8cQtUyH6N5N9K';
4148

4249
$response->cSeq = new CSeqHeader;
@@ -51,7 +58,12 @@
5158

5259
$response->contact = new ContactHeader;
5360
$response->contact->values[0] = new ContactValue;
54-
$response->contact->values[0]->addr = 'sip:[email protected]:5050;transport=udp';
61+
$response->contact->values[0]->uri = new URI;
62+
$response->contact->values[0]->uri->scheme = 'sip';
63+
$response->contact->values[0]->uri->user = 'buzz';
64+
$response->contact->values[0]->uri->host = '192.168.0.2';
65+
$response->contact->values[0]->uri->port = 5050;
66+
$response->contact->values[0]->uri->transport = 'udp';
5567
$response->contact->values[0]->q = 0.7;
5668
$response->contact->values[0]->expires = 3600;
5769
$response->contact->values[0]->params['+sip.instance'] = '"<urn:uuid:5cc54b96-ab90-4652-b4e5-de74c8e56fb7>"';

examples/05-stream-parse.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@
2626
printf(
2727
"Request %10s %30s %30s %40s" . PHP_EOL,
2828
$message->method,
29-
substr($message->from->addr, 0, 30),
30-
substr($message->to->addr, 0, 30),
29+
substr($message->from->uri->user, 0, 30),
30+
substr($message->to->uri->user, 0, 30),
3131
substr($message->callId->value, 0, 40)
3232
);
3333
} else {
3434
printf(
3535
"Response %10s %30s %30s %40s %03d %s" . PHP_EOL,
3636
$message->cSeq->method,
37-
substr($message->from->addr, 0, 30),
38-
substr($message->to->addr, 0, 30),
37+
substr($message->from->uri->user, 0, 30),
38+
substr($message->to->uri->user, 0, 30),
3939
substr($message->callId->value, 0, 40),
4040
$message->code,
4141
$message->reason
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22
/**
3-
* RTCKit\SIP\Exception\InvalidCSeqValue Class
3+
* RTCKit\SIP\Exception\InvalidCSeqValueException Class
44
*/
55
declare(strict_types = 1);
66

@@ -9,6 +9,6 @@
99
/**
1010
* Exception thrown when processing SIP Messages with conflicting CSeq header values
1111
*/
12-
class InvalidCSeqValue extends SIPException
12+
class InvalidCSeqValueException extends SIPException
1313
{
1414
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22
/**
3-
* RTCKit\SIP\Exception\InvalidDuplicateHeader Class
3+
* RTCKit\SIP\Exception\InvalidDuplicateHeaderException Class
44
*/
55
declare(strict_types = 1);
66

@@ -9,6 +9,6 @@
99
/**
1010
* Exception thrown when encountering duplicates for single value header fields
1111
*/
12-
class InvalidDuplicateHeader extends SIPException
12+
class InvalidDuplicateHeaderException extends SIPException
1313
{
1414
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22
/**
3-
* RTCKit\SIP\Exception\InvalidHeaderParameter Class
3+
* RTCKit\SIP\Exception\InvalidHeaderParameterException Class
44
*/
55
declare(strict_types = 1);
66

@@ -9,6 +9,6 @@
99
/**
1010
* Exception thrown when processing SIP Messages with empty header parameters
1111
*/
12-
class InvalidHeaderParameter extends SIPException
12+
class InvalidHeaderParameterException extends SIPException
1313
{
1414
}

0 commit comments

Comments
 (0)