|
|
# Copyright (C) 2014-2023 RhodeCode GmbH
|
|
|
|
|
|
"""
|
|
|
Implementation of :class:`EchoApp`.
|
|
|
|
|
|
This WSGI application will just echo back the data which it recieves.
|
|
|
"""
|
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
class EchoApp:
|
|
|
|
|
|
def __init__(self, repo_path, repo_name, config):
|
|
|
self._repo_path = repo_path
|
|
|
log.info("EchoApp initialized for %s", repo_path)
|
|
|
|
|
|
def __call__(self, environ, start_response):
|
|
|
log.debug("EchoApp called for %s", self._repo_path)
|
|
|
log.debug("Content-Length: %s", environ.get('CONTENT_LENGTH'))
|
|
|
environ['wsgi.input'].read()
|
|
|
status = '200 OK'
|
|
|
headers = [('Content-Type', 'text/plain')]
|
|
|
start_response(status, headers)
|
|
|
return [b"ECHO"]
|
|
|
|
|
|
|
|
|
class EchoAppStream:
|
|
|
|
|
|
def __init__(self, repo_path, repo_name, config):
|
|
|
self._repo_path = repo_path
|
|
|
log.info("EchoApp initialized for %s", repo_path)
|
|
|
|
|
|
def __call__(self, environ, start_response):
|
|
|
log.debug("EchoApp called for %s", self._repo_path)
|
|
|
log.debug("Content-Length: %s", environ.get('CONTENT_LENGTH'))
|
|
|
environ['wsgi.input'].read()
|
|
|
status = '200 OK'
|
|
|
headers = [('Content-Type', 'text/plain')]
|
|
|
start_response(status, headers)
|
|
|
|
|
|
def generator():
|
|
|
for _ in range(1000000):
|
|
|
yield b"ECHO_STREAM"
|
|
|
return generator()
|
|
|
|
|
|
|
|
|
def create_app():
|
|
|
"""
|
|
|
Allows to run this app directly in a WSGI server.
|
|
|
"""
|
|
|
stub_config = {}
|
|
|
return EchoApp('stub_path', 'stub_name', stub_config)
|
|
|
|