Skip to content

Commit 528e0dc

Browse files
authored
Merge pull request #472 from mattpolzin/feature/445/xml-object-oas-320
Make OAS 3.2.0 changes to the OpenAPI.XML type
2 parents 3b57c7d + 9b4ea0c commit 528e0dc

File tree

6 files changed

+336
-58
lines changed

6 files changed

+336
-58
lines changed

Sources/OpenAPIKit/Schema Object/DereferencedJSONSchema.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ public enum DereferencedJSONSchema: Equatable, JSONSchemaContext, Sendable {
152152
// See `JSONSchemaContext`
153153
public var deprecated: Bool { jsonSchema.deprecated }
154154

155+
// See `JSONSchemaContext`
156+
public var xml: OpenAPI.XML? { jsonSchema.xml }
157+
155158
// See `JSONSchemaContext`
156159
public var vendorExtensions: [String : AnyCodable] {
157160
// NOTE: this doesnot just do `jsonSchema.vendorExtensions` because of some wild

Sources/OpenAPIKit/Schema Object/JSONSchema.swift

Lines changed: 80 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,13 @@ public struct JSONSchema: JSONSchemaContext, HasWarnings, Sendable {
269269
}
270270
}
271271

272+
public var xml: OpenAPI.XML? {
273+
coreContext.xml
274+
}
275+
272276
// See `JSONSchemaContext`
273277
public var inferred: Bool {
274-
return coreContext.inferred
278+
coreContext.inferred
275279
}
276280
}
277281

