[swift3] empty model with only additional properties (#6273)

This commit is contained in:
Michael Kaye 2017-08-11 18:03:37 +01:00 committed by wing328
parent ab28c7c825
commit c2ababbb5b
40 changed files with 188 additions and 17 deletions

View File

@ -277,7 +277,7 @@ class Decoders {
{{/isEnum}}
{{^isEnum}}
{{#allVars.isEmpty}}
if let source = source as? {{dataType}} {
if let source = source as? {{classname}} {
return .success(source)
} else {
return .failure(.typeMismatch(expected: "Typealias {{classname}}", actual: "\(source)"))
@ -335,8 +335,11 @@ class Decoders {
}
for key in propsDictionary.keys {
if let decodedValue = Decoders.decodeOptional(clazz: String.self, source: propsDictionary[key] as AnyObject?) {
result[key] = decodedValue
switch Decoders.decodeOptional(clazz: String.self, source: propsDictionary[key] as AnyObject?) {
case let .success(value): result[key] = value
default: continue
}
}
{{/additionalPropertiesType}}

View File

@ -24,10 +24,6 @@ public enum {{classname}}: {{dataType}} {
}
{{/isEnum}}
{{^isEnum}}
{{#vars.isEmpty}}
public typealias {{classname}} = {{dataType}}
{{/vars.isEmpty}}
{{^vars.isEmpty}}
open class {{classname}}: {{#parent}}{{{parent}}}{{/parent}}{{^parent}}JSONEncodable{{/parent}} {
{{#vars}}
@ -102,7 +98,7 @@ open class {{classname}}: {{#parent}}{{{parent}}}{{/parent}}{{^parent}}JSONEncod
return dictionary
}
}
{{/vars.isEmpty}}
{{/isEnum}}
{{/isArrayModel}}
{{/model}}

View File

@ -0,0 +1 @@
2.3.0-SNAPSHOT

View File

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

View File

@ -83,4 +83,97 @@ extension NSUUID: JSONEncodable {
}
}
/// Represents an ISO-8601 full-date (RFC-3339).
/// ex: 12-31-1999
/// https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14
public final class ISOFullDate: CustomStringConvertible {
public let year: Int
public let month: Int
public let day: Int
public init(year year: Int, month: Int, day: Int) {
self.year = year
self.month = month
self.day = day
}
/**
Converts an NSDate to an ISOFullDate. Only interested in the year, month, day components.
- parameter date: The date to convert.
- returns: An ISOFullDate constructed from the year, month, day of the date.
*/
public static func from(date date: NSDate) -> ISOFullDate? {
guard let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian) else {
return nil
}
let components = calendar.components(
[
.Year,
.Month,
.Day,
],
fromDate: date
)
return ISOFullDate(
year: components.year,
month: components.month,
day: components.day
)
}
/**
Converts a ISO-8601 full-date string to an ISOFullDate.
- parameter string: The ISO-8601 full-date format string to convert.
- returns: An ISOFullDate constructed from the string.
*/
public static func from(string string: String) -> ISOFullDate? {
let components = string
.characters
.split("-")
.map(String.init)
.flatMap { Int($0) }
guard components.count == 3 else { return nil }
return ISOFullDate(
year: components[0],
month: components[1],
day: components[2]
)
}
/**
Converts the receiver to an NSDate, in the default time zone.
- returns: An NSDate from the components of the receiver, in the default time zone.
*/
public func toDate() -> NSDate? {
let components = NSDateComponents()
components.year = year
components.month = month
components.day = day
components.timeZone = NSTimeZone.defaultTimeZone()
let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)
return calendar?.dateFromComponents(components)
}
// MARK: CustomStringConvertible
public var description: String {
return "\(year)-\(month)-\(day)"
}
}
extension ISOFullDate: JSONEncodable {
public func encodeToJSON() -> AnyObject {
return "\(year)-\(month)-\(day)"
}
}

View File

@ -142,6 +142,15 @@ class Decoders {
fatalError("formatter failed to parse \(source)")
}
// Decoder for ISOFullDate
Decoders.addDecoder(clazz: ISOFullDate.self, decoder: { (source: AnyObject) -> ISOFullDate in
if let string = source as? String,
let isoDate = ISOFullDate.from(string: string) {
return isoDate
}
fatalError("formatter failed to parse \(source)")
})
// Decoder for [Return]
Decoders.addDecoder(clazz: [Return].self) { (source: AnyObject) -> [Return] in
return Decoders.decode(clazz: [Return].self, source: source)

View File

@ -824,7 +824,7 @@ class Decoders {
}
// Decoder for OuterBoolean
Decoders.addDecoder(clazz: OuterBoolean.self) { (source: AnyObject, instance: AnyObject?) -> Decoded<OuterBoolean> in
if let source = source as? Bool {
if let source = source as? OuterBoolean {
return .success(source)
} else {
return .failure(.typeMismatch(expected: "Typealias OuterBoolean", actual: "\(source)"))
@ -864,7 +864,7 @@ class Decoders {
}
// Decoder for OuterNumber
Decoders.addDecoder(clazz: OuterNumber.self) { (source: AnyObject, instance: AnyObject?) -> Decoded<OuterNumber> in
if let source = source as? Double {
if let source = source as? OuterNumber {
return .success(source)
} else {
return .failure(.typeMismatch(expected: "Typealias OuterNumber", actual: "\(source)"))
@ -872,7 +872,7 @@ class Decoders {
}
// Decoder for OuterString
Decoders.addDecoder(clazz: OuterString.self) { (source: AnyObject, instance: AnyObject?) -> Decoded<OuterString> in
if let source = source as? String {
if let source = source as? OuterString {
return .success(source)
} else {
return .failure(.typeMismatch(expected: "Typealias OuterString", actual: "\(source)"))

View File

@ -25,3 +25,4 @@ open class AdditionalPropertiesClass: JSONEncodable {
return dictionary
}
}

View File

@ -25,3 +25,4 @@ open class Animal: JSONEncodable {
return dictionary
}
}

View File

@ -27,3 +27,4 @@ open class ApiResponse: JSONEncodable {
return dictionary
}
}

View File

@ -23,3 +23,4 @@ open class ArrayOfArrayOfNumberOnly: JSONEncodable {
return dictionary
}
}

View File

@ -23,3 +23,4 @@ open class ArrayOfNumberOnly: JSONEncodable {
return dictionary
}
}

View File

@ -27,3 +27,4 @@ open class ArrayTest: JSONEncodable {
return dictionary
}
}

View File

@ -34,3 +34,4 @@ open class Capitalization: JSONEncodable {
return dictionary
}
}

View File

@ -23,3 +23,4 @@ open class Cat: Animal {
return dictionary
}
}

View File

@ -25,3 +25,4 @@ open class Category: JSONEncodable {
return dictionary
}
}

View File

@ -24,3 +24,4 @@ open class ClassModel: JSONEncodable {
return dictionary
}
}

View File

@ -23,3 +23,4 @@ open class Client: JSONEncodable {
return dictionary
}
}

View File

@ -23,3 +23,4 @@ open class Dog: Animal {
return dictionary
}
}

View File

@ -33,3 +33,4 @@ open class EnumArrays: JSONEncodable {
return dictionary
}
}

View File

@ -42,3 +42,4 @@ open class EnumTest: JSONEncodable {
return dictionary
}
}

View File

@ -47,3 +47,4 @@ open class FormatTest: JSONEncodable {
return dictionary
}
}

View File

@ -25,3 +25,4 @@ open class HasOnlyReadOnly: JSONEncodable {
return dictionary
}
}

View File

@ -23,3 +23,4 @@ open class List: JSONEncodable {
return dictionary
}
}

View File

@ -28,3 +28,4 @@ open class MapTest: JSONEncodable {
return dictionary
}
}

View File

@ -27,3 +27,4 @@ open class MixedPropertiesAndAdditionalPropertiesClass: JSONEncodable {
return dictionary
}
}

View File

@ -26,3 +26,4 @@ open class Model200Response: JSONEncodable {
return dictionary
}
}

