aboutsummaryrefslogtreecommitdiff
path: root/Mammoth/Couscous/java/net/URI.cs
blob: 6a18c23d08c198accf29b3bda840b8af9a32cee0 (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
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 basePath = System.IO.Path.GetDirectoryName(path);
                return new URI(System.IO.Path.Combine(basePath, relativeUri));
            }
        }
    }
}