Skip to content

Commit

Permalink
Merge pull request #99 from mattpolzin/bugfix/reference-schema-fragments
Browse files Browse the repository at this point in the history
Bugfix/reference schema fragments
  • Loading branch information
mattpolzin authored Jul 25, 2020
2 parents 7160eac + b38aa24 commit 31daf62
Show file tree
Hide file tree
Showing 4 changed files with 454 additions and 0 deletions.
33 changes: 33 additions & 0 deletions Sources/OpenAPIKit/Schema Object/JSONSchemaFragment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ public enum JSONSchemaFragment: Equatable {
GeneralContext,
ObjectContext
)

case reference(JSONReference<JSONSchema>)
}

extension JSONSchemaFragment {
Expand Down Expand Up @@ -223,6 +225,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.format
case .reference:
return nil
}
}

Expand All @@ -236,6 +240,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.description
case .reference:
return nil
}
}

Expand All @@ -249,6 +255,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.title
case .reference:
return nil
}
}

Expand All @@ -262,6 +270,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.nullable
case .reference:
return nil
}
}

Expand All @@ -275,6 +285,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.deprecated
case .reference:
return nil
}
}

Expand All @@ -288,6 +300,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.externalDocs
case .reference:
return nil
}
}

Expand All @@ -301,6 +315,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.allowedValues
case .reference:
return nil
}
}

Expand All @@ -314,6 +330,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.example
case .reference:
return nil
}
}

Expand All @@ -327,6 +345,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.readOnly
case .reference:
return nil
}
}

Expand All @@ -340,6 +360,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
.array(let generalContext, _),
.object(let generalContext, _):
return generalContext.writeOnly
case .reference:
return nil
}
}
}
Expand Down Expand Up @@ -428,6 +450,10 @@ extension JSONSchemaFragment: Encodable {
try container.encodeIfPresent(objectContext.properties, forKey: .properties)
try container.encodeIfPresent(objectContext.additionalProperties, forKey: .additionalProperties)
try container.encodeIfPresent(objectContext.required, forKey: .required)
case .reference(let reference):
var container = encoder.singleValueContainer()

try container.encode(reference)
}
}
}
Expand Down Expand Up @@ -509,6 +535,13 @@ extension JSONSchemaFragment.ObjectContext: Decodable {
extension JSONSchemaFragment: Decodable {
public init(from decoder: Decoder) throws {

if let singleValueContainer = try? decoder.singleValueContainer() {
if let ref = try? singleValueContainer.decode(JSONReference<JSONSchema>.self) {
self = .reference(ref)
return
}
}

let generalContext = try GeneralContext(from: decoder)

let generalContainer = try decoder.container(keyedBy: JSONSchemaFragment.GeneralCodingKeys.self)
Expand Down
Loading

0 comments on commit 31daf62

Please sign in to comment.