View File

@ -30,3 +30,4 @@ open class Name: JSONEncodable {
return dictionary
}
}

View File

@ -23,3 +23,4 @@ open class NumberOnly: JSONEncodable {
return dictionary
}
}

View File

@ -39,3 +39,4 @@ open class Order: JSONEncodable {
return dictionary
}
}

View File

@ -8,4 +8,17 @@
import Foundation
public typealias OuterBoolean = Bool
open class OuterBoolean: JSONEncodable {
public init() {}
// MARK: JSONEncodable
open func encodeToJSON() -> Any {
var nillableDictionary = [String:Any?]()
let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
return dictionary
}
}

View File

@ -27,3 +27,4 @@ open class OuterComposite: JSONEncodable {
return dictionary
}
}

View File

@ -8,4 +8,17 @@
import Foundation
public typealias OuterNumber = Double
open class OuterNumber: JSONEncodable {
public init() {}
// MARK: JSONEncodable
open func encodeToJSON() -> Any {
var nillableDictionary = [String:Any?]()
let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
return dictionary
}
}

View File

@ -8,4 +8,17 @@
import Foundation
public typealias OuterString = String
open class OuterString: JSONEncodable {
public init() {}
// MARK: JSONEncodable
open func encodeToJSON() -> Any {
var nillableDictionary = [String:Any?]()
let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
return dictionary
}
}

View File

@ -39,3 +39,4 @@ open class Pet: JSONEncodable {
return dictionary
}
}

View File

@ -25,3 +25,4 @@ open class ReadOnlyFirst: JSONEncodable {
return dictionary
}
}

View File

@ -24,3 +24,4 @@ open class Return: JSONEncodable {
return dictionary
}
}

View File

@ -23,3 +23,4 @@ open class SpecialModelName: JSONEncodable {
return dictionary
}
}

View File

@ -25,3 +25,4 @@ open class Tag: JSONEncodable {
return dictionary
}
}

View File

@ -38,3 +38,4 @@ open class User: JSONEncodable {
return dictionary
}
}