@@ -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