def get_entityset(entitySetName):
try:
result = dataProviderDto.apiProvider.handleGet(entitySetName, request.query, dataService)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result, cls=CustomEncoder, indent=2)
except:
abort(400, 'Bad Request')
# GET: api/datasource/crud/single/:entitySetName?keys=key1:{key1}
python类json()的实例源码
def get_single_entityset(entitySetName):
try:
result = dataProviderDto.apiProvider.handleGetSingle(entitySetName, request.query, dataService)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result, cls=CustomEncoder, indent=2)
except:
abort(400, 'Bad Request')
# GET: api/datasource/crud/many/:entitySetName?keys=key1:1,2,3,4;key2:4,5,6,7
def put_entityset(entitySetName):
try:
result = dataProviderDto.apiProvider.handleUpdateEntity(entitySetName, request.query, request.json, dataService)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result, cls=CustomEncoder)
except dalUtils.StatusCodeError as err:
response.status = err.value
except:
abort(400, 'Bad Request')
# PATCH: api/datasource/crud/:entitySetName?keys=key1:{key1}
#@patch('/api/datasource/crud/<entitySetName>')
def patch_entityset(entitySetName):
try:
result = dataProviderDto.apiProvider.handleUpdateEntity(entitySetName, request.query, request.json, dataService)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result, cls=CustomEncoder)
except dalUtils.StatusCodeError as err:
response.status = err.value
except:
abort(400, 'Bad Request')
# POST: api/datasource/crud/:entitySetName
def post_entityset(entitySetName):
# test1 = json.loads(request.body.read())
try:
result = dataProviderDto.apiProvider.handleInsertEntity(entitySetName, request.json, dataService)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result, cls=CustomEncoder)
except dalUtils.StatusCodeError as err:
response.status = err.value
except:
abort(400, 'Bad Request')
# DELETE: api/datasource/crud/:entitySetName?keys=key1:{key1}
def delete_entityset(entitySetName):
try:
result = dataProviderDto.apiProvider.handleDeleteEntity(entitySetName, request.query, dataService)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result, cls=CustomEncoder)
except dalUtils.StatusCodeError as err:
response.status = err.value
except:
abort(400, 'Bad Request')
# PUT: api/datasource/crud/batch/:entitySetName
def put_batch_entityset(entitySetName):
try:
result = dataProviderDto.apiProvider.handleUpdateEntityBatch(entitySetName, request.json, dataService)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result, cls=CustomEncoder)
except dalUtils.StatusCodeError as err:
response.status = err.value
except:
abort(400, 'Bad Request')
# PATCH: api/datasource/crud/batch/:entitySetName
#@patch('/api/datasource/crud/batch/<entitySetName>')
def delete_batch_entityset(entitySetName):
try:
result = dataProviderDto.apiProvider.handleDeleteEntityBatch(entitySetName, request.query, dataService)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result, cls=CustomEncoder)
except dalUtils.StatusCodeError as err:
response.status = err.value
except:
abort(400, 'Bad Request')
def entities_test_action():
try:
param1 = request.json['param1']
# TODO: Add some actions in here
except dalUtils.StatusCodeError as err:
response.status = err.value
except:
abort(400, 'Bad Request')
def setup(self, app):
def default_error_handler(res):
if res.content_type == "application/json":
return res.body
res.content_type = "application/json"
return dumps({'message': str(res.exception if res.exception else res.body)})
app.default_error_handler = default_error_handler
def _handle_auth(self):
request_data = request.json
csr = x509.load_pem_x509_csr(data=request_data['csr'].encode(), backend=default_backend()) # pylint: disable=unsubscriptable-object
if not csr.is_signature_valid:
raise HTTPResponse(
status=400,
body={'message': 'The certificate signing request signature is invalid.'}
)
host = csr.subject.get_attributes_for_oid(NameOID.COMMON_NAME)[0].value
csr_file = os.path.join(self.csr_path, "%s.csr" % (host))
crt_file = os.path.join(self.crt_path, "%s.crt" % (host))
if os.path.isfile(crt_file):
crt = load_certificate(crt_file)
if crt.public_key().public_numbers() == csr.public_key().public_numbers():
return {
'status': 'authorized',
'crt': dump_pem(crt).decode()
}
else:
raise HTTPResponse(
status=409,
body={'message': 'Mismatch between the certificate signing request and the certificate.'}
)
else:
# Save CSR
with open(csr_file, 'w') as f:
f.write(csr.public_bytes(serialization.Encoding.PEM).decode())
response.status = 202
return {
'status': 'pending'
}
def account_status(account_id):
result = controller.db.iter_resources(account_id)
response.content_type = "application/json"
return json.dumps(result, indent=2, cls=Encoder)
def lock(account_id, resource_id):
request_data = request.json
for rp in ('region',):
if not request_data or rp not in request_data:
abort(400, "Missing required parameter %s" % rp)
return controller.lock(account_id, resource_id, request_data['region'])
def info(account_id, resource_id):
request_data = request.query
if resource_id.startswith('sg-') and 'parent_id' not in request_data:
abort(400, "Missing required parameter parent_id")
result = controller.info(
account_id, resource_id, request_data.get('parent_id', resource_id))
response.content_type = "application/json"
return json.dumps(result, indent=2, cls=Encoder)
# this set to post to restrict permissions, perhaps another url space.
def delta(account_id):
request_data = request.json
for rp in ('region',):
if not request_data or rp not in request_data:
abort(400, "Missing required parameter %s" % rp)
result = controller.get_account_delta(
account_id, request_data['region'], api_url())
response.content_type = "application/json"
return json.dumps(result, indent=2, cls=Encoder)
def on_config_message(records):
for r in records:
json.loads(r['Sns'].get('Message'))
def error400(error):
_add_cors_headers(response)
response.set_header('Content-Type', 'application/json')
return json.dumps({'detail': error.body})
def error404(error):
_add_cors_headers(response)
response.set_header('Content-Type', 'application/json')
return json.dumps({'detail': 'Page not found'})
def validate():
try:
data = request.json
except JSONDecodeError:
abort(400, 'Request data is not valid JSON')
# Validate
if data is None:
abort(400, 'JSON payload missing')
if 'data' not in data:
abort(400, 'Payload does not contain a "data" field')
try:
data = json.loads(data['data'])
except JSONDecodeError:
return invalid_payload('Data is not valid JSON')
if 'api' not in data:
return invalid_payload('Data does not contain an "api" field')
version = data['api']
if version not in SCHEMATA:
return invalid_payload('Unknown api version: "%s"' % version)
# Do validation of submitted endpoint
try:
valid, message = validation.validate(schema_path=SCHEMATA[version], data=data)
except SchemaError:
abort(500, 'Invalid schema on server! Please contact one of the admins.')
return {
'valid': valid,
'message': message,
}
def create(resources):
"""create a new resource"""
if resources not in app.resources:
abort(404, "Not Found")
new_data = dict.fromkeys(app.resources[resources]["model"].keys())
for key in new_data:
if key in request.json:
new_data[key] = request.json.get(key)
new_data['id'] = uuid.uuid4().__str__()
app.data[resources][new_data['id']] = new_data
return new_data