327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
-
+
|
of_url_verify_escaped(OFString *string, OFCharacterSet *characterSet)
{
void *pool = objc_autoreleasePoolPush();
characterSet = [[[OFInvertedCharacterSetWithoutPercent alloc]
initWithCharacterSet: characterSet] autorelease];
if ([string indexOfCharacterFromSet: characterSet] != OF_NOT_FOUND)
if ([string indexOfCharacterFromSet: characterSet] != OFNotFound)
@throw [OFInvalidFormatException exception];
objc_autoreleasePoolPop(pool);
}
@implementation OFCharacterSet (URLCharacterSets)
+ (OFCharacterSet *)URLSchemeAllowedCharacterSet
|
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
|
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
|
-
+
-
+
|
copy];
else {
OFMutableString *path = [OFMutableString
stringWithString:
(URL->_URLEncodedPath != nil
? URL->_URLEncodedPath
: @"/")];
of_range_t range = [path
OFRange range = [path
rangeOfString: @"/"
options: OF_STRING_SEARCH_BACKWARDS];
if (range.location == OF_NOT_FOUND)
if (range.location == OFNotFound)
@throw [OFInvalidFormatException
exception];
range.location++;
range.length = path.length - range.location;
[path replaceCharactersInRange: range
|
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
|
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
|
-
+
|
}
- (OFString *)host
{
if ([_URLEncodedHost hasPrefix: @"["] &&
[_URLEncodedHost hasSuffix: @"]"]) {
OFString *host = [_URLEncodedHost substringWithRange:
of_range(1, _URLEncodedHost.length - 2)];
OFMakeRange(1, _URLEncodedHost.length - 2)];
if (!of_url_is_ipv6_host(host))
@throw [OFInvalidArgumentException exception];
return host;
}
|