@@ -1129,7 +1133,8 @@ extension JSONSchema {
11291133
examples: [AnyCodable] = [],
11301134
anchor: String? = nil,
11311135
dynamicAnchor: String? = nil,
1132-
defs: OrderedDictionary<String, JSONSchema> = [:]
1136+
defs: OrderedDictionary<String, JSONSchema> = [:],
1137+
xml: OpenAPI.XML? = nil
11331138
) -> JSONSchema {
11341139
let context = JSONSchema.CoreContext<JSONTypeFormat.BooleanFormat>(
11351140
format: format,
@@ -1146,7 +1151,8 @@ extension JSONSchema {
11461151
examples: examples,
11471152
anchor: anchor,
11481153
dynamicAnchor: dynamicAnchor,
1149-
defs: defs
1154+
defs: defs,
1155+
xml: xml
11501156
)
11511157
return .boolean(context)
11521158
}
@@ -1168,7 +1174,8 @@ extension JSONSchema {
11681174
examples: [AnyCodable] = [],
11691175
anchor: String? = nil,
11701176
dynamicAnchor: String? = nil,
1171-
defs: OrderedDictionary<String, JSONSchema> = [:]
1177+
defs: OrderedDictionary<String, JSONSchema> = [:],
1178+
xml: OpenAPI.XML? = nil
11721179
) -> JSONSchema {
11731180
return .boolean(
11741181
format: format,
@@ -1185,7 +1192,8 @@ extension JSONSchema {
11851192
examples: examples,
11861193
anchor: anchor,
11871194
dynamicAnchor: dynamicAnchor,
1188-
defs: defs
1195+
defs: defs,
1196+
xml: xml
11891197
)
11901198
}
11911199

@@ -1211,7 +1219,8 @@ extension JSONSchema {
12111219
examples: [AnyCodable] = [],
12121220
anchor: String? = nil,
12131221
dynamicAnchor: String? = nil,
1214-
defs: OrderedDictionary<String, JSONSchema> = [:]
1222+
defs: OrderedDictionary<String, JSONSchema> = [:],
1223+
xml: OpenAPI.XML? = nil
12151224
) -> JSONSchema {
12161225
let context = JSONSchema.CoreContext<JSONTypeFormat.AnyFormat>(
12171226
format: format,
@@ -1228,7 +1237,8 @@ extension JSONSchema {
12281237
examples: examples,
12291238
anchor: anchor,
12301239
dynamicAnchor: dynamicAnchor,
1231-
defs: defs
1240+
defs: defs,
1241+
xml: xml
12321242
)
12331243
return .fragment(context)
12341244
}
@@ -1250,7 +1260,8 @@ extension JSONSchema {
12501260
examples: [AnyCodable] = [],
12511261
anchor: String? = nil,
12521262
dynamicAnchor: String? = nil,
1253-
defs: OrderedDictionary<String, JSONSchema> = [:]
1263+
defs: OrderedDictionary<String, JSONSchema> = [:],
1264+
xml: OpenAPI.XML? = nil
12541265
) -> JSONSchema {
12551266
return .fragment(
12561267
format: format,
@@ -1267,7 +1278,8 @@ extension JSONSchema {
12671278
examples: examples,
12681279
anchor: anchor,
12691280
dynamicAnchor: dynamicAnchor,
1270-
defs: defs
1281+
defs: defs,
1282+
xml: xml
12711283
)
12721284
}
12731285

@@ -1301,7 +1313,8 @@ extension JSONSchema {
13011313
examples: [AnyCodable] = [],
13021314
anchor: String? = nil,
13031315
dynamicAnchor: String? = nil,
1304-
defs: OrderedDictionary<String, JSONSchema> = [:]
1316+
defs: OrderedDictionary<String, JSONSchema> = [:],
1317+
xml: OpenAPI.XML? = nil
13051318
) -> JSONSchema {
13061319
let genericContext = JSONSchema.CoreContext<JSONTypeFormat.StringFormat>(
13071320
format: format,
@@ -1318,7 +1331,8 @@ extension JSONSchema {
13181331
examples: examples,
13191332
anchor: anchor,
13201333
dynamicAnchor: dynamicAnchor,
1321-
defs: defs
1334+
defs: defs,
1335+
xml: xml
13221336
)
13231337
let stringContext = JSONSchema.StringContext(
13241338
maxLength: maxLength,
@@ -1352,7 +1366,8 @@ extension JSONSchema {
13521366
examples: [AnyCodable] = [],
13531367
anchor: String? = nil,
13541368
dynamicAnchor: String? = nil,
1355-
defs: OrderedDictionary<String, JSONSchema> = [:]
1369+
defs: OrderedDictionary<String, JSONSchema> = [:],
1370+
xml: OpenAPI.XML? = nil
13561371
) -> JSONSchema {
13571372
return .string(
13581373
format: format,
@@ -1374,7 +1389,8 @@ extension JSONSchema {
13741389
examples: examples,
13751390
anchor: anchor,
13761391
dynamicAnchor: dynamicAnchor,
1377-
defs: defs
1392+
defs: defs,
1393+
xml: xml
13781394
)
13791395
}
13801396

@@ -1403,7 +1419,8 @@ extension JSONSchema {
14031419
examples: [AnyCodable] = [],
14041420
anchor: String? = nil,
14051421
dynamicAnchor: String? = nil,
1406-
defs: OrderedDictionary<String, JSONSchema> = [:]
1422+
defs: OrderedDictionary<String, JSONSchema> = [:],
1423+
xml: OpenAPI.XML? = nil
14071424
) -> JSONSchema {
14081425
let genericContext = JSONSchema.CoreContext<JSONTypeFormat.NumberFormat>(
14091426
format: format,
@@ -1420,7 +1437,8 @@ extension JSONSchema {
14201437
examples: examples,
14211438
anchor: anchor,
14221439
dynamicAnchor: dynamicAnchor,
1423-
defs: defs
1440+
defs: defs,
1441+
xml: xml
14241442
)
14251443
let numbericContext = JSONSchema.NumericContext(
14261444
multipleOf: multipleOf,
@@ -1450,7 +1468,8 @@ extension JSONSchema {
14501468
examples: [AnyCodable] = [],
14511469
anchor: String? = nil,
14521470
dynamicAnchor: String? = nil,
1453-
defs: OrderedDictionary<String, JSONSchema> = [:]
1471+
defs: OrderedDictionary<String, JSONSchema> = [:],
1472+
xml: OpenAPI.XML? = nil
14541473
) -> JSONSchema {
14551474
return .number(
14561475
format: format,
@@ -1470,7 +1489,8 @@ extension JSONSchema {
14701489
examples: examples,
14711490
anchor: anchor,
14721491
dynamicAnchor: dynamicAnchor,
1473-
defs: defs
1492+
defs: defs,
1493+
xml: xml
14741494
)
14751495
}
14761496

@@ -1499,7 +1519,8 @@ extension JSONSchema {
14991519
examples: [AnyCodable] = [],
15001520
anchor: String? = nil,
15011521
dynamicAnchor: String? = nil,
1502-
defs: OrderedDictionary<String, JSONSchema> = [:]
1522+
defs: OrderedDictionary<String, JSONSchema> = [:],
1523+
xml: OpenAPI.XML? = nil
15031524
) -> JSONSchema {
15041525
let genericContext = JSONSchema.CoreContext<JSONTypeFormat.IntegerFormat>(
15051526
format: format,
@@ -1516,7 +1537,8 @@ extension JSONSchema {
15161537
examples: examples,
15171538
anchor: anchor,
15181539
dynamicAnchor: dynamicAnchor,
1519-
defs: defs
1540+
defs: defs,
1541+
xml: xml
15201542
)
15211543
let integerContext = JSONSchema.IntegerContext(
15221544
multipleOf: multipleOf,
@@ -1546,7 +1568,8 @@ extension JSONSchema {
15461568
examples: [AnyCodable] = [],
15471569
anchor: String? = nil,
15481570
dynamicAnchor: String? = nil,
1549-
defs: OrderedDictionary<String, JSONSchema> = [:]
1571+
defs: OrderedDictionary<String, JSONSchema> = [:],
1572+
xml: OpenAPI.XML? = nil
15501573
) -> JSONSchema {
15511574
return .integer(
15521575
format: format,
@@ -1566,7 +1589,8 @@ extension JSONSchema {
15661589
examples: examples,
15671590
anchor: anchor,
15681591
dynamicAnchor: dynamicAnchor,
1569-
defs: defs
1592+
defs: defs,
1593+
xml: xml
15701594
)
15711595
}
15721596

@@ -1596,7 +1620,8 @@ extension JSONSchema {
15961620
examples: [AnyCodable] = [],
15971621
anchor: String? = nil,
15981622
dynamicAnchor: String? = nil,
1599-
defs: OrderedDictionary<String, JSONSchema> = [:]
1623+
defs: OrderedDictionary<String, JSONSchema> = [:],
1624+
xml: OpenAPI.XML? = nil
16001625
) -> JSONSchema {
16011626
let coreContext = JSONSchema.CoreContext<JSONTypeFormat.ObjectFormat>(
16021627
format: format,
@@ -1613,7 +1638,8 @@ extension JSONSchema {
16131638
examples: examples,
16141639
anchor: anchor,
16151640
dynamicAnchor: dynamicAnchor,
1616-
defs: defs
1641+
defs: defs,
1642+
xml: xml
16171643
)
16181644
let objectContext = JSONSchema.ObjectContext(
16191645
properties: properties,
@@ -1651,7 +1677,8 @@ extension JSONSchema {
16511677
examples: [AnyCodable] = [],
16521678
anchor: String? = nil,
16531679
dynamicAnchor: String? = nil,
1654-
defs: OrderedDictionary<String, JSONSchema> = [:]
1680+
defs: OrderedDictionary<String, JSONSchema> = [:],
1681+
xml: OpenAPI.XML? = nil
16551682
) -> JSONSchema {
16561683
let coreContext = JSONSchema.CoreContext<JSONTypeFormat.ArrayFormat>(
16571684
format: format,
@@ -1668,7 +1695,8 @@ extension JSONSchema {
16681695
examples: examples,
16691696
anchor: anchor,
16701697
dynamicAnchor: dynamicAnchor,
1671-
defs: defs
1698+
defs: defs,
1699+
xml: xml
16721700
)
16731701

16741702
let arrayContext = JSONSchema.ArrayContext(
@@ -1704,7 +1732,8 @@ extension JSONSchema {
17041732
discriminator: OpenAPI.Discriminator? = nil,
17051733
anchor: String? = nil,
17061734
dynamicAnchor: String? = nil,
1707-
defs: OrderedDictionary<String, JSONSchema> = [:]
1735+
defs: OrderedDictionary<String, JSONSchema> = [:],
1736+
xml: OpenAPI.XML? = nil
17081737
) -> JSONSchema {
17091738
return .all(
17101739
of: schemas,
@@ -1715,7 +1744,8 @@ extension JSONSchema {
17151744
discriminator: discriminator,
17161745
anchor: anchor,
17171746
dynamicAnchor: dynamicAnchor,
1718-
defs: defs
1747+
defs: defs,
1748+
xml: xml
17191749
)
17201750
)
17211751
}
@@ -1738,7 +1768,8 @@ extension JSONSchema {
17381768
discriminator: OpenAPI.Discriminator? = nil,
17391769
anchor: String? = nil,
17401770
dynamicAnchor: String? = nil,
1741-
defs: OrderedDictionary<String, JSONSchema> = [:]
1771+
defs: OrderedDictionary<String, JSONSchema> = [:],
1772+
xml: OpenAPI.XML? = nil
17421773
) -> JSONSchema {
17431774
return .one(
17441775
of: schemas,
@@ -1749,7 +1780,8 @@ extension JSONSchema {
17491780
discriminator: discriminator,
17501781
anchor: anchor,
17511782
dynamicAnchor: dynamicAnchor,
1752-
defs: defs
1783+
defs: defs,
1784+
xml: xml
17531785
)
17541786
)
17551787
}
@@ -1772,7 +1804,8 @@ extension JSONSchema {
17721804
discriminator: OpenAPI.Discriminator? = nil,
17731805
anchor: String? = nil,
17741806
dynamicAnchor: String? = nil,
1775-
defs: OrderedDictionary<String, JSONSchema> = [:]
1807+
defs: OrderedDictionary<String, JSONSchema> = [:],
1808+
xml: OpenAPI.XML? = nil
17761809
) -> JSONSchema {
17771810
return .any(
17781811
of: schemas,
@@ -1783,7 +1816,8 @@ extension JSONSchema {
17831816
discriminator: discriminator,
17841817
anchor: anchor,
17851818
dynamicAnchor: dynamicAnchor,
1786-
defs: defs
1819+
defs: defs,
1820+
xml: xml
17871821
)
17881822
)
17891823
}
@@ -1803,7 +1837,8 @@ extension JSONSchema {
18031837
discriminator: OpenAPI.Discriminator? = nil,
18041838
anchor: String? = nil,
18051839
dynamicAnchor: String? = nil,
1806-
defs: OrderedDictionary<String, JSONSchema> = [:]
1840+
defs: OrderedDictionary<String, JSONSchema> = [:],
1841+
xml: OpenAPI.XML? = nil
18071842
) -> JSONSchema {
18081843
return .not(
18091844
schema,
@@ -1814,7 +1849,8 @@ extension JSONSchema {
18141849
discriminator: discriminator,
18151850
anchor: anchor,
18161851
dynamicAnchor: dynamicAnchor,
1817-
defs: defs
1852+
defs: defs,
1853+
xml: xml
18181854
)
18191855
)
18201856
}
@@ -1827,11 +1863,20 @@ extension JSONSchema {
18271863
description: String? = nil,
18281864
anchor: String? = nil,
18291865
dynamicAnchor: String? = nil,
1830-
defs: OrderedDictionary<String, JSONSchema> = [:]
1866+
defs: OrderedDictionary<String, JSONSchema> = [:],
1867+
xml: OpenAPI.XML? = nil
18311868
) -> JSONSchema {
18321869
return .reference(
18331870
reference,
1834-
.init(required: required, title: title, description: description, anchor: anchor, dynamicAnchor: dynamicAnchor, defs: defs)
1871+
.init(
1872+
required: required,
1873+
title: title,
1874+
description: description,
1875+
anchor: anchor,
1876+
dynamicAnchor: dynamicAnchor,
1877+
defs: defs,
1878+
xml: xml
1879+
)
18351880
)
18361881
}
18371882
}

0 commit comments

Comments
 (0)