Toggle navigation
Toggle navigation
This project
Loading...
Sign in
iOS
/
asi-http-request
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Ben Copsey
2010-10-01 17:04:22 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
44772d43be62ff9365f9f86cb1bf3797dc59ad59
44772d43
1 parent
dcb106e4
Trim whitespace and quotes from urls, prevent download data urls
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
8 deletions
Classes/ASIWebPageRequest.m
Classes/ASIWebPageRequest.m
View file @
44772d4
...
...
@@ -20,6 +20,7 @@ static NSMutableArray *requestsUsingXMLParser = nil;
-
(
void
)
updateResourceURLs
;
-
(
void
)
parseAsHTML
;
-
(
void
)
parseAsCSS
;
-
(
void
)
addURLToFetch
:(
NSString
*
)
newURL
;
+
(
NSArray
*
)
CSSURLsFromString
:(
NSString
*
)
string
;
@property
(
retain
,
nonatomic
)
ASINetworkQueue
*
externalResourceQueue
;
@property
(
retain
,
nonatomic
)
NSMutableDictionary
*
resourceList
;
...
...
@@ -68,15 +69,11 @@ static NSMutableArray *requestsUsingXMLParser = nil;
[
self
setResourceList
:[
NSMutableDictionary
dictionary
]];
for
(
NSString
*
theURL
in
urls
)
{
if
(([[
theURL
substringToIndex
:
1
]
isEqualToString
:
@"'"
]
&&
[[
theURL
substringFromIndex
:[
theURL
length
]
-
1
]
isEqualToString
:
@"'"
])
||
([[
theURL
substringToIndex
:
1
]
isEqualToString
:
@"
\"
"
]
&&
[[
theURL
substringFromIndex
:[
theURL
length
]
-
1
]
isEqualToString
:
@"
\"
"
]))
{
theURL
=
[
theURL
substringWithRange
:
NSMakeRange
(
1
,[
theURL
length
]
-
2
)];
}
NSURL
*
newURL
=
[
NSURL
URLWithString
:
theURL
relativeToURL
:[
self
url
]];
if
(
newURL
)
{
[
[
self
resourceList
]
setObject
:[
NSMutableDictionary
dictionary
]
forKey
:
theURL
];
[
self
addURLToFetch
:
theURL
];
}
}
if
(
!
[[
self
resourceList
]
count
])
{
[
super
requestFinished
];
[
super
markAsFinished
];
...
...
@@ -95,6 +92,7 @@ static NSMutableArray *requestsUsingXMLParser = nil;
ASIWebPageRequest
*
externalResourceRequest
=
[
ASIWebPageRequest
requestWithURL
:[
NSURL
URLWithString
:
theURL
relativeToURL
:[
self
url
]]];
[
externalResourceRequest
setRequestHeaders
:[
self
requestHeaders
]];
[
externalResourceRequest
setDownloadCache
:[
self
downloadCache
]];
[
externalResourceRequest
setCachePolicy
:[
self
cachePolicy
]];
[
externalResourceRequest
setUserInfo
:[
NSDictionary
dictionaryWithObject
:
theURL
forKey
:
@"Path"
]];
[[
self
externalResourceQueue
]
addOperation
:
externalResourceRequest
];
}
...
...
@@ -168,6 +166,7 @@ static NSMutableArray *requestsUsingXMLParser = nil;
ASIWebPageRequest
*
externalResourceRequest
=
[
ASIWebPageRequest
requestWithURL
:[
NSURL
URLWithString
:
theURL
relativeToURL
:[
self
url
]]];
[
externalResourceRequest
setRequestHeaders
:[
self
requestHeaders
]];
[
externalResourceRequest
setDownloadCache
:[
self
downloadCache
]];
[
externalResourceRequest
setCachePolicy
:[
self
cachePolicy
]];
[
externalResourceRequest
setUserInfo
:[
NSDictionary
dictionaryWithObject
:
theURL
forKey
:
@"Path"
]];
[[
self
externalResourceQueue
]
addOperation
:
externalResourceRequest
];
}
...
...
@@ -238,6 +237,7 @@ static NSMutableArray *requestsUsingXMLParser = nil;
[
self
setResponseHeaders
:
newHeaders
];
[
super
requestFinished
];
[[
self
downloadCache
]
storeResponseForRequest
:
self
maxAge
:[
self
secondsToCache
]];
[
super
markAsFinished
];
}
...
...
@@ -271,10 +271,10 @@ static NSMutableArray *requestsUsingXMLParser = nil;
if
([[
nodeName
lowercaseString
]
isEqualToString
:
@"style"
])
{
NSArray
*
externalResources
=
[[
self
class
]
CSSURLsFromString
:
value
];
for
(
NSString
*
theURL
in
externalResources
)
{
[
resourceList
setObject
:[
NSMutableDictionary
dictionary
]
forKey
:
theURL
];
[
self
addURLToFetch
:
theURL
];
}
}
else
{
[
resourceList
setObject
:[
NSMutableDictionary
dictionary
]
forKey
:
value
];
[
self
addURLToFetch
:
value
];
}
if
(
nodes
->
nodeTab
[
i
]
->
type
!=
XML_NAMESPACE_DECL
)
{
nodes
->
nodeTab
[
i
]
=
NULL
;
...
...
@@ -285,6 +285,16 @@ static NSMutableArray *requestsUsingXMLParser = nil;
xmlXPathFreeContext
(
xpathCtx
);
}
-
(
void
)
addURLToFetch
:
(
NSString
*
)
newURL
{
// Get rid of any surrounding whitespace
newURL
=
[
newURL
stringByTrimmingCharactersInSet
:[
NSCharacterSet
whitespaceAndNewlineCharacterSet
]];
// Don't attempt to fetch data URIs
if
(
!
[[[
newURL
substringToIndex
:
5
]
lowercaseString
]
isEqualToString
:
@"data:"
])
{
[[
self
resourceList
]
setObject
:[
NSMutableDictionary
dictionary
]
forKey
:
newURL
];
}
}
-
(
void
)
updateResourceURLs
{
...
...
@@ -409,7 +419,8 @@ static NSMutableArray *requestsUsingXMLParser = nil;
if
(
!
theURL
)
{
break
;
}
[
urls
addObject
:
theURL
];
// Remove any quotes around the url
[
urls
addObject
:[
theURL
stringByTrimmingCharactersInSet
:[
NSCharacterSet
characterSetWithCharactersInString
:
@"
\"
'"
]]];
}
return
urls
;
}
...
...
Please
register
or
login
to post a comment