Support object schemas with only additionalProperties. (#6492)

Previously, we had implemented the Codable protocol by simply claiming conformance, and making sure that each of our internal classes also implemented the Codable protocol. So our model classes looked like:

class MyModel: Codable {
   var propInt: Int
   var propString: String
}

class MyOtherModel: Codable {
   var propModel: MyModel
}

Previously, our additionalProperties implementation would have meant an object schema with an additionalProperties of Int type would have looked like:

class MyModelWithAdditionalProperties: Codable {
   var additionalProperties: [String: Int]
}

But the default implementation of Codable would have serialized MyModelWithAdditionalProperties like this:

{
  "additionalProperties": {
    "myInt1": 1,
    "myInt2": 2,
    "myInt3": 3
  }
}

The default implementation would put the additionalProperties in its own dictionary (which would be incorrect), as opposed to the desired serialization of:

{
  "myInt1": 1,
  "myInt2": 2,
  "myInt3": 3
}

So therefore, the only way to support this was to do our own implementation of the Codable protocol. The Codable protocol is actually two protocols: Encodable and Decodable.

So therefore, this change generates implementations of Encodable and Decodable for each generated model class. So the new generated classes look like:

class MyModel: Codable {
   var propInt: Int
   var propString: String

   // Encodable protocol methods

   public func encode(to encoder: Encoder) throws {

        var container = encoder.container(keyedBy: String.self)

        try container.encode(propInt, forKey: "propInt")
        try container.encode(propString, forKey: "propString")
    }

    // Decodable protocol methods

    public required init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: String.self)

        propInt = try container.decode(Int.self, forKey: "propInt")
        propString = try container.decode(String.self, forKey: "propString")
    }

}

class MyOtherModel: Codable {
   var propModel: MyModel

   // Encodable protocol methods

   public func encode(to encoder: Encoder) throws {

        var container = encoder.container(keyedBy: String.self)

        try container.encode(propModel, forKey: "propModel")
    }

    // Decodable protocol methods

    public required init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: String.self)

        propModel = try container.decode(MyModel.self, forKey: "propModel")
    }

}
This commit is contained in:
ehyche 2017-09-18 13:04:50 -04:00 committed by wing328
parent 8067612e06
commit b807f6ff96
40 changed files with 814 additions and 247 deletions

View File

