//
//  Blog+JsonGen.swift
//
//  Auto generated by swift-json-gen on Fri, 30 Sep 2016 06:38:45 GMT
//  See for details: https://github.com/tomlokhorst/swift-json-gen
//

import Foundation
import Statham

extension Blog {
  static func decodeJson(_ json: Any) throws -> Blog {
    let decoder = try JsonDecoder(json: json)

    let _id = try decoder.decode("id", decoder: Int.decodeJson)
    let _name = try decoder.decode("name", decoder: String.decodeJson)
    let _author = try decoder.decode("author", decoder: Optional.decodeJson(String.decodeJson))
    let _needsPassword = try decoder.decode("needsPassword", decoder: Bool.decodeJson)
    let _url = try decoder.decode("url", decoder: URL.decodeJson)

    guard
      let id = _id,
      let name = _name,
      let author = _author,
      let needsPassword = _needsPassword,
      let url = _url
    else {
      throw JsonDecodeError.structErrors(type: "Blog", errors: decoder.errors)
    }

    return Blog(id: id, name: name, author: author, needsPassword: needsPassword, url: url)
  }

  func encodeJson() -> [String: Any] {
    var dict: [String: Any] = [:]

    dict["id"] = id.encodeJson()
    dict["name"] = name.encodeJson()
    dict["author"] = author.encodeJson({ $0.encodeJson() })
    dict["needsPassword"] = needsPassword.encodeJson()
    dict["url"] = url.encodeJson()

    return dict
  }
}