This website works better with JavaScript.
Home
Explore
Help
Sign In
p3k
/
XRay
mirror of
https://github.com/aaronpk/XRay.git
Watch
1
Star
0
Fork
0
Code
Issues
0
Releases
77
Wiki
Activity
Browse Source
handle the case where the server returns multiple content-type headers
pull/78/head
v1.6.7
Aaron Parecki
6 years ago
parent
5a0fb35d72
commit
43db6098fc
3 changed files
with
37 additions
and
3 deletions
Split View
Diff Options
Show Stats
Download Patch File
Download Diff File
+11
-3
lib/XRay/Fetcher.php
+11
-0
tests/ParseTest.php
+15
-0
tests/data/source.example.com/multiple-content-type
+ 11
- 3
lib/XRay/Fetcher.php
View File
@ -89,9 +89,17 @@ class Fetcher {
// Show an error if the content type returned is not a recognized type
$format
=
null
;
if
(
isset
(
$result
[
'headers'
][
'Content-Type'
])
&&
is_string
(
$result
[
'headers'
][
'Content-Type'
]))
{
$type
=
new
MediaType
(
$result
[
'headers'
][
'Content-Type'
]);
$format
=
$type
->
format
;
if
(
isset
(
$result
[
'headers'
][
'Content-Type'
]))
{
$contentType
=
null
;
if
(
is_array
(
$result
[
'headers'
][
'Content-Type'
]))
{
$contentType
=
$result
[
'headers'
][
'Content-Type'
][
0
];
}
elseif
(
is_string
(
$result
[
'headers'
][
'Content-Type'
]))
{
$contentType
=
$result
[
'headers'
][
'Content-Type'
];
}
if
(
$contentType
)
{
$type
=
new
MediaType
(
$contentType
);
$format
=
$type
->
format
;
}
}
if
(
!
$format
||
+ 11
- 0
tests/ParseTest.php
View File
@ -940,4 +940,15 @@ class ParseTest extends PHPUnit_Framework_TestCase {
$this
->
assertEquals
(
'XRay should use this content since the JSON in the rel-alternate is invalid'
,
$data
[
'data'
][
'content'
][
'text'
]);
}
public
function
testMultipleContentTypeHeaders
()
{
$url
=
'http://source.example.com/multiple-content-type'
;
$response
=
$this
->
parse
([
'url'
=>
$url
]);
$body
=
$response
->
getContent
();
$this
->
assertEquals
(
200
,
$response
->
getStatusCode
());
$data
=
json_decode
(
$body
,
true
);
$this
->
assertEquals
(
'mf2+html'
,
$data
[
'source-format'
]);
}
}
+ 15
- 0
tests/data/source.example.com/multiple-content-type
View File
@ -0,0 +1,15 @@
HTTP/1.1 200 OK
Server: Apache
Date: Wed, 09 Dec 2015 03:29:14 GMT
Content-Type: text/html; charset=utf-8
Content-Type: text/html
Connection: keep-alive
<html>
<head>
<title>Test</title>
</head>
<body class="h-entry">
<p class="p-content">This page has a link to <a href="http://target.example.com">target.example.com</a> and some <b>formatted text</b> but is in a p-content element so is plaintext.</p>
</body>
</html>
Write
Preview
Loading…
Cancel
Save