Search in sources :

Example 1 with HandshakeBuilder

use of org.java_websocket.handshake.HandshakeBuilder in project quorrabot by GloriousEggroll.

the class Draft method translateHandshakeHttp.

public static HandshakeBuilder translateHandshakeHttp(ByteBuffer buf, Role role) throws InvalidHandshakeException, IncompleteHandshakeException {
    HandshakeBuilder handshake;
    String line = readStringLine(buf);
    if (line == null) {
        throw new IncompleteHandshakeException(buf.capacity() + 128);
    }
    // eg. HTTP/1.1 101 Switching the Protocols
    String[] firstLineTokens = line.split(" ", 3);
    if (firstLineTokens.length != 3) {
        throw new InvalidHandshakeException();
    }
    if (role == Role.CLIENT) {
        // translating/parsing the response from the SERVER
        handshake = new HandshakeImpl1Server();
        ServerHandshakeBuilder serverhandshake = (ServerHandshakeBuilder) handshake;
        serverhandshake.setHttpStatus(Short.parseShort(firstLineTokens[1]));
        serverhandshake.setHttpStatusMessage(firstLineTokens[2]);
    } else {
        // translating/parsing the request from the CLIENT
        ClientHandshakeBuilder clienthandshake = new HandshakeImpl1Client();
        clienthandshake.setResourceDescriptor(firstLineTokens[1]);
        handshake = clienthandshake;
    }
    line = readStringLine(buf);
    while (line != null && line.length() > 0) {
        String[] pair = line.split(":", 2);
        if (pair.length != 2) {
            throw new InvalidHandshakeException("not an http header");
        }
        handshake.put(pair[0], pair[1].replaceFirst("^ +", ""));
        line = readStringLine(buf);
    }
    if (line == null) {
        throw new IncompleteHandshakeException();
    }
    return handshake;
}
Also used : HandshakeImpl1Server(org.java_websocket.handshake.HandshakeImpl1Server) IncompleteHandshakeException(org.java_websocket.exceptions.IncompleteHandshakeException) ClientHandshakeBuilder(org.java_websocket.handshake.ClientHandshakeBuilder) HandshakeBuilder(org.java_websocket.handshake.HandshakeBuilder) ServerHandshakeBuilder(org.java_websocket.handshake.ServerHandshakeBuilder) InvalidHandshakeException(org.java_websocket.exceptions.InvalidHandshakeException) ServerHandshakeBuilder(org.java_websocket.handshake.ServerHandshakeBuilder) HandshakeImpl1Client(org.java_websocket.handshake.HandshakeImpl1Client) ClientHandshakeBuilder(org.java_websocket.handshake.ClientHandshakeBuilder)

Example 2 with HandshakeBuilder

use of org.java_websocket.handshake.HandshakeBuilder in project quorrabot by GloriousEggroll.

the class Draft_76 method translateHandshake.

@Override
public Handshakedata translateHandshake(ByteBuffer buf) throws InvalidHandshakeException {
    HandshakeBuilder bui = translateHandshakeHttp(buf, role);
    // the first drafts are lacking a protocol number which makes them difficult to distinguish. Sec-WebSocket-Key1 is typical for draft76
    if ((bui.hasFieldValue("Sec-WebSocket-Key1") || role == Role.CLIENT) && !bui.hasFieldValue("Sec-WebSocket-Version")) {
        byte[] key3 = new byte[role == Role.SERVER ? 8 : 16];
        try {
            buf.get(key3);
        } catch (BufferUnderflowException e) {
            throw new IncompleteHandshakeException(buf.capacity() + 16);
        }
        bui.setContent(key3);
    }
    return bui;
}
Also used : IncompleteHandshakeException(org.java_websocket.exceptions.IncompleteHandshakeException) ClientHandshakeBuilder(org.java_websocket.handshake.ClientHandshakeBuilder) HandshakeBuilder(org.java_websocket.handshake.HandshakeBuilder) ServerHandshakeBuilder(org.java_websocket.handshake.ServerHandshakeBuilder) BufferUnderflowException(java.nio.BufferUnderflowException)

Aggregations

IncompleteHandshakeException (org.java_websocket.exceptions.IncompleteHandshakeException)2 ClientHandshakeBuilder (org.java_websocket.handshake.ClientHandshakeBuilder)2 HandshakeBuilder (org.java_websocket.handshake.HandshakeBuilder)2 ServerHandshakeBuilder (org.java_websocket.handshake.ServerHandshakeBuilder)2 BufferUnderflowException (java.nio.BufferUnderflowException)1 InvalidHandshakeException (org.java_websocket.exceptions.InvalidHandshakeException)1 HandshakeImpl1Client (org.java_websocket.handshake.HandshakeImpl1Client)1 HandshakeImpl1Server (org.java_websocket.handshake.HandshakeImpl1Server)1