import Foundation
import ServiceStack
public class JsonServerInformationRequest : JsonRequestDto
{
public var clientHostName:String
public var userName:String
public var isPro:Bool
public var clientId:String
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case clientHostName
case userName
case isPro
case clientId
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
clientHostName = try container.decodeIfPresent(String.self, forKey: .clientHostName)
userName = try container.decodeIfPresent(String.self, forKey: .userName)
isPro = try container.decodeIfPresent(Bool.self, forKey: .isPro)
clientId = try container.decodeIfPresent(String.self, forKey: .clientId)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if clientHostName != nil { try container.encode(clientHostName, forKey: .clientHostName) }
if userName != nil { try container.encode(userName, forKey: .userName) }
if isPro != nil { try container.encode(isPro, forKey: .isPro) }
if clientId != nil { try container.encode(clientId, forKey: .clientId) }
}
}
public class JsonRequestDto : JsonDto
{
public var clientCode:String
public var clientRegistrationCode:String
public var token:String
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case clientCode
case clientRegistrationCode
case token
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
clientCode = try container.decodeIfPresent(String.self, forKey: .clientCode)
clientRegistrationCode = try container.decodeIfPresent(String.self, forKey: .clientRegistrationCode)
token = try container.decodeIfPresent(String.self, forKey: .token)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if clientCode != nil { try container.encode(clientCode, forKey: .clientCode) }
if clientRegistrationCode != nil { try container.encode(clientRegistrationCode, forKey: .clientRegistrationCode) }
if token != nil { try container.encode(token, forKey: .token) }
}
}
public class JsonDto : Codable
{
required public init(){}
}
public class JsonServerInformationResponse : JsonDto
{
public var clientIpAddress:String
public var clientGuid:String
public var clientName:String
public var clientId:String
public var userHomeFolder:String
public var userEmail:String
public var serverVersion:String
public var allowUpdate:Bool
public var ftpUsername:String
public var ftpPassword:String
public var adminUsername:String
public var adminPassword:String
public var ftpPort:Int
public var supportedDocumentFormats:[String] = []
public var hpnVersion:String
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case clientIpAddress
case clientGuid
case clientName
case clientId
case userHomeFolder
case userEmail
case serverVersion
case allowUpdate
case ftpUsername
case ftpPassword
case adminUsername
case adminPassword
case ftpPort
case supportedDocumentFormats
case hpnVersion
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
clientIpAddress = try container.decodeIfPresent(String.self, forKey: .clientIpAddress)
clientGuid = try container.decodeIfPresent(String.self, forKey: .clientGuid)
clientName = try container.decodeIfPresent(String.self, forKey: .clientName)
clientId = try container.decodeIfPresent(String.self, forKey: .clientId)
userHomeFolder = try container.decodeIfPresent(String.self, forKey: .userHomeFolder)
userEmail = try container.decodeIfPresent(String.self, forKey: .userEmail)
serverVersion = try container.decodeIfPresent(String.self, forKey: .serverVersion)
allowUpdate = try container.decodeIfPresent(Bool.self, forKey: .allowUpdate)
ftpUsername = try container.decodeIfPresent(String.self, forKey: .ftpUsername)
ftpPassword = try container.decodeIfPresent(String.self, forKey: .ftpPassword)
adminUsername = try container.decodeIfPresent(String.self, forKey: .adminUsername)
adminPassword = try container.decodeIfPresent(String.self, forKey: .adminPassword)
ftpPort = try container.decodeIfPresent(Int.self, forKey: .ftpPort)
supportedDocumentFormats = try container.decodeIfPresent([String].self, forKey: .supportedDocumentFormats) ?? []
hpnVersion = try container.decodeIfPresent(String.self, forKey: .hpnVersion)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if clientIpAddress != nil { try container.encode(clientIpAddress, forKey: .clientIpAddress) }
if clientGuid != nil { try container.encode(clientGuid, forKey: .clientGuid) }
if clientName != nil { try container.encode(clientName, forKey: .clientName) }
if clientId != nil { try container.encode(clientId, forKey: .clientId) }
if userHomeFolder != nil { try container.encode(userHomeFolder, forKey: .userHomeFolder) }
if userEmail != nil { try container.encode(userEmail, forKey: .userEmail) }
if serverVersion != nil { try container.encode(serverVersion, forKey: .serverVersion) }
if allowUpdate != nil { try container.encode(allowUpdate, forKey: .allowUpdate) }
if ftpUsername != nil { try container.encode(ftpUsername, forKey: .ftpUsername) }
if ftpPassword != nil { try container.encode(ftpPassword, forKey: .ftpPassword) }
if adminUsername != nil { try container.encode(adminUsername, forKey: .adminUsername) }
if adminPassword != nil { try container.encode(adminPassword, forKey: .adminPassword) }
if ftpPort != nil { try container.encode(ftpPort, forKey: .ftpPort) }
if supportedDocumentFormats.count > 0 { try container.encode(supportedDocumentFormats, forKey: .supportedDocumentFormats) }
if hpnVersion != nil { try container.encode(hpnVersion, forKey: .hpnVersion) }
}
}
Swift JsonServerInformationRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /xml/reply/JsonServerInformationRequest HTTP/1.1
Host: buildmax.org
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<JsonServerInformationRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ScannerVision.WebService.Json.Dto">
<ClientCode>String</ClientCode>
<ClientRegistrationCode>String</ClientRegistrationCode>
<Token>String</Token>
<ClientHostName>String</ClientHostName>
<ClientId>String</ClientId>
<IsPro>false</IsPro>
<UserName>String</UserName>
</JsonServerInformationRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<JsonServerInformationResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ScannerVision.WebService.Json.Dto">
<AdminPassword>String</AdminPassword>
<AdminUsername>String</AdminUsername>
<AllowUpdate>false</AllowUpdate>
<ClientGuid>String</ClientGuid>
<ClientId>String</ClientId>
<ClientIpAddress>String</ClientIpAddress>
<ClientName>String</ClientName>
<FtpPassword>String</FtpPassword>
<FtpPort>0</FtpPort>
<FtpUsername>String</FtpUsername>
<HpnVersion>String</HpnVersion>
<ServerVersion>String</ServerVersion>
<SupportedDocumentFormats xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:string>String</d2p1:string>
</SupportedDocumentFormats>
<UserEmail>String</UserEmail>
<UserHomeFolder>String</UserHomeFolder>
</JsonServerInformationResponse>