Ejemplo n.º 1
0
def batch():
    """
    Execute multiple requests, submitted as a batch.
    """
    responses = []
    app = current_app
    data = request.stream.read()
    body = None
    content_type = request.environ["CONTENT_TYPE"]
    if not content_type.startswith("multipart/mixed"):
        abort(400)

    multi = parse_multi(content_type, data)
    for content_id, payload in multi:
        environ = werkzeug_raw.environ(payload)

        # ensure we only issue requests against the same host
        # as the original request
        environ.update({"SERVER_NAME": request.environ["SERVER_NAME"]})
        environ.update({"SERVER_PORT": request.environ["SERVER_PORT"]})
        environ.update({"HTTP_HOST": request.environ["HTTP_HOST"]})

        # if we don't have content-length
        environ.update({"wsgi.input_terminated": 1})

        with app.request_context(environ):
            try:
                rv = app.preprocess_request()
                if rv is None:
                    rv = app.dispatch_request()

            except Exception as e:
                rv = app.handle_user_exception(e)

            response = app.make_response(rv)
            response = app.process_response(response)
            if content_id:
                response.headers.extend({"Content-ID": content_id})

        responses.append((
            response.status,
            response.headers,
            response.json
        ))
        headers, body = prepare_batch_response(responses)

    if body is None:
        abort(500)

    return body, 200, headers
Ejemplo n.º 2
0
 def environs(self):
     return werkzeug_raw.environ(self._buffers)
Ejemplo n.º 3
0
        util.setup_testing_defaults(env)
        env['wsgi.input'] = self.rfile
        return env









#handler = FakeHandler(rfile=cStringIO.StringIO(input_string))
#environ = handler.getenv()
import werkzeug_raw
environ = werkzeug_raw.environ(input_string)

print environ

from werkzeug.wrappers import Request
request = Request(environ)

print 'request' , '-' * 10
print request.__dict__
print 'request' , '-' * 10
'''
import werkzeug_raw
environ = werkzeug_raw.environ('GET /foo/bar?tequila=42 HTTP/1.1')
environ = werkzeug_raw.environ(request_text)

print wsgi_env
Ejemplo n.º 4
0
 def test_invalid(self):
     for fn in os.listdir(INVALID_DIR):
         with open(os.path.join(INVALID_DIR, fn)) as f:
             with self.assertRaises(werkzeug_raw.BadRequestSyntax):
                 werkzeug_raw.environ(f.read())
Ejemplo n.º 5
0
 def test_valid(self):
     for fn in os.listdir(VALID_DIR):
         with open(os.path.join(VALID_DIR, fn)) as f:
             werkzeug_raw.environ(f.read())
Ejemplo n.º 6
0
 def test_valid(self):
     for fn in os.listdir(VALID_DIR):
         with open(os.path.join(VALID_DIR, fn)) as f:
             werkzeug_raw.environ(f.read())
Ejemplo n.º 7
0
 def test_invalid(self):
     for fn in os.listdir(INVALID_DIR):
         with open(os.path.join(INVALID_DIR, fn)) as f:
             with self.assertRaises(werkzeug_raw.BadRequestSyntax):
                 werkzeug_raw.environ(f.read())