@@ -8,107 +8,46 @@ namespace Microsoft.AspNet.Http.Extensions
8
8
/// <summary>
9
9
/// A helper class for constructing encoded Uris for use in headers and other Uris.
10
10
/// </summary>
11
- public class UriHelper
11
+ public static class UriHelper
12
12
{
13
- public UriHelper ( )
14
- {
15
- }
16
-
17
- public UriHelper ( HttpRequest request )
18
- {
19
- Scheme = request . Scheme ;
20
- Host = request . Host ;
21
- PathBase = request . PathBase ;
22
- Path = request . Path ;
23
- Query = request . QueryString ;
24
- // Fragment is not a valid request field.
25
- }
26
-
27
- public UriHelper ( Uri uri )
28
- {
29
- Scheme = uri . Scheme ;
30
- Host = HostString . FromUriComponent ( uri ) ;
31
- // Assume nothing is being put in PathBase
32
- Path = PathString . FromUriComponent ( uri ) ;
33
- Query = QueryString . FromUriComponent ( uri ) ;
34
- Fragment = FragmentString . FromUriComponent ( uri ) ;
35
- }
36
-
37
- public string Scheme { get ; set ; }
38
-
39
- public HostString Host { get ; set ; }
40
-
41
- public PathString PathBase { get ; set ; }
42
-
43
- public PathString Path { get ; set ; }
44
-
45
- public QueryString Query { get ; set ; }
46
-
47
- public FragmentString Fragment { get ; set ; }
48
-
49
- public bool IsFullUri
50
- {
51
- get { return ! string . IsNullOrEmpty ( Scheme ) && Host . HasValue ; }
52
- }
53
-
54
- // Always returns at least '/'
55
- public string GetPartialUri ( )
56
- {
57
- string path = ( PathBase . HasValue || Path . HasValue ) ? ( PathBase + Path ) . ToString ( ) : "/" ;
58
- return path + Query + Fragment ;
59
- }
60
-
61
- // Always returns at least 'scheme://host/'
62
- public string GetFullUri ( )
63
- {
64
- if ( string . IsNullOrEmpty ( Scheme ) )
65
- {
66
- throw new InvalidOperationException ( "Missing Scheme" ) ;
67
- }
68
- if ( ! Host . HasValue )
69
- {
70
- throw new InvalidOperationException ( "Missing Host" ) ;
71
- }
72
-
73
- string path = ( PathBase . HasValue || Path . HasValue ) ? ( PathBase + Path ) . ToString ( ) : "/" ;
74
- return Scheme + "://" + Host + path + Query + Fragment ;
75
- }
76
-
77
- public override string ToString ( )
78
- {
79
- return IsFullUri ? GetFullUri ( ) : GetPartialUri ( ) ;
80
- }
81
-
82
- public static string Create ( PathString pathBase ,
13
+ public static string Encode ( PathString pathBase ,
83
14
PathString path = new PathString ( ) ,
84
15
QueryString query = new QueryString ( ) ,
85
16
FragmentString fragment = new FragmentString ( ) )
86
17
{
87
- return new UriHelper ( )
88
- {
89
- PathBase = pathBase ,
90
- Path = path ,
91
- Query = query ,
92
- Fragment = fragment
93
- } . GetPartialUri ( ) ;
18
+ string combinePath = ( pathBase . HasValue || path . HasValue ) ? ( pathBase + path ) . ToString ( ) : "/" ;
19
+ return combinePath + query + fragment ;
94
20
}
95
21
96
- public static string Create ( string scheme ,
22
+ public static string Encode ( string scheme ,
97
23
HostString host ,
98
24
PathString pathBase = new PathString ( ) ,
99
25
PathString path = new PathString ( ) ,
100
26
QueryString query = new QueryString ( ) ,
101
27
FragmentString fragment = new FragmentString ( ) )
102
28
{
103
- return new UriHelper ( )
29
+ string combinePath = ( pathBase . HasValue || path . HasValue ) ? ( pathBase + path ) . ToString ( ) : "/" ;
30
+ return scheme + "://" + host + combinePath + query + fragment ;
31
+ }
32
+
33
+ public static string Encode ( Uri uri )
34
+ {
35
+ if ( uri . IsAbsoluteUri )
36
+ {
37
+ return Encode (
38
+ scheme : uri . Scheme ,
39
+ host : HostString . FromUriComponent ( uri ) ,
40
+ pathBase : PathString . FromUriComponent ( uri ) ,
41
+ query : QueryString . FromUriComponent ( uri ) ,
42
+ fragment : FragmentString . FromUriComponent ( uri ) ) ;
43
+ }
44
+ else
104
45
{
105
- Scheme = scheme ,
106
- Host = host ,
107
- PathBase = pathBase ,
108
- Path = path ,
109
- Query = query ,
110
- Fragment = fragment
111
- } . GetFullUri ( ) ;
46
+ return Encode (
47
+ pathBase : PathString . FromUriComponent ( uri ) ,
48
+ query : QueryString . FromUriComponent ( uri ) ,
49
+ fragment : FragmentString . FromUriComponent ( uri ) ) ;
50
+ }
112
51
}
113
52
}
114
53
}
0 commit comments