Skip to content
This repository was archived by the owner on Sep 12, 2018. It is now read-only.

Commit 3981f1e

Browse files
committed
Moved valid_image_id to toolkit
1 parent 9ec9b48 commit 3981f1e

File tree

2 files changed

+19
-20
lines changed

2 files changed

+19
-20
lines changed

docker_registry/images.py

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import datetime
44
import functools
55
import logging
6-
import re
76
import time
87

98
import flask
@@ -28,7 +27,6 @@
2827

2928
store = storage.load()
3029
logger = logging.getLogger(__name__)
31-
_re_hex_image_id = re.compile(r'^([a-f0-9]{16}|[a-f0-9]{64})$')
3230

3331

3432
def require_completion(f):
@@ -62,16 +60,6 @@ def wrapper(*args, **kwargs):
6260
return wrapper
6361

6462

65-
def valid_image_id(f):
66-
@functools.wraps(f)
67-
def wrapper(*args, **kwargs):
68-
image_id = kwargs.get('image_id', '')
69-
if _re_hex_image_id.match(image_id):
70-
return f(*args, **kwargs)
71-
return toolkit.api_error("Invalid image ID", 404)
72-
return wrapper
73-
74-
7563
def _get_image_layer(image_id, headers=None, bytes_range=None):
7664
if headers is None:
7765
headers = {}
@@ -184,7 +172,7 @@ def _valid_bytes_range(bytes_range):
184172
@app.route('/v1/images/<image_id>/layer', methods=['GET'])
185173
@toolkit.requires_auth
186174
@require_completion
187-
@valid_image_id
175+
@toolkit.valid_image_id
188176
@set_cache_headers
189177
@mirroring.source_lookup(cache=True, stream=True)
190178
def get_image_layer(image_id, headers):
@@ -206,7 +194,7 @@ def get_image_layer(image_id, headers):
206194

207195
@app.route('/v1/images/<image_id>/layer', methods=['PUT'])
208196
@toolkit.requires_auth
209-
@valid_image_id
197+
@toolkit.valid_image_id
210198
def put_image_layer(image_id):
211199
client_version = toolkit.docker_client_version()
212200
if client_version and client_version < (0, 10):
@@ -241,7 +229,7 @@ def put_image_layer(image_id):
241229

242230
@app.route('/v1/images/<image_id>/checksum', methods=['PUT'])
243231
@toolkit.requires_auth
244-
@valid_image_id
232+
@toolkit.valid_image_id
245233
def put_image_checksum(image_id):
246234
checksum = flask.request.headers.get('X-Docker-Checksum-Payload')
247235
if checksum is None:
@@ -271,7 +259,7 @@ def put_image_checksum(image_id):
271259

272260
@app.route('/v1/images/<image_id>/json', methods=['GET'])
273261
@toolkit.requires_auth
274-
@valid_image_id
262+
@toolkit.valid_image_id
275263
@require_completion
276264
@set_cache_headers
277265
@mirroring.source_lookup(cache=True, stream=False)
@@ -290,7 +278,7 @@ def get_image_json(image_id, headers):
290278

291279
@app.route('/v1/images/<image_id>/ancestry', methods=['GET'])
292280
@toolkit.requires_auth
293-
@valid_image_id
281+
@toolkit.valid_image_id
294282
@require_completion
295283
@set_cache_headers
296284
@mirroring.source_lookup(cache=True, stream=False)
@@ -342,7 +330,7 @@ def load_checksums(image_id):
342330

343331
@app.route('/v1/images/<image_id>/json', methods=['PUT'])
344332
@toolkit.requires_auth
345-
@valid_image_id
333+
@toolkit.valid_image_id
346334
def put_image_json(image_id):
347335
data = None
348336
try:
@@ -390,7 +378,7 @@ def put_image_json(image_id):
390378

391379
@app.route('/v1/images/<image_id>/files', methods=['GET'])
392380
@toolkit.requires_auth
393-
@valid_image_id
381+
@toolkit.valid_image_id
394382
@require_completion
395383
@set_cache_headers
396384
def get_image_files(image_id, headers):
@@ -411,7 +399,7 @@ def get_image_files(image_id, headers):
411399

412400
@app.route('/v1/images/<image_id>/diff', methods=['GET'])
413401
@toolkit.requires_auth
414-
@valid_image_id
402+
@toolkit.valid_image_id
415403
@require_completion
416404
@set_cache_headers
417405
def get_image_diff(image_id, headers):

docker_registry/toolkit.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,17 @@
2626
logger = logging.getLogger(__name__)
2727
_re_docker_version = re.compile('docker/([^\s]+)')
2828
_re_authorization = re.compile(r'(\w+)[:=][\s"]?([^",]+)"?')
29+
_re_hex_image_id = re.compile(r'^([a-f0-9]{16}|[a-f0-9]{64})$')
30+
31+
32+
def valid_image_id(f):
33+
@functools.wraps(f)
34+
def wrapper(*args, **kwargs):
35+
image_id = kwargs.get('image_id', '')
36+
if _re_hex_image_id.match(image_id):
37+
return f(*args, **kwargs)
38+
return api_error("Invalid image ID", 404)
39+
return wrapper
2940

3041

3142
def docker_client_version():

0 commit comments

Comments
 (0)