@@ -31,6 +31,9 @@ public struct HttpUrl {
31
31
/// Fragment of the url, e.g. `#foo`
32
32
public private( set) var fragment : String ?
33
33
34
+ /// Appends trailing slash at the end of the path, e.g. `localhost.com/any/path/`
35
+ public private( set) var isTrailingSlashEnabled : Bool
36
+
34
37
///
35
38
/// Initialize a HttpUrl object
36
39
///
@@ -41,21 +44,24 @@ public struct HttpUrl {
41
44
/// - Parameter resource: The resource, default: `nil`
42
45
/// - Parameter query: The query, default: `[:]`
43
46
/// - Parameter fragment: The fragment, default: `nil`
47
+ /// - Parameter trailingSlashEnabled: Sets ``HttpUrl/isTrailingSlashEnabled``, default: `true`
44
48
///
45
49
public init ( scheme: String = " https " ,
46
50
host: String ,
47
51
port: Int = 80 ,
48
52
path: [ String ] = [ ] ,
49
53
resource: String ? = nil ,
50
54
query: [ String : String ] = [ : ] ,
51
- fragment: String ? = nil ) {
55
+ fragment: String ? = nil ,
56
+ trailingSlashEnabled: Bool = true ) {
52
57
self . scheme = scheme
53
58
self . host = host
54
59
self . port = port
55
60
self . path = path
56
61
self . resource = resource
57
62
self . query = query
58
63
self . fragment = fragment
64
+ self . isTrailingSlashEnabled = trailingSlashEnabled
59
65
}
60
66
}
61
67
@@ -139,7 +145,9 @@ public extension HttpUrl {
139
145
path += ( resource. hasPrefix ( " / " ) ? resource : " / " + resource)
140
146
}
141
147
else {
142
- path += " / "
148
+ if isTrailingSlashEnabled {
149
+ path += " / "
150
+ }
143
151
}
144
152
components. path = path
145
153
components. fragment = fragment
0 commit comments