Skip to content

Commit f38af61

Browse files
committed
Coding style improvements
1 parent e985c67 commit f38af61

3 files changed

Lines changed: 24 additions & 20 deletions

File tree

Lib/http/server.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ def do_GET(self):
684684
f = self.send_head()
685685
if f:
686686
try:
687-
self.copyfile(f, self.wfile, range=self.range)
687+
self.copyfile(f, self.wfile, range=self._range)
688688
finally:
689689
f.close()
690690

@@ -707,7 +707,7 @@ def send_head(self):
707707
"""
708708
path = self.translate_path(self.path)
709709
f = None
710-
self.range = self.parse_range()
710+
self._range = self.parse_range()
711711
if os.path.isdir(path):
712712
parts = urllib.parse.urlsplit(self.path)
713713
if not parts.path.endswith('/'):
@@ -772,14 +772,16 @@ def send_head(self):
772772
f.close()
773773
return None
774774

775-
if self.range:
776-
start, end = self.range
775+
if self._range:
776+
start, end = self._range
777777
if start is None:
778778
# `end` here means suffix length
779779
start = max(0, fs.st_size - end)
780780
end = fs.st_size - 1
781781
if start >= fs.st_size:
782-
# 416 REQUESTED_RANGE_NOT_SATISFIABLE means that none of the range values overlap the extent of the resource
782+
# 416 REQUESTED_RANGE_NOT_SATISFIABLE means that
783+
# none of the range values overlap the extent of
784+
# the resource
783785
f.close()
784786
self.send_error(HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE)
785787
return None
@@ -790,11 +792,11 @@ def send_head(self):
790792
self.send_header("Content-Length", str(end - start + 1))
791793

792794
# Update range to be sent to be used later in copyfile
793-
self.range = (start, end)
795+
self._range = (start, end)
794796
else:
795797
self.send_response(HTTPStatus.OK)
796798
self.send_header("Accept-Ranges", "bytes")
797-
self.send_header("Content-Length", str(fs[6]))
799+
self.send_header("Content-Length", str(fs.st_size))
798800
self.send_header("Content-type", ctype)
799801
self.send_header("Last-Modified",
800802
self.date_time_string(fs.st_mtime))
@@ -956,10 +958,10 @@ def parse_range(self):
956958
957959
"""
958960
range_header = self.headers.get('range')
959-
if not range_header:
961+
if range_header is None:
960962
return None
961963
m = RANGE_REGEX_PATTERN.match(range_header)
962-
if not m:
964+
if m is None:
963965
return None
964966

965967
start = int(m.group(1)) if m.group(1) else None

Lib/test/test_httpservers.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -540,48 +540,49 @@ def test_get(self):
540540
os.chmod(self.tempdir, 0o755)
541541

542542
def test_range_get(self):
543-
response = self.request(self.base_url + '/test')
543+
route = self.base_url + '/test'
544+
response = self.request(route)
544545
self.assertEqual(response.getheader('accept-ranges'), 'bytes')
545546
self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
546547

547548
# valid ranges
548-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=3-12'})
549+
response = self.request(route, headers={'Range': 'bytes=3-12'})
549550
self.assertEqual(response.getheader('content-range'), 'bytes 3-12/30')
550551
self.assertEqual(response.getheader('content-length'), '10')
551552
self.check_status_and_reason(response, HTTPStatus.PARTIAL_CONTENT, data=self.data[3:13])
552553

553-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=3-'})
554+
response = self.request(route, headers={'Range': 'bytes=3-'})
554555
self.assertEqual(response.getheader('content-range'), 'bytes 3-29/30')
555556
self.assertEqual(response.getheader('content-length'), '27')
556557
self.check_status_and_reason(response, HTTPStatus.PARTIAL_CONTENT, data=self.data[3:])
557558

558-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=-5'})
559+
response = self.request(route, headers={'Range': 'bytes=-5'})
559560
self.assertEqual(response.getheader('content-range'), 'bytes 25-29/30')
560561
self.assertEqual(response.getheader('content-length'), '5')
561562
self.check_status_and_reason(response, HTTPStatus.PARTIAL_CONTENT, data=self.data[25:])
562563

563-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=29-29'})
564+
response = self.request(route, headers={'Range': 'bytes=29-29'})
564565
self.assertEqual(response.getheader('content-range'), 'bytes 29-29/30')
565566
self.assertEqual(response.getheader('content-length'), '1')
566567
self.check_status_and_reason(response, HTTPStatus.PARTIAL_CONTENT, data=self.data[29:])
567568

568569
# end > file size
569-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=25-100'})
570+
response = self.request(route, headers={'Range': 'bytes=25-100'})
570571
self.assertEqual(response.getheader('content-range'), 'bytes 25-29/30')
571572
self.assertEqual(response.getheader('content-length'), '5')
572573
self.check_status_and_reason(response, HTTPStatus.PARTIAL_CONTENT, data=self.data[25:])
573574

574575
# invalid ranges
575-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=100-200'})
576+
response = self.request(route, headers={'Range': 'bytes=100-200'})
576577
self.check_status_and_reason(response, HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE)
577578

578-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=4-3'})
579+
response = self.request(route, headers={'Range': 'bytes=4-3'})
579580
self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
580581

581-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=wrong format'})
582+
response = self.request(route, headers={'Range': 'bytes=wrong format'})
582583
self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
583584

584-
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=-'})
585+
response = self.request(route, headers={'Range': 'bytes=-'})
585586
self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
586587

587588
def test_head(self):
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
Add support for HTTP Range header in ``SimpleHTTPServer``
1+
Add support for HTTP Range header in :class:`SimpleHTTPServer`. Add an optional
2+
``range`` paramater to :func:`SimpleHTTPRequestHandler.copyfile`.

0 commit comments

Comments
 (0)