ported over raw request body reader input()