def resolve_consumer(consumer): if consumer: supported_media, consumer = consumer supported_media = parse_media(supported_media) return re.match(supported_media.value.replace('*', '.*'), parse_media(media).value) else: return True
def resolve_producer(producer): if producer: produced_media, producer = producer produced_media = parse_media(produced_media) for accepted_media in parse_accept(accept): if re.match(accepted_media.value.replace('*', '.*'), produced_media.value): return (float(accepted_media.q) if accepted_media.q else 1.0) else: return 1.0
def complete_request(self, environ): from rs.request import Request from rs.message import parse_media, entity, uri request = Request() request.version = environ['SERVER_PROTOCOL'] request.method = environ['REQUEST_METHOD'] request.uri = uri(environ.get('PATH_INFO', '/'), environ.get('QUERY_STRING', '')) headers = [(k[5:].replace('_', '-').lower(), v) for k,v in environ.items() if k.startswith('HTTP_')] headers.append(('content-length', environ.get('CONTENT_LENGTH', ''))) headers.append(('content-type', environ.get('CONTENT_TYPE', ''))) request.headers = dict(headers) entity_len = int(request.headers['content-length'] or '0') if entity_len:# TODO: charset always None and entity IS bytes already charset = parse_media(request.headers.get('content-type')).charset request.entity = entity(environ['wsgi.input'].read(entity_len), charset) return request