def test_request_parsing_with_range_from_middle(): # run http_request = parse_http_request(REQUEST_WITH_RANGE_FROM_MIDDLE) # assert tools.assert_true(http_request.is_range_requested()) tools.assert_equals(http_request.get_range(), (5, 10))
def test_request_parsing_with_range_from_zero(): # run http_request = parse_http_request(REQUEST_WITH_RANGE_FROM_ZERO) # assert tools.assert_true(http_request.is_range_requested()) tools.assert_equals(http_request.get_range(), (0, None))
def test_good_http_request_2(): # setup headers_expected_result = {} # run http_request = parse_http_request(GOOD_REQUEST_2) # assert tools.assert_equals(http_request.method, 'GET') tools.assert_equals(http_request.request_uri, '/') tools.assert_equals(http_request.protocol, 'HTTP/1.1') tools.assert_equals(http_request.headers, headers_expected_result)
def test_good_http_request_1(): # setup headers_expected_result = { 'Host': 'localhost:5555', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Encoding': 'gzip,deflate,sdch', 'Accept-Language': 'en-US,en;q=0.8', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', } # run http_request = parse_http_request(GOOD_REQUEST_1) # assert tools.assert_equals(http_request.method, 'GET') tools.assert_equals(http_request.request_uri, '/') tools.assert_equals(http_request.protocol, 'HTTP/1.1') tools.assert_equals(http_request.headers, headers_expected_result)
def test_bad_http_request_2(): parse_http_request(BAD_REQUEST_2)
def test_http_request_data_empty_string(): parse_http_request('')
def test_http_request_data_none(): parse_http_request(None)
def handle_request(clientsock): Log.info('gdz.log handle_request --begin') data = clientsock.recv(RECV_BUFSIZ) Log.debug('Request received:\n%s', data) request = parse_http_request(data) Log.debug('gdz.log request ist: %s', json.dumps(str(request))) params = {} i = 0 for item in str(request.request_uri[1:]).split('/'): key, value = i, item params[key] = value i = i+1 Log.debug('gdz.log params: %s', json.dumps(params)) file = get_file(params[2]) Log.debug('gdz.log file.info: %s', json.dumps(file.__dict__)) if (file.exists == False) and (params[0] == 'api'): result = {} Log.debug('gdz.log 0. heute ist api') response = HttpResponse(protocol=request.protocol, status_code=200) response.headers['charset'] = 'utf-8' response.headers['Content-type'] = 'text/plain' result['code'] = 0 result['msg'] = '请求主页成功' result['success'] = 'true' if params[2] == 'home': result['result'] = getHomeContent() elif params[2] == 'categoryList': result['result'] = getCategoryList() elif params[2] == 'categoryDetail': result['result'] = getCategoryDetail() else: result['success'] = 'false' result['code'] = -1 result['msg'] = 'not fund' Log.info(json.dumps(result)) response.content = json.dumps(result) elif file.exists and request.is_range_requested(): Log.debug('gdz.log 1. ist range requested.') response = HttpResponse(protocol=request.protocol, status_code=206, range=request.get_range()) response.file = file elif file.exists: Log.debug('gdz.log 2. file exists.') response = HttpResponse(protocol=request.protocol, status_code=200) response.headers['charset'] = 'utf-8' response.file = file else: Log.debug('gdz.log 3. file ist not gefunden.') response = HttpResponse(protocol=request.protocol, status_code=404) response.headers['Content-type'] = 'text/plain' response.headers['charset'] = 'utf-8' response.content = 'This file does not exist!' Log.info('GET %s %s %s %s', request.request_uri, request.protocol, request.get_range(), response.status_code) response.write_to(clientsock) clientsock.close() Log.info('gdz.log handle_request --end')