mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 05:51:15 +02:00
Fix Exporting portable projects with QEMU includes base images even when selecting no.
Fix https://github.com/GNS3/gns3-gui/issues/1409
This commit is contained in:
3 files changed
+39
-13
No files matched your search
+23
-11
@@ -17,11 +17,13 @@
|
||||
|
||||
import sys
|
||||
import json
|
||||
import jsonschema
|
||||
import urllib
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import logging
|
||||
import traceback
|
||||
import jsonschema
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@@ -33,10 +35,11 @@ from ..config import Config
|
||||
|
||||
|
||||
@asyncio.coroutine
|
||||
def parse_request(request, input_schema):
|
||||
def parse_request(request, input_schema, raw):
|
||||
"""Parse body of request and raise HTTP errors in case of problems"""
|
||||
|
||||
content_length = request.content_length
|
||||
if content_length is not None and content_length > 0:
|
||||
if content_length is not None and content_length > 0 and not raw:
|
||||
body = yield from request.read()
|
||||
try:
|
||||
request.json = json.loads(body.decode('utf-8'))
|
||||
@@ -45,13 +48,21 @@ def parse_request(request, input_schema):
|
||||
raise aiohttp.web.HTTPBadRequest(text="Invalid JSON {}".format(e))
|
||||
else:
|
||||
request.json = {}
|
||||
try:
|
||||
jsonschema.validate(request.json, input_schema)
|
||||
except jsonschema.ValidationError as e:
|
||||
log.error("Invalid input query. JSON schema error: {}".format(e.message))
|
||||
raise aiohttp.web.HTTPBadRequest(text="Invalid JSON: {} in schema: {}".format(
|
||||
e.message,
|
||||
json.dumps(e.schema)))
|
||||
|
||||
# Parse the query string
|
||||
if len(request.query_string) > 0:
|
||||
for (k, v) in urllib.parse.parse_qs(request.query_string).items():
|
||||
request.json[k] = v[0]
|
||||
|
||||
if input_schema:
|
||||
try:
|
||||
jsonschema.validate(request.json, input_schema)
|
||||
except jsonschema.ValidationError as e:
|
||||
log.error("Invalid input query. JSON schema error: {}".format(e.message))
|
||||
raise aiohttp.web.HTTPBadRequest(text="Invalid JSON: {} in schema: {}".format(
|
||||
e.message,
|
||||
json.dumps(e.schema)))
|
||||
|
||||
return request
|
||||
|
||||
|
||||
@@ -161,12 +172,13 @@ class Route(object):
|
||||
if api_version is None or raw is True:
|
||||
response = Response(request=request, route=route, output_schema=output_schema)
|
||||
|
||||
request = yield from parse_request(request, None, raw)
|
||||
yield from func(request, response)
|
||||
return response
|
||||
|
||||
# API call
|
||||
try:
|
||||
request = yield from parse_request(request, input_schema)
|
||||
request = yield from parse_request(request, input_schema, raw)
|
||||
record_file = server_config.get("record")
|
||||
if record_file:
|
||||
try:
|
||||
|
||||
Reference in new issue
Block a user