@ -85,6 +85,92 @@ extension UUID: JSONEncodable {
}
}
extension String: CodingKey {
public var stringValue: String {
return self
}
public init?(stringValue: String) {
self.init(stringLiteral: stringValue)
}
public var intValue: Int? {
return nil
}
public init?(intValue: Int) {
return nil
}
}
extension KeyedEncodingContainerProtocol {
public mutating func encodeArray<T>(_ values: [T], forKey key: Self.Key) throws where T : Encodable {
var arrayContainer = nestedUnkeyedContainer(forKey: key)
try arrayContainer.encode(contentsOf: values)
}
public mutating func encodeArrayIfPresent<T>(_ values: [T]?, forKey key: Self.Key) throws where T : Encodable {
if let values = values {
try encodeArray(values, forKey: key)
}
}
public mutating func encodeMap<T>(_ pairs: [Self.Key: T]) throws where T : Encodable {
for (key, value) in pairs {
try encode(value, forKey: key)
}
}
public mutating func encodeMapIfPresent<T>(_ pairs: [Self.Key: T]?) throws where T : Encodable {
if let pairs = pairs {
try encodeMap(pairs)
}
}
}
extension KeyedDecodingContainerProtocol {
public func decodeArray<T>(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T : Decodable {
var tmpArray = [T]()
var nestedContainer = try nestedUnkeyedContainer(forKey: key)
while !nestedContainer.isAtEnd {
let arrayValue = try nestedContainer.decode(T.self)
tmpArray.append(arrayValue)
}
return tmpArray
}
public func decodeArrayIfPresent<T>(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T : Decodable {
var tmpArray: [T]? = nil
if contains(key) {
tmpArray = try decodeArray(T.self, forKey: key)
}
return tmpArray
}
public func decodeMap<T>(_ type: T.Type, excludedKeys: Set<Self.Key>) throws -> [Self.Key: T] where T : Decodable {
var map: [Self.Key : T] = [:]
for key in allKeys {
if !excludedKeys.contains(key) {
let value = try decode(T.self, forKey: key)
map[key] = value
}
}
return map
}
}
{{#usePromiseKit}}extension RequestBuilder {
public func execute() -> Promise<Response<T>> {
let deferred = Promise<Response<T>>.pending()

View File

@ -21,10 +21,7 @@ public enum {{classname}}: {{dataType}}, Codable {
}
{{/isEnum}}
{{^isEnum}}
{{#vars.isEmpty}}
public typealias {{classname}} = {{dataType}}
{{/vars.isEmpty}}
{{^vars.isEmpty}}
open class {{classname}}: {{#parent}}{{{parent}}}{{/parent}}{{^parent}}Codable{{/parent}} {
{{#vars}}
@ -37,11 +34,11 @@ open class {{classname}}: {{#parent}}{{{parent}}}{{/parent}}{{^parent}}Codable{{
{{#vars}}
{{#isEnum}}
{{#description}}/** {{description}} */
{{/description}}public var {{name}}: {{{datatypeWithEnum}}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{/description}}public var {{name}}: {{{datatypeWithEnum}}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{/isEnum}}
{{^isEnum}}
{{#description}}/** {{description}} */
{{/description}}public var {{name}}: {{{datatype}}}{{^unwrapRequired}}?{{/unwrapRequired}}{{#unwrapRequired}}{{^required}}?{{/required}}{{/unwrapRequired}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{#objcCompatible}}{{#vendorExtensions.x-swift-optional-scalar}}
{{/description}}public var {{name}}: {{{datatype}}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{#objcCompatible}}{{#vendorExtensions.x-swift-optional-scalar}}
public var {{name}}Num: NSNumber? {
get {
return {{name}}.map({ return NSNumber(value: $0) })
@ -51,19 +48,9 @@ open class {{classname}}: {{#parent}}{{{parent}}}{{/parent}}{{^parent}}Codable{{
{{/vars}}
{{#additionalPropertiesType}}
public var additionalProperties: [AnyHashable:{{{additionalPropertiesType}}}] = [:]
public var additionalProperties: [String:{{{additionalPropertiesType}}}] = [:]
{{/additionalPropertiesType}}
{{^unwrapRequired}}
{{^parent}}public init() {}{{/parent}}{{/unwrapRequired}}
{{#unwrapRequired}}
public init({{#allVars}}{{^-first}}, {{/-first}}{{name}}: {{#isEnum}}{{datatypeWithEnum}}{{/isEnum}}{{^isEnum}}{{datatype}}{{/isEnum}}{{^required}}?=nil{{/required}}{{/allVars}}) {
{{#vars}}
self.{{name}} = {{name}}
{{/vars}}
}{{/unwrapRequired}}
{{#additionalPropertiesType}}
public subscript(key: AnyHashable) -> {{{additionalPropertiesType}}}? {
public subscript(key: String) -> {{{additionalPropertiesType}}}? {
get {
if let value = additionalProperties[key] {
return value
@ -77,12 +64,38 @@ open class {{classname}}: {{#parent}}{{{parent}}}{{/parent}}{{^parent}}Codable{{
}
{{/additionalPropertiesType}}
private enum CodingKeys: String, CodingKey { {{#vars}}
case {{{name}}} = "{{{baseName}}}"{{/vars}}
// Encodable protocol methods
public {{#parent}}override {{/parent}}func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: String.self)
{{#vars}}
try container.encode{{#isListContainer}}Array{{/isListContainer}}{{^required}}IfPresent{{/required}}({{{name}}}, forKey: "{{{baseName}}}")
{{/vars}}
{{#additionalPropertiesType}}
try container.encodeMap(additionalProperties)
{{/additionalPropertiesType}}
}
// Decodable protocol methods
public {{#parent}}override {{/parent}}required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: String.self)
{{#vars}}
{{name}} = try container.decode{{#isListContainer}}Array{{/isListContainer}}{{^required}}IfPresent{{/required}}({{#isListContainer}}{{{items.datatype}}}{{/isListContainer}}{{^isListContainer}}{{{datatype}}}{{/isListContainer}}.self, forKey: "{{{baseName}}}")
{{/vars}}
{{#additionalPropertiesType}}
var nonAdditionalPropertyKeys = Set<String>()
{{#vars}}
nonAdditionalPropertyKeys.insert("{{{baseName}}}")
{{/vars}}
additionalProperties = try container.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys)
{{/additionalPropertiesType}}
}
}
{{/vars.isEmpty}}
{{/isEnum}}
{{/isArrayModel}}
{{/model}}

View File

@ -274,6 +274,72 @@
}
},
"description": "Response object containing AllPrimitives object"
},
"ModelWithStringAdditionalPropertiesOnly": {
"description": "This is an empty model with no properties and only additionalProperties of type string",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"ModelWithIntAdditionalPropertiesOnly": {
"description": "This is an empty model with no properties and only additionalProperties of type int32",
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
}
},
"ModelWithPropertiesAndAdditionalProperties": {
"description": "This is an empty model with no properties and only additionalProperties of type int32",
"type": "object",
"required": [
"myIntegerReq",
"myPrimitiveReq",
"myStringArrayReq",
"myPrimitiveArrayReq"
],
"properties": {
"myIntegerReq": {
"type": "integer"
},
"myIntegerOpt": {
"type": "integer"
},
"myPrimitiveReq": {
"$ref": "#/definitions/AllPrimitives"
},
"myPrimitiveOpt": {
"$ref": "#/definitions/AllPrimitives"
},
"myStringArrayReq": {
"type": "array",
"items": {
"type": "string"
}
},
"myStringArrayOpt": {
"type": "array",
"items": {
"type": "string"
}
},
"myPrimitiveArrayReq": {
"type": "array",
"items": {
"$ref": "#/definitions/AllPrimitives"
}
},
"myPrimitiveArrayOpt": {
"type": "array",
"items": {
"$ref": "#/definitions/AllPrimitives"
}
}
},
"additionalProperties": {
"type": "string"
}
}
}
}

View File

@ -8,6 +8,6 @@ Pod::Spec.new do |s|
s.license = 'Proprietary'
s.homepage = 'https://github.com/swagger-api/swagger-codegen'
s.summary = 'TestClient'
s.source_files = 'TestClient/Classes/Swaggers/**/*.swift'
s.dependency 'Alamofire', '~> 4.5'
s.source_files = 'TestClient/Classes/**/*.swift'
s.dependency 'Alamofire', '~> 4.5.0'
end

View File

@ -30,60 +30,85 @@ open class Swift4TestAPI {
- This endpoint tests get a dictionary which contains examples of all of the models.
- examples: [{contentType=application/json, example={
"myPrimitive" : {
"myDateTimeArray" : [ "2000-01-23T04:56:07.000+00:00" ],
"myStringArray" : [ "aeiou" ],
"myDateTimeArray" : [ "2000-01-23T04:56:07.000+00:00", "2000-01-23T04:56:07.000+00:00" ],
"myStringArray" : [ "myStringArray", "myStringArray" ],
"myFile" : "",
"myFloatArray" : [ 2.302136 ],
"myBytes" : "aeiou",
"myFloatArray" : [ 2.302136, 2.302136 ],
"myBytes" : "myBytes",
"myLong" : 1,
"myBooleanArray" : [ true ],
"myDoubleArray" : [ 9.301444243932576 ],
"myBooleanArray" : [ true, true ],
"myDoubleArray" : [ 9.301444243932576, 9.301444243932576 ],
"myInteger" : 0,
"myString" : "aeiou",
"myBytesArray" : [ "aeiou" ],
"myString" : "myString",
"myBytesArray" : [ "myBytesArray", "myBytesArray" ],
"myDouble" : 7.061401241503109,
"myDate" : "2000-01-23",
"myDateArray" : [ "2000-01-23" ],
"myDateArray" : [ "2000-01-23", "2000-01-23" ],
"myDateTime" : "2000-01-23T04:56:07.000+00:00",
"myLongArray" : [ 5 ],
"myIntegerArray" : [ 6 ],
"myLongArray" : [ 5, 5 ],
"myIntegerArray" : [ 6, 6 ],
"myUUID" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
"myBoolean" : true,
"myFileArray" : [ "" ],
"myFileArray" : [ "", "" ],
"myStringEnum" : { },
"myFloat" : 5.637377,
"myStringEnumArray" : [ null ],
"myUUIDArray" : [ "046b6c7f-0b8a-43b9-b35d-6489e6daee91" ]
"myStringEnumArray" : [ null, null ],
"myUUIDArray" : [ "046b6c7f-0b8a-43b9-b35d-6489e6daee91", "046b6c7f-0b8a-43b9-b35d-6489e6daee91" ]
},
"myVariableNameTest" : {
"for" : "aeiou",
"example_name" : "aeiou"
"for" : "for",
"example_name" : "example_name"
},
"myPrimitiveArray" : [ {
"myDateTimeArray" : [ "2000-01-23T04:56:07.000+00:00" ],
"myStringArray" : [ "aeiou" ],
"myDateTimeArray" : [ "2000-01-23T04:56:07.000+00:00", "2000-01-23T04:56:07.000+00:00" ],
"myStringArray" : [ "myStringArray", "myStringArray" ],
"myFile" : "",
"myFloatArray" : [ 2.302136 ],
"myBytes" : "aeiou",
"myFloatArray" : [ 2.302136, 2.302136 ],
"myBytes" : "myBytes",
"myLong" : 1,
"myBooleanArray" : [ true ],
"myDoubleArray" : [ 9.301444243932576 ],
"myBooleanArray" : [ true, true ],
"myDoubleArray" : [ 9.301444243932576, 9.301444243932576 ],
"myInteger" : 0,
"myString" : "aeiou",
"myBytesArray" : [ "aeiou" ],
"myString" : "myString",
"myBytesArray" : [ "myBytesArray", "myBytesArray" ],
"myDouble" : 7.061401241503109,
"myDate" : "2000-01-23",
"myDateArray" : [ "2000-01-23" ],
"myDateArray" : [ "2000-01-23", "2000-01-23" ],
"myDateTime" : "2000-01-23T04:56:07.000+00:00",
"myLongArray" : [ 5 ],
"myIntegerArray" : [ 6 ],
"myLongArray" : [ 5, 5 ],
"myIntegerArray" : [ 6, 6 ],
"myUUID" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
"myBoolean" : true,
"myFileArray" : [ "" ],
"myFileArray" : [ "", "" ],
"myStringEnum" : { },
"myFloat" : 5.637377,
"myStringEnumArray" : [ null ],
"myUUIDArray" : [ "046b6c7f-0b8a-43b9-b35d-6489e6daee91" ]
"myStringEnumArray" : [ null, null ],
"myUUIDArray" : [ "046b6c7f-0b8a-43b9-b35d-6489e6daee91", "046b6c7f-0b8a-43b9-b35d-6489e6daee91" ]
}, {
"myDateTimeArray" : [ "2000-01-23T04:56:07.000+00:00", "2000-01-23T04:56:07.000+00:00" ],
"myStringArray" : [ "myStringArray", "myStringArray" ],
"myFile" : "",
"myFloatArray" : [ 2.302136, 2.302136 ],
"myBytes" : "myBytes",
"myLong" : 1,
"myBooleanArray" : [ true, true ],
"myDoubleArray" : [ 9.301444243932576, 9.301444243932576 ],
"myInteger" : 0,
"myString" : "myString",
"myBytesArray" : [ "myBytesArray", "myBytesArray" ],
"myDouble" : 7.061401241503109,
"myDate" : "2000-01-23",
"myDateArray" : [ "2000-01-23", "2000-01-23" ],
"myDateTime" : "2000-01-23T04:56:07.000+00:00",
"myLongArray" : [ 5, 5 ],
"myIntegerArray" : [ 6, 6 ],
"myUUID" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
"myBoolean" : true,
"myFileArray" : [ "", "" ],
"myStringEnum" : { },
"myFloat" : 5.637377,
"myStringEnumArray" : [ null, null ],
"myUUIDArray" : [ "046b6c7f-0b8a-43b9-b35d-6489e6daee91", "046b6c7f-0b8a-43b9-b35d-6489e6daee91" ]
} ]
}}]

View File

@ -16,7 +16,7 @@ open class CodableHelper {
var returnedError: Error? = nil
let decoder = JSONDecoder()
decoder.dataDecodingStrategy = .base64Decode
decoder.dataDecodingStrategy = .base64
if #available(iOS 10.0, *) {
decoder.dateDecodingStrategy = .iso8601
}
@ -38,7 +38,7 @@ open class CodableHelper {
if prettyPrint {
encoder.outputFormatting = .prettyPrinted
}
encoder.dataEncodingStrategy = .base64Encode
encoder.dataEncodingStrategy = .base64
if #available(iOS 10.0, *) {
encoder.dateEncodingStrategy = .iso8601
}

View File

@ -84,4 +84,90 @@ extension UUID: JSONEncodable {
}
}
extension String: CodingKey {
public var stringValue: String {
return self
}
public init?(stringValue: String) {
self.init(stringLiteral: stringValue)
}
public var intValue: Int? {
return nil
}
public init?(intValue: Int) {
return nil
}
}
extension KeyedEncodingContainerProtocol {
public mutating func encodeArray<T>(_ values: [T], forKey key: Self.Key) throws where T : Encodable {
var arrayContainer = nestedUnkeyedContainer(forKey: key)
try arrayContainer.encode(contentsOf: values)
}
public mutating func encodeArrayIfPresent<T>(_ values: [T]?, forKey key: Self.Key) throws where T : Encodable {
if let values = values {
try encodeArray(values, forKey: key)
}
}
public mutating func encodeMap<T>(_ pairs: [Self.Key: T]) throws where T : Encodable {
for (key, value) in pairs {
try encode(value, forKey: key)
}
}
public mutating func encodeMapIfPresent<T>(_ pairs: [Self.Key: T]?) throws where T : Encodable {
if let pairs = pairs {
try encodeMap(pairs)
}
}
}
extension KeyedDecodingContainerProtocol {
public func decodeArray<T>(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T : Decodable {
var tmpArray = [T]()
var nestedContainer = try nestedUnkeyedContainer(forKey: key)
while !nestedContainer.isAtEnd {
let arrayValue = try nestedContainer.decode(T.self)
tmpArray.append(arrayValue)
}
return tmpArray
}
public func decodeArrayIfPresent<T>(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T : Decodable {
var tmpArray: [T]? = nil
if contains(key) {
tmpArray = try decodeArray(T.self, forKey: key)
}
return tmpArray
}
public func decodeMap<T>(_ type: T.Type, excludedKeys: Set<Self.Key>) throws -> [Self.Key: T] where T : Decodable {
var map: [Self.Key : T] = [:]
for key in allKeys {
if !excludedKeys.contains(key) {
let value = try decode(T.self, forKey: key)
map[key] = value
}
}
return map
}
}

View File

@ -9,6 +9,7 @@ import Foundation
/** Object which contains lots of different primitive Swagger types */
open class AllPrimitives: Codable {
public var myInteger: Int?
@ -36,34 +37,68 @@ open class AllPrimitives: Codable {
public var myStringEnum: StringEnum?
public var myStringEnumArray: [StringEnum]?
public init() {}
// Encodable protocol methods
private enum CodingKeys: String, CodingKey {
case myInteger = "myInteger"
case myIntegerArray = "myIntegerArray"
case myLong = "myLong"
case myLongArray = "myLongArray"
case myFloat = "myFloat"
case myFloatArray = "myFloatArray"
case myDouble = "myDouble"
case myDoubleArray = "myDoubleArray"
case myString = "myString"
case myStringArray = "myStringArray"
case myBytes = "myBytes"
case myBytesArray = "myBytesArray"
case myBoolean = "myBoolean"
case myBooleanArray = "myBooleanArray"
case myDate = "myDate"
case myDateArray = "myDateArray"
case myDateTime = "myDateTime"
case myDateTimeArray = "myDateTimeArray"
case myFile = "myFile"
case myFileArray = "myFileArray"
case myUUID = "myUUID"
case myUUIDArray = "myUUIDArray"
case myStringEnum = "myStringEnum"
case myStringEnumArray = "myStringEnumArray"
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: String.self)
try container.encodeIfPresent(myInteger, forKey: "myInteger")
try container.encodeArrayIfPresent(myIntegerArray, forKey: "myIntegerArray")
try container.encodeIfPresent(myLong, forKey: "myLong")
try container.encodeArrayIfPresent(myLongArray, forKey: "myLongArray")
try container.encodeIfPresent(myFloat, forKey: "myFloat")
try container.encodeArrayIfPresent(myFloatArray, forKey: "myFloatArray")
try container.encodeIfPresent(myDouble, forKey: "myDouble")
try container.encodeArrayIfPresent(myDoubleArray, forKey: "myDoubleArray")
try container.encodeIfPresent(myString, forKey: "myString")
try container.encodeArrayIfPresent(myStringArray, forKey: "myStringArray")
try container.encodeIfPresent(myBytes, forKey: "myBytes")
try container.encodeArrayIfPresent(myBytesArray, forKey: "myBytesArray")
try container.encodeIfPresent(myBoolean, forKey: "myBoolean")
try container.encodeArrayIfPresent(myBooleanArray, forKey: "myBooleanArray")
try container.encodeIfPresent(myDate, forKey: "myDate")
try container.encodeArrayIfPresent(myDateArray, forKey: "myDateArray")
try container.encodeIfPresent(myDateTime, forKey: "myDateTime")
try container.encodeArrayIfPresent(myDateTimeArray, forKey: "myDateTimeArray")
try container.encodeIfPresent(myFile, forKey: "myFile")
try container.encodeArrayIfPresent(myFileArray, forKey: "myFileArray")
try container.encodeIfPresent(myUUID, forKey: "myUUID")
try container.encodeArrayIfPresent(myUUIDArray, forKey: "myUUIDArray")
try container.encodeIfPresent(myStringEnum, forKey: "myStringEnum")
try container.encodeArrayIfPresent(myStringEnumArray, forKey: "myStringEnumArray")
}
// Decodable protocol methods
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: String.self)
myInteger = try container.decodeIfPresent(Int.self, forKey: "myInteger")
myIntegerArray = try container.decodeArrayIfPresent(Int.self, forKey: "myIntegerArray")
myLong = try container.decodeIfPresent(Int64.self, forKey: "myLong")
myLongArray = try container.decodeArrayIfPresent(Int64.self, forKey: "myLongArray")
myFloat = try container.decodeIfPresent(Float.self, forKey: "myFloat")
myFloatArray = try container.decodeArrayIfPresent(Float.self, forKey: "myFloatArray")
myDouble = try container.decodeIfPresent(Double.self, forKey: "myDouble")
myDoubleArray = try container.decodeArrayIfPresent(Double.self, forKey: "myDoubleArray")
myString = try container.decodeIfPresent(String.self, forKey: "myString")
myStringArray = try container.decodeArrayIfPresent(String.self, forKey: "myStringArray")
myBytes = try container.decodeIfPresent(Data.self, forKey: "myBytes")
myBytesArray = try container.decodeArrayIfPresent(Data.self, forKey: "myBytesArray")
myBoolean = try container.decodeIfPresent(Bool.self, forKey: "myBoolean")
myBooleanArray = try container.decodeArrayIfPresent(Bool.self, forKey: "myBooleanArray")
myDate = try container.decodeIfPresent(Date.self, forKey: "myDate")
myDateArray = try container.decodeArrayIfPresent(Date.self, forKey: "myDateArray")
myDateTime = try container.decodeIfPresent(Date.self, forKey: "myDateTime")
myDateTimeArray = try container.decodeArrayIfPresent(Date.self, forKey: "myDateTimeArray")
myFile = try container.decodeIfPresent(URL.self, forKey: "myFile")
myFileArray = try container.decodeArrayIfPresent(URL.self, forKey: "myFileArray")
myUUID = try container.decodeIfPresent(UUID.self, forKey: "myUUID")
myUUIDArray = try container.decodeArrayIfPresent(UUID.self, forKey: "myUUIDArray")
myStringEnum = try container.decodeIfPresent(StringEnum.self, forKey: "myStringEnum")
myStringEnumArray = try container.decodeArrayIfPresent(StringEnum.self, forKey: "myStringEnumArray")
}
}

View File

@ -9,19 +9,33 @@ import Foundation
/** Example Error object */
open class ErrorInfo: Codable {
public var code: Int?
public var message: String?
public var details: [String]?
public init() {}
// Encodable protocol methods
private enum CodingKeys: String, CodingKey {
case code = "code"
case message = "message"
case details = "details"
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: String.self)
try container.encodeIfPresent(code, forKey: "code")
try container.encodeIfPresent(message, forKey: "message")
try container.encodeArrayIfPresent(details, forKey: "details")
}
// Decodable protocol methods
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: String.self)
code = try container.decodeIfPresent(Int.self, forKey: "code")
message = try container.decodeIfPresent(String.self, forKey: "message")
details = try container.decodeArrayIfPresent(String.self, forKey: "details")
}
}

View File

@ -9,19 +9,33 @@ import Foundation
/** Response object containing AllPrimitives object */
open class GetAllModelsResult: Codable {
public var myPrimitiveArray: [AllPrimitives]?
public var myPrimitive: AllPrimitives?
public var myVariableNameTest: VariableNameTest?
public init() {}
// Encodable protocol methods
private enum CodingKeys: String, CodingKey {
case myPrimitiveArray = "myPrimitiveArray"
case myPrimitive = "myPrimitive"
case myVariableNameTest = "myVariableNameTest"
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: String.self)
try container.encodeArrayIfPresent(myPrimitiveArray, forKey: "myPrimitiveArray")
try container.encodeIfPresent(myPrimitive, forKey: "myPrimitive")
try container.encodeIfPresent(myVariableNameTest, forKey: "myVariableNameTest")
}
// Decodable protocol methods
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: String.self)
myPrimitiveArray = try container.decodeArrayIfPresent(AllPrimitives.self, forKey: "myPrimitiveArray")
myPrimitive = try container.decodeIfPresent(AllPrimitives.self, forKey: "myPrimitive")
myVariableNameTest = try container.decodeIfPresent(VariableNameTest.self, forKey: "myVariableNameTest")
}
}

View File

@ -0,0 +1,49 @@
//
// ModelWithIntAdditionalPropertiesOnly.swift
//
// Generated by swagger-codegen
// https://github.com/swagger-api/swagger-codegen
//
import Foundation
/** This is an empty model with no properties and only additionalProperties of type int32 */
open class ModelWithIntAdditionalPropertiesOnly: Codable {
public var additionalProperties: [String:Int] = [:]
public subscript(key: String) -> Int? {
get {
if let value = additionalProperties[key] {
return value
}
return nil
}
set {
additionalProperties[key] = newValue
}
}
// Encodable protocol methods
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: String.self)
try container.encodeMap(additionalProperties)
}
// Decodable protocol methods
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: String.self)
var nonAdditionalPropertyKeys = Set<String>()
additionalProperties = try container.decodeMap(Int.self, excludedKeys: nonAdditionalPropertyKeys)
}
}

View File

@ -0,0 +1,81 @@
//
// ModelWithPropertiesAndAdditionalProperties.swift
//
// Generated by swagger-codegen
// https://github.com/swagger-api/swagger-codegen
//
import Foundation
/** This is an empty model with no properties and only additionalProperties of type int32 */
open class ModelWithPropertiesAndAdditionalProperties: Codable {
public var myIntegerReq: Int
public var myIntegerOpt: Int?
public var myPrimitiveReq: AllPrimitives
public var myPrimitiveOpt: AllPrimitives?
public var myStringArrayReq: [String]
public var myStringArrayOpt: [String]?
public var myPrimitiveArrayReq: [AllPrimitives]
public var myPrimitiveArrayOpt: [AllPrimitives]?
public var additionalProperties: [String:String] = [:]
public subscript(key: String) -> String? {
get {
if let value = additionalProperties[key] {
return value
}
return nil
}
set {
additionalProperties[key] = newValue
}
}
// Encodable protocol methods
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: String.self)
try container.encode(myIntegerReq, forKey: "myIntegerReq")
try container.encodeIfPresent(myIntegerOpt, forKey: "myIntegerOpt")
try container.encode(myPrimitiveReq, forKey: "myPrimitiveReq")
try container.encodeIfPresent(myPrimitiveOpt, forKey: "myPrimitiveOpt")
try container.encodeArray(myStringArrayReq, forKey: "myStringArrayReq")
try container.encodeArrayIfPresent(myStringArrayOpt, forKey: "myStringArrayOpt")
try container.encodeArray(myPrimitiveArrayReq, forKey: "myPrimitiveArrayReq")
try container.encodeArrayIfPresent(myPrimitiveArrayOpt, forKey: "myPrimitiveArrayOpt")
try container.encodeMap(additionalProperties)
}
// Decodable protocol methods
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: String.self)
myIntegerReq = try container.decode(Int.self, forKey: "myIntegerReq")
myIntegerOpt = try container.decodeIfPresent(Int.self, forKey: "myIntegerOpt")
myPrimitiveReq = try container.decode(AllPrimitives.self, forKey: "myPrimitiveReq")
myPrimitiveOpt = try container.decodeIfPresent(AllPrimitives.self, forKey: "myPrimitiveOpt")
myStringArrayReq = try container.decodeArray(String.self, forKey: "myStringArrayReq")
myStringArrayOpt = try container.decodeArrayIfPresent(String.self, forKey: "myStringArrayOpt")
myPrimitiveArrayReq = try container.decodeArray(AllPrimitives.self, forKey: "myPrimitiveArrayReq")
myPrimitiveArrayOpt = try container.decodeArrayIfPresent(AllPrimitives.self, forKey: "myPrimitiveArrayOpt")
var nonAdditionalPropertyKeys = Set<String>()
nonAdditionalPropertyKeys.insert("myIntegerReq")
nonAdditionalPropertyKeys.insert("myIntegerOpt")
nonAdditionalPropertyKeys.insert("myPrimitiveReq")
nonAdditionalPropertyKeys.insert("myPrimitiveOpt")
nonAdditionalPropertyKeys.insert("myStringArrayReq")
nonAdditionalPropertyKeys.insert("myStringArrayOpt")
nonAdditionalPropertyKeys.insert("myPrimitiveArrayReq")
nonAdditionalPropertyKeys.insert("myPrimitiveArrayOpt")
additionalProperties = try container.decodeMap(String.self, excludedKeys: nonAdditionalPropertyKeys)
}
}

View File

@ -0,0 +1,49 @@
//
// ModelWithStringAdditionalPropertiesOnly.swift
//
// Generated by swagger-codegen
// https://github.com/swagger-api/swagger-codegen
//
import Foundation
/** This is an empty model with no properties and only additionalProperties of type string */
open class ModelWithStringAdditionalPropertiesOnly: Codable {
public var additionalProperties: [String:String] = [:]
public subscript(key: String) -> String? {
get {
if let value = additionalProperties[key] {
return value
}
return nil
}
set {
additionalProperties[key] = newValue
}
}
// Encodable protocol methods
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: String.self)
try container.encodeMap(additionalProperties)
}
// Decodable protocol methods
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: String.self)
var nonAdditionalPropertyKeys = Set<String>()
additionalProperties = try container.decodeMap(String.self, excludedKeys: nonAdditionalPropertyKeys)
}
}

View File

@ -9,6 +9,7 @@ import Foundation
/** This object contains property names which we know will be different from their variable name. Examples of this include snake case property names and property names which are Swift 4 reserved words. */
open class VariableNameTest: Codable {
/** This snake-case examle_name property name should be converted to a camelCase variable name like exampleName */
@ -16,12 +17,24 @@ open class VariableNameTest: Codable {
/** This property name is a reserved word in most languages, including Swift 4. */
public var _for: String?
public init() {}
// Encodable protocol methods
private enum CodingKeys: String, CodingKey {
case exampleName = "example_name"
case _for = "for"
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: String.self)
try container.encodeIfPresent(exampleName, forKey: "example_name")
try container.encodeIfPresent(_for, forKey: "for")
}
// Decodable protocol methods
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: String.self)
exampleName = try container.decodeIfPresent(String.self, forKey: "example_name")
_for = try container.decodeIfPresent(String.self, forKey: "for")
}
}

View File

@ -1,7 +1,7 @@
PODS:
- Alamofire (4.5.0)
- Alamofire (4.5.1)
- TestClient (0.0.1):
- Alamofire (~> 4.5)
- Alamofire (~> 4.5.0)
DEPENDENCIES:
- Alamofire (~> 4.5)
@ -12,8 +12,8 @@ EXTERNAL SOURCES:
:path: ../
SPEC CHECKSUMS:
Alamofire: f28cdffd29de33a7bfa022cbd63ae95a27fae140
TestClient: bcecc2c065b23aaa97f5b66a3f96741b560c381b
Alamofire: 2d95912bf4c34f164fdfc335872e8c312acaea4a
TestClient: c12a94972a1128167637d39ea0b072f46c0790de
PODFILE CHECKSUM: a4351ac5e001fd96f35ed7e647981803864100b5

View File

@ -1,4 +1,4 @@
Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,9 +1,9 @@
![Alamofire: Elegant Networking in Swift](https://raw.githubusercontent.com/Alamofire/Alamofire/assets/alamofire.png)
![Alamofire: Elegant Networking in Swift](https://raw.githubusercontent.com/Alamofire/Alamofire/master/alamofire.png)
[![Build Status](https://travis-ci.org/Alamofire/Alamofire.svg?branch=master)](https://travis-ci.org/Alamofire/Alamofire)
[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/Alamofire.svg)](https://img.shields.io/cocoapods/v/Alamofire.svg)
[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![Platform](https://img.shields.io/cocoapods/p/Alamofire.svg?style=flat)](http://cocoadocs.org/docsets/Alamofire)
[![Platform](https://img.shields.io/cocoapods/p/Alamofire.svg?style=flat)](https://alamofire.github.io/Alamofire)
[![Twitter](https://img.shields.io/badge/twitter-@AlamofireSF-blue.svg?style=flat)](http://twitter.com/AlamofireSF)
[![Gitter](https://badges.gitter.im/Alamofire/Alamofire.svg)](https://gitter.im/Alamofire/Alamofire?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
@ -45,7 +45,7 @@ Alamofire is an HTTP networking library written in Swift.
- [x] TLS Certificate and Public Key Pinning
- [x] Network Reachability
- [x] Comprehensive Unit and Integration Test Coverage
- [x] [Complete Documentation](http://cocoadocs.org/docsets/Alamofire)
- [x] [Complete Documentation](https://alamofire.github.io/Alamofire)
## Component Libraries
@ -57,8 +57,8 @@ In order to keep Alamofire focused specifically on core networking implementatio
## Requirements
- iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+
- Xcode 8.1, 8.2, 8.3, and 9.0
- Swift 3.0, 3.1, 3.2, and 4.0
- Xcode 8.3+
- Swift 3.1+
## Migration Guides
@ -84,7 +84,7 @@ In order to keep Alamofire focused specifically on core networking implementatio
$ gem install cocoapods
```
> CocoaPods 1.1.0+ is required to build Alamofire 4.0.0+.
> CocoaPods 1.1+ is required to build Alamofire 4.0+.
To integrate Alamofire into your Xcode project using CocoaPods, specify it in your `Podfile`:
@ -94,7 +94,7 @@ platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'Alamofire', '~> 4.4'
pod 'Alamofire', '~> 4.5'
end
```
@ -118,7 +118,7 @@ $ brew install carthage
To integrate Alamofire into your Xcode project using Carthage, specify it in your `Cartfile`:
```ogdl
github "Alamofire/Alamofire" ~> 4.4
github "Alamofire/Alamofire" ~> 4.5
```
Run `carthage update` to build the framework and drag the built `Alamofire.framework` into your Xcode project.
@ -736,7 +736,7 @@ When sending relatively small amounts of data to a server using JSON or URL enco
#### Uploading Data
```swift
let imageData = UIPNGRepresentation(image)!
let imageData = UIImagePNGRepresentation(image)!
Alamofire.upload(imageData, to: "https://httpbin.org/post").responseJSON { response in
debugPrint(response)
@ -1812,10 +1812,15 @@ There are some important things to remember when using network reachability to d
The following radars have some effect on the current implementation of Alamofire.
- [`rdar://21349340`](http://www.openradar.me/radar?id=5517037090635776) - Compiler throwing warning due to toll-free bridging issue in test case
- [`rdar://26761490`](http://www.openradar.me/radar?id=5010235949318144) - Swift string interpolation causing memory leak with common usage
- `rdar://26870455` - Background URL Session Configurations do not work in the simulator
- `rdar://26849668` - Some URLProtocol APIs do not properly handle `URLRequest`
## Resolved Radars
The following radars have been resolved over time after being filed against the Alamofire project.
- [`rdar://26761490`](http://www.openradar.me/radar?id=5010235949318144) - Swift string interpolation causing memory leak with common usage (Resolved on 9/1/17 in Xcode 9 beta 6).
## FAQ
### What's the origin of the name Alamofire?

View File

@ -1,7 +1,7 @@
//
// AFError.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// Alamofire.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// DispatchQueue+Alamofire.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// MultipartFormData.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// NetworkReachabilityManager.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// Notifications.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// ParameterEncoding.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -223,9 +223,9 @@ public struct URLEncoding: ParameterEncoding {
let endIndex = string.index(index, offsetBy: batchSize, limitedBy: string.endIndex) ?? string.endIndex
let range = startIndex..<endIndex
let substring = string.substring(with: range)
let substring = string[range]
escaped += substring.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) ?? substring
escaped += substring.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) ?? String(substring)
index = endIndex
}
@ -241,11 +241,7 @@ public struct URLEncoding: ParameterEncoding {
let value = parameters[key]!
components += queryComponents(fromKey: key, value: value)
}
#if swift(>=4.0)
return components.map { "\($0.0)=\($0.1)" }.joined(separator: "&")
#else
return components.map { "\($0)=\($1)" }.joined(separator: "&")
#endif
}
private func encodesParametersInURL(with method: HTTPMethod) -> Bool {

View File

@ -1,7 +1,7 @@
//
// Request.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -293,11 +293,12 @@ extension Request: CustomDebugStringConvertible {
if let credentials = credentialStorage.credentials(for: protectionSpace)?.values {
for credential in credentials {
components.append("-u \(credential.user!):\(credential.password!)")
guard let user = credential.user, let password = credential.password else { continue }
components.append("-u \(user):\(password)")
}
} else {
if let credential = delegate.credential {
components.append("-u \(credential.user!):\(credential.password!)")
if let credential = delegate.credential, let user = credential.user, let password = credential.password {
components.append("-u \(user):\(password)")
}
}
}
@ -308,7 +309,12 @@ extension Request: CustomDebugStringConvertible {
let cookies = cookieStorage.cookies(for: url), !cookies.isEmpty
{
let string = cookies.reduce("") { $0 + "\($1.name)=\($1.value);" }
#if swift(>=3.2)
components.append("-b \"\(string[..<string.index(before: string.endIndex)])\"")
#else
components.append("-b \"\(string.substring(to: string.characters.index(before: string.endIndex)))\"")
#endif
}
}

View File

@ -1,7 +1,7 @@
//
// Response.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// ResponseSerialization.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// Result.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// ServerTrustPolicy.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// SessionDelegate.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// SessionManager.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -58,18 +58,10 @@ open class SessionManager {
let acceptEncoding: String = "gzip;q=1.0, compress;q=0.5"
// Accept-Language HTTP Header; see https://tools.ietf.org/html/rfc7231#section-5.3.5
#if swift(>=4.0)
let acceptLanguage = Locale.preferredLanguages.prefix(6).enumerated().map { enumeratedLanguage in
let (index, languageCode) = enumeratedLanguage
let quality = 1.0 - (Double(index) * 0.1)
return "\(languageCode);q=\(quality)"
}.joined(separator: ", ")
#else
let acceptLanguage = Locale.preferredLanguages.prefix(6).enumerated().map { index, languageCode in
let quality = 1.0 - (Double(index) * 0.1)
return "\(languageCode);q=\(quality)"
}.joined(separator: ", ")
#endif
// User-Agent Header; see https://tools.ietf.org/html/rfc7231#section-5.5.3
// Example: `iOS Example/1.0 (org.alamofire.iOS-Example; build:1; iOS 10.0.0) Alamofire/4.0.0`

View File

@ -1,7 +1,7 @@
//
// TaskDelegate.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -40,17 +40,30 @@ open class TaskDelegate: NSObject {
public var error: Error?
var task: URLSessionTask? {
didSet { reset() }
set {
taskLock.lock(); defer { taskLock.unlock() }
_task = newValue
}
get {
taskLock.lock(); defer { taskLock.unlock() }
return _task
}
}
var initialResponseTime: CFAbsoluteTime?
var credential: URLCredential?
var metrics: AnyObject? // URLSessionTaskMetrics
private var _task: URLSessionTask? {
didSet { reset() }
}
private let taskLock = NSLock()
// MARK: Lifecycle
init(task: URLSessionTask?) {
self.task = task
_task = task
self.queue = {
let operationQueue = OperationQueue()

View File

@ -1,7 +1,7 @@
//
// Timeline.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View File

@ -1,7 +1,7 @@
//
// Validation.swift
//
// Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
// Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -48,7 +48,13 @@ extension Request {
init?(_ string: String) {
let components: [String] = {
let stripped = string.trimmingCharacters(in: .whitespacesAndNewlines)
#if swift(>=3.2)
let split = stripped[..<(stripped.range(of: ";")?.lowerBound ?? stripped.endIndex)]
#else
let split = stripped.substring(to: stripped.range(of: ";")?.lowerBound ?? stripped.endIndex)
#endif
return split.components(separatedBy: "/")
}()

View File

@ -13,10 +13,10 @@
"license": "Proprietary",
"homepage": "https://github.com/swagger-api/swagger-codegen",
"summary": "TestClient",
"source_files": "TestClient/Classes/Swaggers/**/*.swift",
"source_files": "TestClient/Classes/**/*.swift",
"dependencies": {
"Alamofire": [
"~> 4.5"
"~> 4.5.0"
]
}
}

View File

@ -1,7 +1,7 @@
PODS:
- Alamofire (4.5.0)
- Alamofire (4.5.1)
- TestClient (0.0.1):
- Alamofire (~> 4.5)
- Alamofire (~> 4.5.0)
DEPENDENCIES:
- Alamofire (~> 4.5)
@ -12,8 +12,8 @@ EXTERNAL SOURCES:
:path: ../
SPEC CHECKSUMS:
Alamofire: f28cdffd29de33a7bfa022cbd63ae95a27fae140
TestClient: bcecc2c065b23aaa97f5b66a3f96741b560c381b
Alamofire: 2d95912bf4c34f164fdfc335872e8c312acaea4a
TestClient: c12a94972a1128167637d39ea0b072f46c0790de
PODFILE CHECKSUM: a4351ac5e001fd96f35ed7e647981803864100b5

View File

@ -3,55 +3,58 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 48;
objects = {
/* Begin PBXBuildFile section */
0D4972E6BBD4F9648AB1A64E5EA0A450 /* Swift4TestAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58F8858EDEA88D85AAE1DF8EDE9DC77C /* Swift4TestAPI.swift */; };
06966509EB896061665956B254677EF3 /* JSONEncodableEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ADB9F167DA8EB39D3FA64AADB55D752 /* JSONEncodableEncoding.swift */; };
0A36E75434583424493479B3F81056C2 /* JSONEncodingHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8147CAF0602FB410B68FCBBDDE1244A /* JSONEncodingHelper.swift */; };
10EB23E9ECC4B33E16933BB1EA560B6A /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87882A1F5A92C8138D54545E51D51E6F /* Timeline.swift */; };
1696BCB0ABCE1B4699943CBDD68BA0E7 /* VariableNameTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDBDC5987A4E733064132DD2651D8D4A /* VariableNameTest.swift */; };
16A8385493CF5CAE16F4A6EDC122554B /* TestClient-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EC215D27FD61465426D20DB47BDF0A13 /* TestClient-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
16F9658ACE3C8E51723FD4D2808BD5B7 /* Swift4TestAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A91F27AE4FAB04A7B18D186684BC24 /* Swift4TestAPI.swift */; };
1B9EDEDC964E6B08F78920B4F4B9DB84 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B44A27EFBB0DA84D738057B77F3413B1 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
32542C877A09177CAEFC4F74BD271948 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64A7D3983284C3F8FD6A9C823E2C0205 /* Extensions.swift */; };
3626B94094672CB1C9DEA32B9F9502E1 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A01C037B4034EDA3D7955BC5E4E9D9D6 /* TaskDelegate.swift */; };
48F6766C23FAA1C3EB26F2C79D05E90C /* APIHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83F55BF83F629A36D6E4DE56A7587EFE /* APIHelper.swift */; };
3684126CB8E9043D3CB679BD9F55DE3A /* StringEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D48A7304C97E00597AD2C0888F305D4 /* StringEnum.swift */; };
491D85AF9A26E8E550FF18A085A7F93A /* Pods-TestClientAppTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D34026BC454C1DD59A8FEF08E0624FA /* Pods-TestClientAppTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
4A19B588188141F7C2627331D135BA39 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D0533E4EC2277AAAC8888328EC5A64B /* Foundation.framework */; };
4CD53F2C3F07F184A4E9AFF987D853AE /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B694C6A7D3FC9AB7995C5B62E1A4C81 /* Configuration.swift */; };
4D3D267D5EC61A81B3E97776C1F90BC2 /* APIs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F6AE3BA0A5C5B83DF94B256CAB25B0C /* APIs.swift */; };
4EA043B27010D319B9D31A9ADCCF45EF /* ModelWithStringAdditionalPropertiesOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C82967D176BC23B0E60DCC01C09B338 /* ModelWithStringAdditionalPropertiesOnly.swift */; };
508F62094F4462562BA9D74DD32A1C69 /* Pods-TestClientApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A1A5FBE06254E8CD22605817BFC7C2A /* Pods-TestClientApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
5387216E723A3C68E851CA15573CDD71 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E230A0448B394DE26E688DAC8E6201E /* Request.swift */; };
54D7AEAF9281279158C7CDCC1519B34B /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 473EC0807F341A64DC33774F03A638B3 /* Extensions.swift */; };
56810CDE959C88C7EEE42689888E150B /* Pods-TestClientApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EC60D563053BA3E937E249D19CBE5AB2 /* Pods-TestClientApp-dummy.m */; };
61200D01A1855D7920CEF835C8BE00B0 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FCBF1EED873F61C6D46CE37FA5C39D3 /* DispatchQueue+Alamofire.swift */; };
62F65AD8DC4F0F9610F4B8B4738EC094 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B030D27CAC730C5EB0F22390645310 /* ServerTrustPolicy.swift */; };
7369905557251785485EE36C9E02F950 /* CodableHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BA405DCCE7A65CA4DA2B0E18A558185 /* CodableHelper.swift */; };
73B9C996AED49ED7CF8EC2A6F1738059 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D0533E4EC2277AAAC8888328EC5A64B /* Foundation.framework */; };
77801A4DCB8139D6B9FC60B06986AD59 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D0533E4EC2277AAAC8888328EC5A64B /* Foundation.framework */; };
7B5FE28C7EA4122B0598738E54DBEBD8 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 195D73DD9EF275A3C56569E2B1CA8026 /* SessionDelegate.swift */; };
7BDAAEFF614CDDFCF531965B3B601F12 /* JSONEncodingHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F0E897ED2B6C18C1ABE19A3EF6DCF35 /* JSONEncodingHelper.swift */; };
7D8CC01E8C9EFFF9F4D65406CDE0AB66 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D60BC9955B4F7FFA62D7440CB385C11 /* Result.swift */; };
807D53F45D99E98922CB3FB2FEB8D462 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD220E07F1C948623A75B94EDD204C80 /* Models.swift */; };
85476C195492B54CC2ABB83CF43A5DE8 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D6D1D5AA8D6F123E125C094F8425913 /* Configuration.swift */; };
8EE6FAE17F65067E7B0641BC226D29D5 /* APIs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0536CEC3E5D068534AF26E0822A0D37C /* APIs.swift */; };
908027787CFE432CE471A50AEC4DA4F9 /* ErrorInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95386376418CAFDA1C555370E0E12661 /* ErrorInfo.swift */; };
96A05165B067D8FC1A2B31CE4044EDAA /* GetAllModelsResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1957CD13F1600BC8EDCE77287E02ABC /* GetAllModelsResult.swift */; };
98827C3F0CFA7E3E35F58BCEE6377E4A /* AllPrimitives.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4FC498355B3CB3435063F534C912B2 /* AllPrimitives.swift */; };
9AFDBFF4428F1DAD2456F1961301F0DF /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403C559935235105D1940F7DA5169380 /* Models.swift */; };
9ED2BB2981896E0A39EFA365503F58CE /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AF006B0AD5765D1BFA8253C2DCBB126 /* AFError.swift */; };
A2A6F71B727312BD45CC7A4AAD7B0AB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5A8AA5F9EDED0A0BDDE7E830BF4AEE0 /* NetworkReachabilityManager.swift */; };
A9EEEA7477981DEEBC72432DE9990A4B /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C1C119BCE81C53F76CAC2BE27C38E0 /* Alamofire-dummy.m */; };
AB24B68901CDB824AFB369B1014C33B8 /* TestClient-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FC4FE79F27E53676B9780C2E0408FC /* TestClient-dummy.m */; };
AC651427062D320B701382DCE4EBB3E7 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 706C7AFFE37BA158C3553250F4B5FAED /* Alamofire.framework */; };
AE1EF48399533730D0066E04B22CA2D6 /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46CDAC6C1187C5467E576980E1062C8B /* SessionManager.swift */; };
B65FCF589DA398C3EFE0128064E510EC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 155538D91ACEEEDF82069ACF6C1A02E7 /* MultipartFormData.swift */; };
BBC8F5CBC843A3C3120323E14780D319 /* AlamofireImplementations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42773192875A3DCB787D7318929AA7F6 /* AlamofireImplementations.swift */; };
BBD1B0CD723F41BDB0D156F6918139DD /* ErrorInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BE43F1B5A892E876D859A4377375182 /* ErrorInfo.swift */; };
BBEFE2F9CEB73DC7BD97FFA66A0D9D4F /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B029DBC43E49A740F12B5E4D2E6DD452 /* Validation.swift */; };
BE5C67A07E289FE1F9BE27335B159997 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6639346628280A0D0FAD35196BF56108 /* ParameterEncoding.swift */; };
BE5EFF2B7869777404F6D9A4301C89F0 /* Pods-TestClientAppTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0708401DDCEA2C9766573FC25995B724 /* Pods-TestClientAppTests-dummy.m */; };
C35E9BD1765C0D9000B8909FD0DD340C /* AllPrimitives.swift in Sources */ = {isa = PBXBuildFile; fileRef = E39AD5DA1D27B3F292DCEEAE21D96605 /* AllPrimitives.swift */; };
CB6D60925223897FFA2662667DF83E8A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F47F5C9CDB035C5AFADEBA5BF44F1C /* Response.swift */; };
CDBEA35E8622312D4733BC983BE1B11D /* AlamofireImplementations.swift in Sources */ = {isa = PBXBuildFile; fileRef = C20D0A015D8572456F676A9F457B2620 /* AlamofireImplementations.swift */; };
E18BBF7C05EB830F0B976B4811DAB3CB /* JSONEncodableEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49F5BE6207AE35888A2153DFD4A2A185 /* JSONEncodableEncoding.swift */; };
E531E1C6340BC226B7C447C4918BF367 /* CodableHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E6AC9BC99E1DDA7047BF4B9D49EBF6 /* CodableHelper.swift */; };
DF576922335DC3DF1E0A2BB3F08E268C /* APIHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54BCC73C11DABEDD1168511015B45B0E /* APIHelper.swift */; };
E299DDE12086E1950BFE65FAE5B4BF6D /* ModelWithPropertiesAndAdditionalProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0A80B74145656740388A2F2A8A6DEF7 /* ModelWithPropertiesAndAdditionalProperties.swift */; };
E5A66AEEE7A4C9B38E9CD98DEA09FB71 /* GetAllModelsResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4968CA07A325BD0A1E7D4461BE26DC08 /* GetAllModelsResult.swift */; };
E8CC5F359BBC4B8CDD6D3F79A5C6921F /* ModelWithIntAdditionalPropertiesOnly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ABA4A6D64C66093979DF0370F028D48 /* ModelWithIntAdditionalPropertiesOnly.swift */; };
EFD264FC408EBF3BA2528E70B08DDD94 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66A46F517F0AF7E85A16D723F6406896 /* Notifications.swift */; };
F5A379B0E89E2F2180452DA685406FB4 /* VariableNameTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA19C43A35B935E36BDB03A579E03D76 /* VariableNameTest.swift */; };
F5F316ECD754ABA19404421A138CA442 /* TestClient-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 56FC4FE79F27E53676B9780C2E0408FC /* TestClient-dummy.m */; };
F6BECD98B97CBFEBE2C96F0E9E72A6C0 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2F9510473F6FFD7AA66524DB16C2263 /* ResponseSerialization.swift */; };
F8B3D3092ED0417E8CDF32033F6122F5 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFCB8C44DE758E906C0BCDA455937B85 /* Alamofire.swift */; };
F9F9D4F89331668EBF47EBF7F73E05B7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D0533E4EC2277AAAC8888328EC5A64B /* Foundation.framework */; };
FDDA91291F1F944700D12907 /* StringEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDB8DA7B1F1F93C60083AF83 /* StringEnum.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -80,20 +83,20 @@
/* Begin PBXFileReference section */
00F2B96AF439542BA8CB08C60AEDA11C /* TestClient-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TestClient-prefix.pch"; sourceTree = "<group>"; };
04E6AC9BC99E1DDA7047BF4B9D49EBF6 /* CodableHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CodableHelper.swift; sourceTree = "<group>"; };
04F47F5C9CDB035C5AFADEBA5BF44F1C /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = "<group>"; };
051F389CC74A5EEB0D289CBF0ACD7FF2 /* Pods_TestClientApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TestClientApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
0536CEC3E5D068534AF26E0822A0D37C /* APIs.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = APIs.swift; sourceTree = "<group>"; };
051F389CC74A5EEB0D289CBF0ACD7FF2 /* Pods_TestClientApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_TestClientApp.framework; path = "Pods-TestClientApp.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
0708401DDCEA2C9766573FC25995B724 /* Pods-TestClientAppTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-TestClientAppTests-dummy.m"; sourceTree = "<group>"; };
07B75A0B6C507BAECEA8916067F04CC1 /* Pods-TestClientAppTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-TestClientAppTests-acknowledgements.markdown"; sourceTree = "<group>"; };
0D0533E4EC2277AAAC8888328EC5A64B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
0F0E897ED2B6C18C1ABE19A3EF6DCF35 /* JSONEncodingHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JSONEncodingHelper.swift; sourceTree = "<group>"; };
0D48A7304C97E00597AD2C0888F305D4 /* StringEnum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StringEnum.swift; sourceTree = "<group>"; };
0FCBF1EED873F61C6D46CE37FA5C39D3 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = "<group>"; };
10D49DDF5275F7220CE632073C28829D /* Pods_TestClientAppTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TestClientAppTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
10D49DDF5275F7220CE632073C28829D /* Pods_TestClientAppTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_TestClientAppTests.framework; path = "Pods-TestClientAppTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
13A0A663B36A229C69D5274A83E93F88 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
155538D91ACEEEDF82069ACF6C1A02E7 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = "<group>"; };
195D73DD9EF275A3C56569E2B1CA8026 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = "<group>"; };
1AE1C790A3C1BAEC17CB4508DA52569D /* Pods-TestClientApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-TestClientApp.modulemap"; sourceTree = "<group>"; };
1A4FC498355B3CB3435063F534C912B2 /* AllPrimitives.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AllPrimitives.swift; sourceTree = "<group>"; };
1ADB9F167DA8EB39D3FA64AADB55D752 /* JSONEncodableEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JSONEncodableEncoding.swift; sourceTree = "<group>"; };
1AE1C790A3C1BAEC17CB4508DA52569D /* Pods-TestClientApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-TestClientApp.modulemap"; sourceTree = "<group>"; };
1E230A0448B394DE26E688DAC8E6201E /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = "<group>"; };
1E7748C6BC5C4971F0CE95DAC1C5C9AB /* Pods-TestClientAppTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-TestClientAppTests-frameworks.sh"; sourceTree = "<group>"; };
20BAA66C9CB47A7685E432795BD57F74 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@ -103,26 +106,31 @@
2E0292F5FFC33B8E8740CEE1C2FD591B /* Pods-TestClientApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-TestClientApp-acknowledgements.markdown"; sourceTree = "<group>"; };
31D7F9C80C3FD2025331A919AA7DB283 /* TestClient.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TestClient.xcconfig; sourceTree = "<group>"; };
32B030D27CAC730C5EB0F22390645310 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = "<group>"; };
3BA405DCCE7A65CA4DA2B0E18A558185 /* CodableHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CodableHelper.swift; sourceTree = "<group>"; };
3C82967D176BC23B0E60DCC01C09B338 /* ModelWithStringAdditionalPropertiesOnly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ModelWithStringAdditionalPropertiesOnly.swift; sourceTree = "<group>"; };
3D60BC9955B4F7FFA62D7440CB385C11 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = "<group>"; };
403C559935235105D1940F7DA5169380 /* Models.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = "<group>"; };
42773192875A3DCB787D7318929AA7F6 /* AlamofireImplementations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlamofireImplementations.swift; sourceTree = "<group>"; };
46CDAC6C1187C5467E576980E1062C8B /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = "<group>"; };
49F5BE6207AE35888A2153DFD4A2A185 /* JSONEncodableEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JSONEncodableEncoding.swift; sourceTree = "<group>"; };
473EC0807F341A64DC33774F03A638B3 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
4968CA07A325BD0A1E7D4461BE26DC08 /* GetAllModelsResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetAllModelsResult.swift; sourceTree = "<group>"; };
4AF006B0AD5765D1BFA8253C2DCBB126 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = "<group>"; };
505DF24A1D5BCB011EAED5834CF5E166 /* TestClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TestClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
505DF24A1D5BCB011EAED5834CF5E166 /* TestClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = TestClient.framework; path = TestClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
54BCC73C11DABEDD1168511015B45B0E /* APIHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = APIHelper.swift; sourceTree = "<group>"; };
56FC4FE79F27E53676B9780C2E0408FC /* TestClient-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TestClient-dummy.m"; sourceTree = "<group>"; };
58F8858EDEA88D85AAE1DF8EDE9DC77C /* Swift4TestAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Swift4TestAPI.swift; sourceTree = "<group>"; };
5D6D1D5AA8D6F123E125C094F8425913 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = "<group>"; };
64A7D3983284C3F8FD6A9C823E2C0205 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
6639346628280A0D0FAD35196BF56108 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = "<group>"; };
66A46F517F0AF7E85A16D723F6406896 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = "<group>"; };
6ABA4A6D64C66093979DF0370F028D48 /* ModelWithIntAdditionalPropertiesOnly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ModelWithIntAdditionalPropertiesOnly.swift; sourceTree = "<group>"; };
6F6AE3BA0A5C5B83DF94B256CAB25B0C /* APIs.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = APIs.swift; sourceTree = "<group>"; };
706C7AFFE37BA158C3553250F4B5FAED /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7B4EA8191BDD7C6FBCDA7BFABEAABD65 /* Pods-TestClientAppTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-TestClientAppTests-resources.sh"; sourceTree = "<group>"; };
7D141D1953E5C6E67E362CE73090E48A /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Alamofire.modulemap; sourceTree = "<group>"; };
83F55BF83F629A36D6E4DE56A7587EFE /* APIHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = APIHelper.swift; sourceTree = "<group>"; };
7D141D1953E5C6E67E362CE73090E48A /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Alamofire.modulemap; sourceTree = "<group>"; };
859F2A4BF103D649ABB3C578D06E5644 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
87882A1F5A92C8138D54545E51D51E6F /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = "<group>"; };
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
95386376418CAFDA1C555370E0E12661 /* ErrorInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ErrorInfo.swift; sourceTree = "<group>"; };
9A41065D7EDA73C5461089CE09642EF4 /* Pods-TestClientAppTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-TestClientAppTests.modulemap"; sourceTree = "<group>"; };
8B694C6A7D3FC9AB7995C5B62E1A4C81 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = "<group>"; };
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
9A41065D7EDA73C5461089CE09642EF4 /* Pods-TestClientAppTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-TestClientAppTests.modulemap"; sourceTree = "<group>"; };
9BE43F1B5A892E876D859A4377375182 /* ErrorInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ErrorInfo.swift; sourceTree = "<group>"; };
9D34026BC454C1DD59A8FEF08E0624FA /* Pods-TestClientAppTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-TestClientAppTests-umbrella.h"; sourceTree = "<group>"; };
A01C037B4034EDA3D7955BC5E4E9D9D6 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = "<group>"; };
A234B48049014361A63FD492CFA12C33 /* Pods-TestClientApp-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-TestClientApp-resources.sh"; sourceTree = "<group>"; };
@ -130,26 +138,24 @@
AD7CCEFF0491973C176C68B2094165CE /* Pods-TestClientAppTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TestClientAppTests.debug.xcconfig"; sourceTree = "<group>"; };
B029DBC43E49A740F12B5E4D2E6DD452 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = "<group>"; };
B44A27EFBB0DA84D738057B77F3413B1 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = "<group>"; };
B797C23587435A3F339881CAAC898D14 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B797C23587435A3F339881CAAC898D14 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B8147CAF0602FB410B68FCBBDDE1244A /* JSONEncodingHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = JSONEncodingHelper.swift; sourceTree = "<group>"; };
BCCA9CA7D9C1A2047BB93336C5708DFD /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = "<group>"; };
C20D0A015D8572456F676A9F457B2620 /* AlamofireImplementations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AlamofireImplementations.swift; sourceTree = "<group>"; };
CDBDC5987A4E733064132DD2651D8D4A /* VariableNameTest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VariableNameTest.swift; sourceTree = "<group>"; };
D380217817360C1C3B246D7430A57536 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D9B3CA0144002E01B7C258E2AFFC5ECC /* Pods-TestClientApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TestClientApp.debug.xcconfig"; sourceTree = "<group>"; };
DA19C43A35B935E36BDB03A579E03D76 /* VariableNameTest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VariableNameTest.swift; sourceTree = "<group>"; };
DD220E07F1C948623A75B94EDD204C80 /* Models.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = "<group>"; };
DFCB8C44DE758E906C0BCDA455937B85 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = "<group>"; };
E1957CD13F1600BC8EDCE77287E02ABC /* GetAllModelsResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GetAllModelsResult.swift; sourceTree = "<group>"; };
E0A80B74145656740388A2F2A8A6DEF7 /* ModelWithPropertiesAndAdditionalProperties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ModelWithPropertiesAndAdditionalProperties.swift; sourceTree = "<group>"; };
E2F9510473F6FFD7AA66524DB16C2263 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = "<group>"; };
E39AD5DA1D27B3F292DCEEAE21D96605 /* AllPrimitives.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AllPrimitives.swift; sourceTree = "<group>"; };
E5A8AA5F9EDED0A0BDDE7E830BF4AEE0 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = "<group>"; };
E6F34CCF86067ED508C12C676E298C69 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = "<group>"; };
E80AE90233A5A495A962073C089D20F5 /* TestClient.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = TestClient.modulemap; sourceTree = "<group>"; };
E80AE90233A5A495A962073C089D20F5 /* TestClient.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = TestClient.modulemap; sourceTree = "<group>"; };
EB09BADC596A8F1BDC2465074CEC2908 /* Pods-TestClientAppTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TestClientAppTests.release.xcconfig"; sourceTree = "<group>"; };
EC215D27FD61465426D20DB47BDF0A13 /* TestClient-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TestClient-umbrella.h"; sourceTree = "<group>"; };
EC60D563053BA3E937E249D19CBE5AB2 /* Pods-TestClientApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-TestClientApp-dummy.m"; sourceTree = "<group>"; };
F41BAD9018CDC154B7E15EBFFF0E69CB /* Pods-TestClientApp-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-TestClientApp-frameworks.sh"; sourceTree = "<group>"; };
F9A91F27AE4FAB04A7B18D186684BC24 /* Swift4TestAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Swift4TestAPI.swift; sourceTree = "<group>"; };
FA871D862680FF2E4D3660EEAFD05023 /* Pods-TestClientAppTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-TestClientAppTests-acknowledgements.plist"; sourceTree = "<group>"; };
FDB8DA7B1F1F93C60083AF83 /* StringEnum.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringEnum.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -229,21 +235,10 @@
B029DBC43E49A740F12B5E4D2E6DD452 /* Validation.swift */,
55F14F994FE7AB51F028BFE66CEF3106 /* Support Files */,
);
name = Alamofire;
path = Alamofire;
sourceTree = "<group>";
};
20F82AD8AB8A44DCA1E683A8640CA043 /* Models */ = {
isa = PBXGroup;
children = (
FDB8DA7B1F1F93C60083AF83 /* StringEnum.swift */,
E39AD5DA1D27B3F292DCEEAE21D96605 /* AllPrimitives.swift */,
95386376418CAFDA1C555370E0E12661 /* ErrorInfo.swift */,
E1957CD13F1600BC8EDCE77287E02ABC /* GetAllModelsResult.swift */,
DA19C43A35B935E36BDB03A579E03D76 /* VariableNameTest.swift */,
);
path = Models;
sourceTree = "<group>";
};
2FF51E396F814CDBFEF63FBE55F4DB94 /* Pods-TestClientAppTests */ = {
isa = PBXGroup;
children = (
@ -301,29 +296,12 @@
name = iOS;
sourceTree = "<group>";
};
530616A10EB9820B3B3D3639C9541C2B /* Swaggers */ = {
isa = PBXGroup;
children = (
C20D0A015D8572456F676A9F457B2620 /* AlamofireImplementations.swift */,
83F55BF83F629A36D6E4DE56A7587EFE /* APIHelper.swift */,
0536CEC3E5D068534AF26E0822A0D37C /* APIs.swift */,
04E6AC9BC99E1DDA7047BF4B9D49EBF6 /* CodableHelper.swift */,
5D6D1D5AA8D6F123E125C094F8425913 /* Configuration.swift */,
64A7D3983284C3F8FD6A9C823E2C0205 /* Extensions.swift */,
49F5BE6207AE35888A2153DFD4A2A185 /* JSONEncodableEncoding.swift */,
0F0E897ED2B6C18C1ABE19A3EF6DCF35 /* JSONEncodingHelper.swift */,
DD220E07F1C948623A75B94EDD204C80 /* Models.swift */,
9A505D484E83675727454467075A9031 /* APIs */,
20F82AD8AB8A44DCA1E683A8640CA043 /* Models */,
);
path = Swaggers;
sourceTree = "<group>";
};
55150D9BCBE0156582CD9BCAB75BEA88 /* TestClient */ = {
isa = PBXGroup;
children = (
6EB25EF4908044FE989DE53EF76DC47D /* Classes */,
);
name = TestClient;
path = TestClient;
sourceTree = "<group>";
};
@ -353,8 +331,9 @@
6EB25EF4908044FE989DE53EF76DC47D /* Classes */ = {
isa = PBXGroup;
children = (
530616A10EB9820B3B3D3639C9541C2B /* Swaggers */,
F8E5F93111B4632BF4CEAA6615E4F8E6 /* Swaggers */,
);
name = Classes;
path = Classes;
sourceTree = "<group>";
};
@ -370,14 +349,31 @@
);
sourceTree = "<group>";
};
9A505D484E83675727454467075A9031 /* APIs */ = {
8D2C9AD02753DA5142931DEB9E397331 /* APIs */ = {
isa = PBXGroup;
children = (
58F8858EDEA88D85AAE1DF8EDE9DC77C /* Swift4TestAPI.swift */,
F9A91F27AE4FAB04A7B18D186684BC24 /* Swift4TestAPI.swift */,
);
name = APIs;
path = APIs;
sourceTree = "<group>";
};
AC474B980F22BBF449598D00D657BB46 /* Models */ = {
isa = PBXGroup;
children = (
1A4FC498355B3CB3435063F534C912B2 /* AllPrimitives.swift */,
9BE43F1B5A892E876D859A4377375182 /* ErrorInfo.swift */,
4968CA07A325BD0A1E7D4461BE26DC08 /* GetAllModelsResult.swift */,
6ABA4A6D64C66093979DF0370F028D48 /* ModelWithIntAdditionalPropertiesOnly.swift */,
E0A80B74145656740388A2F2A8A6DEF7 /* ModelWithPropertiesAndAdditionalProperties.swift */,
3C82967D176BC23B0E60DCC01C09B338 /* ModelWithStringAdditionalPropertiesOnly.swift */,
0D48A7304C97E00597AD2C0888F305D4 /* StringEnum.swift */,
CDBDC5987A4E733064132DD2651D8D4A /* VariableNameTest.swift */,
);
name = Models;
path = Models;
sourceTree = "<group>";
};
D241D358AF2A3AD51333DD16741209F5 /* Products */ = {
isa = PBXGroup;
children = (
@ -407,6 +403,25 @@
path = "Target Support Files/Pods-TestClientApp";
sourceTree = "<group>";
};
F8E5F93111B4632BF4CEAA6615E4F8E6 /* Swaggers */ = {
isa = PBXGroup;
children = (
42773192875A3DCB787D7318929AA7F6 /* AlamofireImplementations.swift */,
54BCC73C11DABEDD1168511015B45B0E /* APIHelper.swift */,
6F6AE3BA0A5C5B83DF94B256CAB25B0C /* APIs.swift */,
3BA405DCCE7A65CA4DA2B0E18A558185 /* CodableHelper.swift */,
8B694C6A7D3FC9AB7995C5B62E1A4C81 /* Configuration.swift */,
473EC0807F341A64DC33774F03A638B3 /* Extensions.swift */,
1ADB9F167DA8EB39D3FA64AADB55D752 /* JSONEncodableEncoding.swift */,
B8147CAF0602FB410B68FCBBDDE1244A /* JSONEncodingHelper.swift */,
403C559935235105D1940F7DA5169380 /* Models.swift */,
8D2C9AD02753DA5142931DEB9E397331 /* APIs */,
AC474B980F22BBF449598D00D657BB46 /* Models */,
);
name = Swaggers;
path = Swaggers;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
@ -485,7 +500,7 @@
isa = PBXNativeTarget;
buildConfigurationList = A3C6C15D000D0C0BF929BB22D7E47460 /* Build configuration list for PBXNativeTarget "TestClient" */;
buildPhases = (
84F8DD24561589E606CA583744B6C382 /* Sources */,
66D8A345E619AC0BC716043483937293 /* Sources */,
AC284B2E37927E3BD90A51DE555787BE /* Frameworks */,
BCCD67B6417E44806203C28B41FEC4EA /* Headers */,
);
@ -579,26 +594,29 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
84F8DD24561589E606CA583744B6C382 /* Sources */ = {
66D8A345E619AC0BC716043483937293 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDBEA35E8622312D4733BC983BE1B11D /* AlamofireImplementations.swift in Sources */,
C35E9BD1765C0D9000B8909FD0DD340C /* AllPrimitives.swift in Sources */,
48F6766C23FAA1C3EB26F2C79D05E90C /* APIHelper.swift in Sources */,
8EE6FAE17F65067E7B0641BC226D29D5 /* APIs.swift in Sources */,
E531E1C6340BC226B7C447C4918BF367 /* CodableHelper.swift in Sources */,
85476C195492B54CC2ABB83CF43A5DE8 /* Configuration.swift in Sources */,
908027787CFE432CE471A50AEC4DA4F9 /* ErrorInfo.swift in Sources */,
FDDA91291F1F944700D12907 /* StringEnum.swift in Sources */,
32542C877A09177CAEFC4F74BD271948 /* Extensions.swift in Sources */,
96A05165B067D8FC1A2B31CE4044EDAA /* GetAllModelsResult.swift in Sources */,
E18BBF7C05EB830F0B976B4811DAB3CB /* JSONEncodableEncoding.swift in Sources */,
7BDAAEFF614CDDFCF531965B3B601F12 /* JSONEncodingHelper.swift in Sources */,
807D53F45D99E98922CB3FB2FEB8D462 /* Models.swift in Sources */,
0D4972E6BBD4F9648AB1A64E5EA0A450 /* Swift4TestAPI.swift in Sources */,
F5F316ECD754ABA19404421A138CA442 /* TestClient-dummy.m in Sources */,
F5A379B0E89E2F2180452DA685406FB4 /* VariableNameTest.swift in Sources */,
BBC8F5CBC843A3C3120323E14780D319 /* AlamofireImplementations.swift in Sources */,
98827C3F0CFA7E3E35F58BCEE6377E4A /* AllPrimitives.swift in Sources */,
DF576922335DC3DF1E0A2BB3F08E268C /* APIHelper.swift in Sources */,
4D3D267D5EC61A81B3E97776C1F90BC2 /* APIs.swift in Sources */,
7369905557251785485EE36C9E02F950 /* CodableHelper.swift in Sources */,
4CD53F2C3F07F184A4E9AFF987D853AE /* Configuration.swift in Sources */,
BBD1B0CD723F41BDB0D156F6918139DD /* ErrorInfo.swift in Sources */,
54D7AEAF9281279158C7CDCC1519B34B /* Extensions.swift in Sources */,
E5A66AEEE7A4C9B38E9CD98DEA09FB71 /* GetAllModelsResult.swift in Sources */,
06966509EB896061665956B254677EF3 /* JSONEncodableEncoding.swift in Sources */,
0A36E75434583424493479B3F81056C2 /* JSONEncodingHelper.swift in Sources */,
9AFDBFF4428F1DAD2456F1961301F0DF /* Models.swift in Sources */,
E8CC5F359BBC4B8CDD6D3F79A5C6921F /* ModelWithIntAdditionalPropertiesOnly.swift in Sources */,
E299DDE12086E1950BFE65FAE5B4BF6D /* ModelWithPropertiesAndAdditionalProperties.swift in Sources */,
4EA043B27010D319B9D31A9ADCCF45EF /* ModelWithStringAdditionalPropertiesOnly.swift in Sources */,
3684126CB8E9043D3CB679BD9F55DE3A /* StringEnum.swift in Sources */,
16F9658ACE3C8E51723FD4D2808BD5B7 /* Swift4TestAPI.swift in Sources */,
AB24B68901CDB824AFB369B1014C33B8 /* TestClient-dummy.m in Sources */,
1696BCB0ABCE1B4699943CBDD68BA0E7 /* VariableNameTest.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>4.5.0</string>
<string>4.5.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>

View File

@ -3,7 +3,7 @@ This application makes use of the following third party libraries:
## Alamofire
Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -14,7 +14,7 @@
</dict>
<dict>
<key>FooterText</key>
<string>Copyright (c) 2014-2016 Alamofire Software Foundation (http://alamofire.org/)
<string>Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal