public void closeConnection(capex.http.HTTPClientListener listener)
 {
     if (!(openSocket != null))
     {
         return;
     }
     if (listener != null)
     {
         listener.onStatus("Closing connection");
     }
     openSocket.close();
     openSocket         = null;
     openSocketProtocol = null;
     openSocketAddress  = null;
     openSocketPort     = 0;
     parser             = null;
     if (listener != null)
     {
         listener.onStatus(null);
     }
 }
        public bool openConnection(string protocol, string address, int aport, capex.http.HTTPClientListener listener)
        {
            closeConnection(listener);
            if (cape.String.isEmpty(address))
            {
                if (listener != null)
                {
                    listener.onError("No server address");
                }
                return(false);
            }
            if (!(object.Equals(protocol, "http")) && !(object.Equals(protocol, "https")))
            {
                if (listener != null)
                {
                    listener.onError("Protocol must be http or https");
                }
                return(false);
            }
            var port = aport;

            if (port < 1)
            {
                if (object.Equals(protocol, "https"))
                {
                    port = 443;
                }
                else
                {
                    port = 80;
                }
            }
            if (listener != null)
            {
                listener.onStatus("Connecting to server `" + address + ":" + cape.String.forInteger(port) + "' ..");
            }
            openSocket = (capex.net.ConnectedSocket)capex.net.TCPSocket.createAndConnect(address, port);
            if (listener != null)
            {
                listener.onStatus(null);
            }
            if (openSocket == null)
            {
                if (listener != null)
                {
                    listener.onError("Connection failed: `" + address + ":" + cape.String.forInteger(port) + "'");
                }
                return(false);
            }
            if (object.Equals(protocol, "https"))
            {
                openSocket = (capex.net.ConnectedSocket)capex.net.SSLSocket.forClient(openSocket, address, null, acceptInvalidCertificate);
                if (openSocket == null && listener != null)
                {
                    listener.onError("FAILED to create SSL socket for HTTPS");
                    closeConnection(listener);
                    return(false);
                }
            }
            openSocketProtocol = protocol;
            openSocketAddress  = address;
            openSocketPort     = port;
            parser             = new capex.http.HTTPClientOperation.MyResponseParser();
            return(true);
        }