forked from shadowfacts/Tusker
Shadowfacts
787dc9f24f
If an application provides its URL as an empty string, decoding it would cause throw an error because Foundation's URL class does not accept empty strings. Instead, during parsing, consume the invalid URL and replace it with a `nil` app URL.
33 lines
809 B
Swift
33 lines
809 B
Swift
//
|
|
// Application.swift
|
|
// Pachyderm
|
|
//
|
|
// Created by Shadowfacts on 9/9/18.
|
|
// Copyright © 2018 Shadowfacts. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public class Application: Decodable {
|
|
public let name: String
|
|
public let website: URL?
|
|
|
|
public required init(from decoder: Decoder) throws {
|
|
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
|
|
self.name = try container.decode(String.self, forKey: .name)
|
|
|
|
if let websiteStr = try container.decodeIfPresent(String.self, forKey: .website),
|
|
let url = URL(string: websiteStr) {
|
|
self.website = url
|
|
} else {
|
|
self.website = nil
|
|
}
|
|
}
|
|
|
|
private enum CodingKeys: String, CodingKey {
|
|
case name
|
|
case website
|
|
}
|
|
}
|