[Swift] various improvements (#16481)

This commit is contained in:
William Cheng
2023-09-03 03:13:01 +08:00
committed by GitHub
parent 8c2de11ac2
commit 69c3f567ce
54 changed files with 291 additions and 308 deletions

View File

@@ -101,13 +101,13 @@ extension NullEncodable: Codable where Wrapped: Codable {
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -68,18 +68,18 @@ import Foundation
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ import Foundation
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -332,8 +332,8 @@ private var credentialStore = SynchronizedDictionary<Int, URLCredential>()
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -101,13 +101,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ internal class Response<T> {
internal convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ internal class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionReques
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ internal struct Validator {
internal static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ internal struct Validator {
internal static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}

View File

@@ -100,13 +100,13 @@ open class Response<T> {
public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) {
let rawHeader = response.allHeaderFields
var header = [String: String]()
var responseHeader = [String: String]()
for (key, value) in rawHeader {
if let key = key.base as? String, let value = value as? String {
header[key] = value
responseHeader[key] = value
}
}
self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData)
self.init(statusCode: response.statusCode, header: responseHeader, body: body, bodyData: bodyData)
}
}

View File

@@ -332,8 +332,8 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let unwrappedData = data, !unwrappedData.isEmpty else {
if let E = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data)))
if let expressibleByNilLiteralType = T.self as? ExpressibleByNilLiteral.Type {
completion(.success(Response(response: httpResponse, body: expressibleByNilLiteralType.init(nilLiteral: ()) as! T, bodyData: data)))
} else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
}
@@ -569,10 +569,9 @@ private class FormDataEncoding: ParameterEncoding {
func mimeType(for url: URL) -> String {
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(),
let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
return "application/octet-stream"
}

View File

@@ -68,18 +68,18 @@ public struct Validator {
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}
@@ -100,18 +100,18 @@ public struct Validator {
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
if let minium = rule.minimum {
if !rule.exclusiveMinimum, !(minium <= numeric) {
if !rule.exclusiveMinimum, minium > numeric {
error.kinds.insert(.minimum)
}
if rule.exclusiveMinimum, !(minium < numeric) {
if rule.exclusiveMinimum, minium >= numeric {
error.kinds.insert(.minimum)
}
}
if let maximum = rule.maximum {
if !rule.exclusiveMaximum, !(numeric <= maximum) {
if !rule.exclusiveMaximum, numeric > maximum {
error.kinds.insert(.maximum)
}
if rule.exclusiveMaximum, !(numeric < maximum) {
if rule.exclusiveMaximum, numeric >= maximum {
error.kinds.insert(.maximum)
}
}