Skip to content

Commit 279cb83

Browse files
authored
Merge pull request #24 from JeronimoPaganini/patch-1
Supporting [String]
2 parents 089470c + d952c80 commit 279cb83

File tree

2 files changed

+259
-22
lines changed

2 files changed

+259
-22
lines changed

Sources/VaporSecurityHeaders/Configurations/ContentSecurityPolicyConfiguration.swift

Lines changed: 130 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,13 @@ public class ContentSecurityPolicy {
100100

101101
@discardableResult
102102
public func baseUri(sources: String...) -> ContentSecurityPolicy {
103-
policy.append("base-uri \(sources.joined(separator: " "))")
103+
join(sources: sources, to: "base-uri")
104+
return self
105+
}
106+
107+
@discardableResult
108+
public func baseUri(sources: [String]) -> ContentSecurityPolicy {
109+
join(sources: sources, to: "base-uri")
104110
return self
105111
}
106112

@@ -112,79 +118,157 @@ public class ContentSecurityPolicy {
112118

113119
@discardableResult
114120
public func childSrc(sources: String...) -> ContentSecurityPolicy {
115-
policy.append("child-src \(sources.joined(separator: " "))")
121+
join(sources: sources, to: "child-src")
122+
return self
123+
}
124+
125+
@discardableResult
126+
public func childSrc(sources: [String]) -> ContentSecurityPolicy {
127+
join(sources: sources, to: "child-src")
116128
return self
117129
}
118130

119131
@discardableResult
120132
public func connectSrc(sources: String...) -> ContentSecurityPolicy {
121-
policy.append("connect-src \(sources.joined(separator: " "))")
133+
join(sources: sources, to: "connect-src")
134+
return self
135+
}
136+
137+
@discardableResult
138+
public func connectSrc(sources: [String]) -> ContentSecurityPolicy {
139+
join(sources: sources, to: "connect-src")
122140
return self
123141
}
124142

125143
@discardableResult
126144
public func defaultSrc(sources: String...) -> ContentSecurityPolicy {
127-
policy.append("default-src \(sources.joined(separator: " "))")
145+
join(sources: sources, to: "default-src")
146+
return self
147+
}
148+
149+
@discardableResult
150+
public func defaultSrc(sources: [String]) -> ContentSecurityPolicy {
151+
join(sources: sources, to: "default-src")
128152
return self
129153
}
130154

131155
@discardableResult
132156
public func fontSrc(sources: String...) -> ContentSecurityPolicy {
133-
policy.append("font-src \(sources.joined(separator: " "))")
157+
join(sources: sources, to: "font-src")
158+
return self
159+
}
160+
161+
@discardableResult
162+
public func fontSrc(sources: [String]) -> ContentSecurityPolicy {
163+
join(sources: sources, to: "font-src")
134164
return self
135165
}
136166

137167
@discardableResult
138168
public func formAction(sources: String...) -> ContentSecurityPolicy {
139-
policy.append("form-action \(sources.joined(separator: " "))")
169+
join(sources: sources, to: "form-action")
170+
return self
171+
}
172+
173+
@discardableResult
174+
public func formAction(sources: [String]) -> ContentSecurityPolicy {
175+
join(sources: sources, to: "form-action")
140176
return self
141177
}
142178

143179
@discardableResult
144180
public func frameAncestors(sources: String...) -> ContentSecurityPolicy {
145-
policy.append("frame-ancestors \(sources.joined(separator: " "))")
181+
join(sources: sources, to: "frame-ancestors")
182+
return self
183+
}
184+
185+
@discardableResult
186+
public func frameAncestors(sources: [String]) -> ContentSecurityPolicy {
187+
join(sources: sources, to: "frame-ancestors")
146188
return self
147189
}
148190

149191
@discardableResult
150192
public func frameSrc(sources: String...) -> ContentSecurityPolicy {
151-
policy.append("frame-src \(sources.joined(separator: " "))")
193+
join(sources: sources, to: "frame-src")
194+
return self
195+
}
196+
197+
@discardableResult
198+
public func frameSrc(sources: [String]) -> ContentSecurityPolicy {
199+
join(sources: sources, to: "frame-src")
152200
return self
153201
}
154202

155203
@discardableResult
156204
public func imgSrc(sources: String...) -> ContentSecurityPolicy {
157-
policy.append("img-src \(sources.joined(separator: " "))")
205+
join(sources: sources, to: "img-src")
206+
return self
207+
}
208+
209+
@discardableResult
210+
public func imgSrc(sources: [String]) -> ContentSecurityPolicy {
211+
join(sources: sources, to: "img-src")
158212
return self
159213
}
160214

161215
@discardableResult
162216
public func manifestSrc(sources: String...) -> ContentSecurityPolicy {
163-
policy.append("manifest-src \(sources.joined(separator: " "))")
217+
join(sources: sources, to: "manifest-src")
218+
return self
219+
}
220+
221+
@discardableResult
222+
public func manifestSrc(sources: [String]) -> ContentSecurityPolicy {
223+
join(sources: sources, to: "manifest-src")
164224
return self
165225
}
166226

167227
@discardableResult
168228
public func mediaSrc(sources: String...) -> ContentSecurityPolicy {
169-
policy.append("media-src \(sources.joined(separator: " "))")
229+
join(sources: sources, to: "media-src")
230+
return self
231+
}
232+
233+
@discardableResult
234+
public func mediaSrc(sources: [String]) -> ContentSecurityPolicy {
235+
join(sources: sources, to: "media-src")
170236
return self
171237
}
172238

173239
@discardableResult
174240
public func objectSrc(sources: String...) -> ContentSecurityPolicy {
175-
policy.append("object-src \(sources.joined(separator: " "))")
241+
join(sources: sources, to: "object-src")
242+
return self
243+
}
244+
245+
@discardableResult
246+
public func objectSrc(sources: [String]) -> ContentSecurityPolicy {
247+
join(sources: sources, to: "object-src")
176248
return self
177249
}
178250

179251
@discardableResult
180252
public func pluginTypes(types: String...) -> ContentSecurityPolicy {
181-
policy.append("plugin-types \(types.joined(separator: " "))")
253+
join(sources: types, to: "plugin-types")
254+
return self
255+
}
256+
257+
@discardableResult
258+
public func pluginTypes(types: [String]) -> ContentSecurityPolicy {
259+
join(sources: types, to: "plugin-types")
182260
return self
183261
}
184262

185263
@discardableResult
186264
public func requireSriFor(values: String...) -> ContentSecurityPolicy {
187-
policy.append("require-sri-for \(values.joined(separator: " "))")
265+
join(sources: values, to: "require-sri-for")
266+
return self
267+
}
268+
269+
@discardableResult
270+
public func requireSriFor(values: [String]) -> ContentSecurityPolicy {
271+
join(sources: values, to: "require-sri-for")
188272
return self
189273
}
190274

@@ -205,19 +289,37 @@ public class ContentSecurityPolicy {
205289

206290
@discardableResult
207291
public func sandbox(values: String...) -> ContentSecurityPolicy {
208-
policy.append("sandbox \(values.joined(separator: " "))")
292+
join(sources: values, to: "sandbox")
293+
return self
294+
}
295+
296+
@discardableResult
297+
public func sandbox(values: [String]) -> ContentSecurityPolicy {
298+
join(sources: values, to: "sandbox")
209299
return self
210300
}
211301

212302
@discardableResult
213303
public func scriptSrc(sources: String...) -> ContentSecurityPolicy {
214-
policy.append("script-src \(sources.joined(separator: " "))")
304+
join(sources: sources, to: "script-src")
305+
return self
306+
}
307+
308+
@discardableResult
309+
public func scriptSrc(sources: [String]) -> ContentSecurityPolicy {
310+
join(sources: sources, to: "script-src")
215311
return self
216312
}
217313

218314
@discardableResult
219315
public func styleSrc(sources: String...) -> ContentSecurityPolicy {
220-
policy.append("style-src \(sources.joined(separator: " "))")
316+
join(sources: sources, to: "style-src")
317+
return self
318+
}
319+
320+
@discardableResult
321+
public func styleSrc(sources: [String]) -> ContentSecurityPolicy {
322+
join(sources: sources, to: "style-src")
221323
return self
222324
}
223325

@@ -229,9 +331,19 @@ public class ContentSecurityPolicy {
229331

230332
@discardableResult
231333
public func workerSrc(sources: String...) -> ContentSecurityPolicy {
232-
policy.append("worker-src \(sources.joined(separator: " "))")
334+
join(sources: sources, to: "worker-src")
335+
return self
336+
}
337+
338+
@discardableResult
339+
public func workerSrc(sources: [String]) -> ContentSecurityPolicy {
340+
join(sources: sources, to: "worker-src")
233341
return self
234342
}
235343

344+
private func join(sources: [String], to directive: String) {
345+
policy.append("\(directive) \(sources.joined(separator: " "))")
346+
}
347+
236348
public init() {}
237349
}

0 commit comments

Comments
 (0)