Skip to content

Commit

Permalink
Merge pull request #539 from EOxServer/get-eo-coverageset-cleantemp
Browse files Browse the repository at this point in the history
fix: cleanup after geteocoverageset cancelled
  • Loading branch information
lubojr committed Sep 15, 2022
2 parents 64189cb + 27e0b9b commit f67e9f5
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions eoxserver/services/ows/wcs/v20/geteocoverageset.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,26 @@ def get_package_writers():
return PACKAGE_WRITERS


class TempfileIterator(object):
def __init__(self, filename, chunksize=2048, delete=True):
self.filename = filename
self.chunksize = chunksize
self.delete = delete

def close(self):
if self.delete and os.path.exists(self.filename):
os.remove(self.filename)

def __iter__(self):
with open(self.filename, 'rb') as file_obj:
while True:
data = file_obj.read(self.chunksize)
if not data:
break
yield data
self.close()


class WCS20GetEOCoverageSetHandler(object):
service = "WCS"
versions = ("2.0.0", "2.0.1")
Expand Down Expand Up @@ -323,28 +343,15 @@ def handle(self, request):
package, package_format, format_params
)
writer.cleanup(package)

response = StreamingHttpResponse(
tempfile_iterator(pkg_filename), mime_type
TempfileIterator(pkg_filename), mime_type
)
response["Content-Disposition"] = 'inline; filename="ows%s"' % ext
response["Content-Length"] = str(os.path.getsize(pkg_filename))

return response


def tempfile_iterator(filename, chunksize=2048, delete=True):
with open(filename, 'rb') as file_obj:
while True:
data = file_obj.read(chunksize)
if not data:
break
yield data

if delete:
os.remove(filename)


def pos_int(value):
value = int(value)
if value < 0:
Expand Down

0 comments on commit f67e9f5

Please sign in to comment.