Skip to content
This repository was archived by the owner on Jan 30, 2020. It is now read-only.

Commit d0e7648

Browse files
committed

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

src/Request.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,30 @@ public function isConnect()
491491
return ($this->method === self::METHOD_CONNECT);
492492
}
493493

494+
/**
495+
* Is the request a Javascript XMLHttpRequest?
496+
*
497+
* Should work with Prototype/Script.aculo.us, possibly others.
498+
*
499+
* @return boolean
500+
*/
501+
public function isXmlHttpRequest()
502+
{
503+
$header = $this->headers()->get('X_REQUESTED_WITH');
504+
return false !== $header && $header->getFieldValue() == 'XMLHttpRequest';
505+
}
506+
507+
/**
508+
* Is this a Flash request?
509+
*
510+
* @return boolean
511+
*/
512+
public function isFlashRequest()
513+
{
514+
$header = $this->headers()->get('USER_AGENT');
515+
return false !== $header && stristr($header->getFieldValue(), ' flash');
516+
}
517+
494518
/**
495519
* Return the formatted request line (first line) for this http request
496520
*

test/RequestTest.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,33 @@ public function testRequestCanBeCastToAString()
141141
$this->assertEquals("GET / HTTP/1.1\r\n\r\nfoo=bar&bar=baz", $request->toString());
142142
}
143143

144+
public function testRequestIsXmlHttpRequest()
145+
{
146+
$request = new Request();
147+
$this->assertFalse($request->isXmlHttpRequest());
144148

149+
$request = new Request();
150+
$request->headers()->addHeaderLine('X_REQUESTED_WITH', 'FooBazBar');
151+
$this->assertFalse($request->isXmlHttpRequest());
145152

153+
$request = new Request();
154+
$request->headers()->addHeaderLine('X_REQUESTED_WITH', 'XMLHttpRequest');
155+
$this->assertTrue($request->isXmlHttpRequest());
156+
}
157+
158+
public function testRequestIsFlashRequest()
159+
{
160+
$request = new Request();
161+
$this->assertFalse($request->isFlashRequest());
162+
163+
$request = new Request();
164+
$request->headers()->addHeaderLine('USER_AGENT', 'FooBazBar');
165+
$this->assertFalse($request->isFlashRequest());
166+
167+
$request = new Request();
168+
$request->headers()->addHeaderLine('USER_AGENT', 'Shockwave Flash');
169+
$this->assertTrue($request->isFlashRequest());
170+
}
146171

147172
/**
148173
* PHPUNIT DATA PROVIDER

0 commit comments

Comments
 (0)