blob: 818d6948c086afbd559d62aa8fa21c9d99ac64de (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
using System;
namespace Mammoth.Couscous.java.net {
internal class URI {
private readonly Uri _uri;
internal URI(string uri) {
try {
_uri = new Uri(uri, UriKind.RelativeOrAbsolute);
} catch (UriFormatException exception) {
throw new URISyntaxException(exception.Message);
}
}
internal URI(Uri uri) {
_uri = uri;
}
internal bool isAbsolute() {
return _uri.IsAbsoluteUri;
}
internal URL toURL() {
return new URL(_uri.ToString());
}
internal URI resolve(string relativeUri) {
if (new URI(relativeUri).isAbsolute()) {
return new URI(relativeUri);
} else if (_uri.IsAbsoluteUri) {
return new URI(new Uri(_uri, relativeUri));
} else {
var path = _uri.ToString();
var lastSlashIndex = path.LastIndexOf("/");
var basePath = lastSlashIndex == -1
? "."
: path.Substring(0, lastSlashIndex + 1);
return new URI(basePath + relativeUri);
}
}
}
}
|