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;
}
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;
}
Aggregations