ScannerVision Web Server

<back to all web services

JsonServerInformationRequest

Requires Authentication
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 .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /json/reply/JsonServerInformationRequest HTTP/1.1 
Host: buildmax.org 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"ClientHostName":"String","UserName":"String","IsPro":false,"ClientId":"String","ClientCode":"String","ClientRegistrationCode":"String","Token":"String"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"ClientIpAddress":"String","ClientGuid":"String","ClientName":"String","ClientId":"String","UserHomeFolder":"String","UserEmail":"String","ServerVersion":"String","AllowUpdate":false,"FtpUsername":"String","FtpPassword":"String","AdminUsername":"String","AdminPassword":"String","FtpPort":0,"SupportedDocumentFormats":["String"],"HpnVersion":"String"}