mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00
* Problem: Source files contain no license info Solution: Add comments with SPDX license info to source files * Python 3 files don't need # -*- coding: utf-8 -*-
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
# Copyright BigchainDB GmbH and BigchainDB contributors
|
|
# SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)
|
|
# Code is Apache-2.0 and docs are CC-BY-4.0
|
|
|
|
"""Common classes and methods for API handlers
|
|
"""
|
|
import logging
|
|
|
|
from flask import jsonify, request
|
|
|
|
from bigchaindb import config
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def make_error(status_code, message=None):
|
|
if status_code == 404 and message is None:
|
|
message = 'Not found'
|
|
|
|
response_content = {'status': status_code, 'message': message}
|
|
request_info = {'method': request.method, 'path': request.path}
|
|
request_info.update(response_content)
|
|
|
|
logger.error('HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s', request_info)
|
|
|
|
response = jsonify(response_content)
|
|
response.status_code = status_code
|
|
return response
|
|
|
|
|
|
def base_ws_uri():
|
|
"""Base websocket URL that is advertised to external clients.
|
|
|
|
Useful when the websocket URL advertised to the clients needs to be
|
|
customized (typically when running behind NAT, firewall, etc.)
|
|
"""
|
|
|
|
scheme = config['wsserver']['advertised_scheme']
|
|
host = config['wsserver']['advertised_host']
|
|
port = config['wsserver']['advertised_port']
|
|
return '{}://{}:{}'.format(scheme, host, port)
|