Example #1
0
File: request.py Project: gaohao/rs
 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
Example #2
0
File: request.py Project: gaohao/rs
 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
Example #3
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