Skip to content

Commit

Permalink
Refactor insert error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
oittaa committed Mar 15, 2022
1 parent 4ad691e commit fbd31d2
Showing 1 changed file with 38 additions and 48 deletions.
86 changes: 38 additions & 48 deletions gcp_storage_emulator/handlers/objects.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,20 +173,15 @@ def _media_upload(request, response, storage):
content_type,
str(len(request.data)),
)
try:
obj = _checksums(request.data, obj)
storage.create_file(
request.params["bucket_name"],
object_id,
request.data,
obj,
)
obj = _checksums(request.data, obj)
storage.create_file(
request.params["bucket_name"],
object_id,
request.data,
obj,
)

response.json(obj)
except NotFound:
response.status = HTTPStatus.NOT_FOUND
except Conflict as err:
_handle_conflict(response, err)
response.json(obj)


def _multipart_upload(request, response, storage):
Expand All @@ -203,20 +198,15 @@ def _multipart_upload(request, response, storage):
str(len(request.data["content"])),
request.data["meta"],
)
try:
obj = _checksums(request.data["content"], obj)
storage.create_file(
request.params["bucket_name"],
object_id,
request.data["content"],
obj,
)
obj = _checksums(request.data["content"], obj)
storage.create_file(
request.params["bucket_name"],
object_id,
request.data["content"],
obj,
)

response.json(obj)
except NotFound:
response.status = HTTPStatus.NOT_FOUND
except Conflict as err:
_handle_conflict(response, err)
response.json(obj)


def _create_resumable_upload(request, response, storage):
Expand All @@ -239,22 +229,17 @@ def _create_resumable_upload(request, response, storage):
content_type,
content_length,
)
try:
id = storage.create_resumable_upload(
request.params["bucket_name"],
object_id,
obj,
)
encoded_id = urllib.parse.urlencode(
{
"upload_id": id,
}
)
response["Location"] = request.full_url + "&{}".format(encoded_id)
except NotFound:
response.status = HTTPStatus.NOT_FOUND
except Conflict as err:
_handle_conflict(response, err)
id = storage.create_resumable_upload(
request.params["bucket_name"],
object_id,
obj,
)
encoded_id = urllib.parse.urlencode(
{
"upload_id": id,
}
)
response["Location"] = request.full_url + "&{}".format(encoded_id)


def _delete(storage, bucket_name, object_id):
Expand Down Expand Up @@ -309,14 +294,19 @@ def insert(request, response, storage, *args, **kwargs):

uploadType = uploadType[0]

if uploadType == "media":
return _media_upload(request, response, storage)
try:
if uploadType == "media":
return _media_upload(request, response, storage)

if uploadType == "resumable":
return _create_resumable_upload(request, response, storage)
if uploadType == "resumable":
return _create_resumable_upload(request, response, storage)

if uploadType == "multipart":
return _multipart_upload(request, response, storage)
if uploadType == "multipart":
return _multipart_upload(request, response, storage)
except NotFound:
response.status = HTTPStatus.NOT_FOUND
except Conflict as err:
_handle_conflict(response, err)


def upload_partial(request, response, storage, *args, **kwargs):
Expand Down

0 comments on commit fbd31d2

Please sign in to comment.