forked from loafle/openapi-generator-original
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:
parent
8067612e06
commit
b807f6ff96
@ -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()
|
||||
|
@ -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}}
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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" ]
|
||||
} ]
|
||||
}}]
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,9 +1,9 @@
|
||||

|
||||

|
||||
|
||||
[](https://travis-ci.org/Alamofire/Alamofire)
|
||||
[](https://img.shields.io/cocoapods/v/Alamofire.svg)
|
||||
[](https://github.com/Carthage/Carthage)
|
||||
[](http://cocoadocs.org/docsets/Alamofire)
|
||||
[](https://alamofire.github.io/Alamofire)
|
||||
[](http://twitter.com/AlamofireSF)
|
||||
[](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?
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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`
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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: "/")
|
||||
}()
|
||||
|
||||
|
@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user