from mod_pywebsocket import msgutil
from mod_pywebsocket import common

def web_socket_do_extra_handshake(request):
  deflate_found = False

  if request.ws_extension_processors is not None:
    for extension_processor in request.ws_extension_processors:
      if extension_processor.name() == "deflate":
        extension_processor.set_client_no_context_takeover(True)
        deflate_found = True

  if deflate_found is False:
    raise ValueError('deflate extension processor not found')

def web_socket_transfer_data(request):
  while True:
    rcvd = msgutil.receive_message(request)
    opcode = request.ws_stream.get_last_received_opcode()
    if (opcode == common.OPCODE_BINARY):
      msgutil.send_message(request, rcvd, binary=True)
    elif (opcode == common.OPCODE_TEXT):
      msgutil.send_message(request, rcvd)