mirror of
https://github.com/encounter/JSONAPI.git
synced 2026-03-30 11:18:38 -07:00
Rename JSONAPITestLib to JSONAPITesting to fit with naming convention I am adopting going forward. Added OpenAPI JSON schema types. Added default schema types for a handful of Swift primitives.
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
//
|
||||
// OpenAPI.swift
|
||||
// JSONAPI
|
||||
//
|
||||
// Created by Mathew Polzin on 1/13/19.
|
||||
//
|
||||
|
||||
public enum OpenAPI {}
|
||||
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// OpenAPITypes.swift
|
||||
// JSONAPI
|
||||
//
|
||||
// Created by Mathew Polzin on 1/13/19.
|
||||
//
|
||||
|
||||
public protocol OpenAPITyped {
|
||||
var openAPIType: OpenAPI.JSONTypeFormat { get }
|
||||
}
|
||||
|
||||
public extension OpenAPI {
|
||||
enum JSONType: String {
|
||||
case boolean = "boolean"
|
||||
case object = "object"
|
||||
case array = "array"
|
||||
case number = "number"
|
||||
case integer = "integer"
|
||||
case string = "string"
|
||||
}
|
||||
|
||||
enum JSONTypeFormat: Equatable {
|
||||
case boolean(BooleanFormat)
|
||||
case object(ObjectFormat)
|
||||
case array(ArrayFormat)
|
||||
case number(NumberFormat)
|
||||
case integer(IntegerFormat)
|
||||
case string(StringFormat)
|
||||
}
|
||||
}
|
||||
|
||||
public extension OpenAPI.JSONTypeFormat {
|
||||
public enum BooleanFormat: String, Equatable, Codable {
|
||||
case generic = ""
|
||||
}
|
||||
|
||||
public enum ObjectFormat: String, Equatable, Codable {
|
||||
case generic = ""
|
||||
}
|
||||
|
||||
public enum ArrayFormat: String, Equatable, Codable {
|
||||
case generic = ""
|
||||
}
|
||||
|
||||
public enum NumberFormat: String, Equatable, Codable {
|
||||
case generic = ""
|
||||
case float = "float"
|
||||
case double = "double"
|
||||
}
|
||||
|
||||
public enum IntegerFormat: String, Equatable, Codable {
|
||||
case generic = ""
|
||||
case int32 = "int32"
|
||||
case int64 = "int64"
|
||||
}
|
||||
|
||||
public enum StringFormat: String, Equatable, Codable {
|
||||
case generic = ""
|
||||
case byte = "byte"
|
||||
case binary = "binary"
|
||||
case date = "date"
|
||||
case dateTime = "date-time"
|
||||
case password = "password"
|
||||
}
|
||||
|
||||
public var type: OpenAPI.JSONType {
|
||||
switch self {
|
||||
case .boolean:
|
||||
return .boolean
|
||||
case .object:
|
||||
return .object
|
||||
case .array:
|
||||
return .array
|
||||
case .number:
|
||||
return .number
|
||||
case .integer:
|
||||
return .integer
|
||||
case .string:
|
||||
return .string
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// PrimitiveTypes.swift
|
||||
// JSONAPIOpenAPI
|
||||
//
|
||||
// Created by Mathew Polzin on 01/13/19.
|
||||
//
|
||||
|
||||
/**
|
||||
|
||||
Notable omissions in this library's default offerings:
|
||||
|
||||
Base 64 encoded characters:
|
||||
.string(.byte)
|
||||
|
||||
Any sequence of octets:
|
||||
.string(.binary)
|
||||
|
||||
RFC3339 full-date:
|
||||
.string(.date)
|
||||
|
||||
RFC3339 date-time:
|
||||
.string(.dateTime)
|
||||
|
||||
A hint to UIs to obscure input:
|
||||
.string(.password)
|
||||
|
||||
An object:
|
||||
.object(.generic)
|
||||
|
||||
**/
|
||||
|
||||
extension String: OpenAPITyped {
|
||||
public var openAPIType: OpenAPI.JSONTypeFormat {
|
||||
return .string(.generic)
|
||||
}
|
||||
}
|
||||
|
||||
extension Bool: OpenAPITyped {
|
||||
public var openAPIType: OpenAPI.JSONTypeFormat {
|
||||
return .boolean(.generic)
|
||||
}
|
||||
}
|
||||
|
||||
extension Array: OpenAPITyped {
|
||||
public var openAPIType: OpenAPI.JSONTypeFormat {
|
||||
return .array(.generic)
|
||||
}
|
||||
}
|
||||
|
||||
extension Double: OpenAPITyped {
|
||||
public var openAPIType: OpenAPI.JSONTypeFormat {
|
||||
return .number(.double)
|
||||
}
|
||||
}
|
||||
|
||||
extension Float: OpenAPITyped {
|
||||
public var openAPIType: OpenAPI.JSONTypeFormat {
|
||||
return .number(.float)
|
||||
}
|
||||
}
|
||||
|
||||
extension Int: OpenAPITyped {
|
||||
public var openAPIType: OpenAPI.JSONTypeFormat {
|
||||
return .integer(.generic)
|
||||
}
|
||||
}
|
||||
|
||||
extension Int32: OpenAPITyped {
|
||||
public var openAPIType: OpenAPI.JSONTypeFormat {
|
||||
return .integer(.int32)
|
||||
}
|
||||
}
|
||||
|
||||
extension Int64: OpenAPITyped {
|
||||
public var openAPIType: OpenAPI.JSONTypeFormat {
|
||||
return .integer(.int64)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user