<s> """<STR_LIT>""" <EOL> import urllib <EOL> class Request ( object ) : <EOL> charset = '<STR_LIT:utf-8>' <EOL> max_content_length = None <EOL> def __init__ ( self , environ ) : <EOL> self . environ = environ <EOL> @ property <EOL> def url ( self ) : <EOL> parts = [ self . environ [ '<STR_LIT>' ] , '<STR_LIT>' , self . host ] <EOL> parts . append ( urllib . quote ( self . environ . get ( '<STR_LIT>' , '<STR_LIT>' ) . rstrip ( '<STR_LIT:/>' ) ) ) <EOL> parts . append ( urllib . quote ( '<STR_LIT:/>' + self . environ . get ( '<STR_LIT>' , '<STR_LIT>' ) . lstrip ( '<STR_LIT:/>' ) ) ) <EOL> qs = self . environ . get ( '<STR_LIT>' ) <EOL> if qs : <EOL> parts . append ( '<STR_LIT:?>' + qs ) <EOL> return '<STR_LIT>' . join ( parts ) <EOL> @ property <EOL> def rule ( self ) : <EOL> parts = [ ] <EOL> parts . append ( urllib . quote ( self . environ . get ( '<STR_LIT>' , '<STR_LIT>' ) . rstrip ( '<STR_LIT:/>' ) ) ) <EOL> parts . append ( urllib . quote ( '<STR_LIT:/>' + self . environ . get ( '<STR_LIT>' , '<STR_LIT>' ) . lstrip ( '<STR_LIT:/>' ) ) ) <EOL> return '<STR_LIT>' . join ( parts ) <EOL> @ property <EOL> def args ( self ) : <EOL> from urlparse import parse_qs <EOL> return parse_qs ( self . environ . get ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> @ property <EOL> def headers ( self ) : <EOL> return self . environ <EOL> @ property <EOL> def method ( self ) : <EOL> return self . environ . get ( '<STR_LIT>' , '<STR_LIT:GET>' ) <EOL> @ property <EOL> def cookies ( self ) : <EOL> from Cookie import SimpleCookie <EOL> cookie = SimpleCookie ( ) <EOL> cookie . load ( self . environ . get ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> result = { } <EOL> for key , value in cookie . iteritems ( ) : <EOL> result [ key ] = value <EOL> return result <EOL> @ property <EOL> def host ( self ) : <EOL> """<STR_LIT>""" <EOL> if '<STR_LIT>' in self . environ : <EOL> return self . environ [ '<STR_LIT>' ] <EOL> elif '<STR_LIT>' in self . environ : <EOL> return self . environ [ '<STR_LIT>' ] <EOL> result = environ [ '<STR_LIT>' ] <EOL> if ( environ [ '<STR_LIT>' ] , environ [ '<STR_LIT>' ] ) not in ( ( '<STR_LIT>' , '<STR_LIT>' ) , ( '<STR_LIT:http>' , '<STR_LIT>' ) ) : <EOL> result += '<STR_LIT::>' + environ [ '<STR_LIT>' ] <EOL> return result <EOL> @ property <EOL> def is_xhr ( self ) : <EOL> return self . environ . get ( '<STR_LIT>' , '<STR_LIT>' ) . lower ( ) == '<STR_LIT>' <EOL> @ property <EOL> def is_secure ( self ) : <EOL> return self . environ [ '<STR_LIT>' ] == '<STR_LIT>' <EOL> class Response ( object ) : <EOL> def __init__ ( self , start_response , response ) : <EOL> if isinstance ( response , tuple ) and len ( response ) > <NUM_LIT:1> : <EOL> self . status = '<STR_LIT>' % ( response [ <NUM_LIT:1> ] , HTTP_STATUS_CODES [ response [ <NUM_LIT:1> ] ] ) <EOL> self . body = response [ <NUM_LIT:0> ] <EOL> else : <EOL> self . status = '<STR_LIT>' <EOL> self . body = response <EOL> if isinstance ( response , HTTPException ) : <EOL> self . status = '<STR_LIT>' % ( response . code , response . name ) <EOL> self . body = response . get_error_body ( ) <EOL> headers = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] <EOL> start_response ( self . status , headers ) <EOL> def __iter__ ( self ) : <EOL> for char in self . body : <EOL> yield char <EOL> HTTP_STATUS_CODES = { <EOL> <NUM_LIT:100> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT:200> : '<STR_LIT:OK>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' <EOL> } <EOL> class HTTPException ( Exception ) : <EOL> def __init__ ( self , code ) : <EOL> self . code = code <EOL> if code not in HTTP_STATUS_CODES : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> self . name = HTTP_STATUS_CODES [ code ] <EOL> super ( HTTPException , self ) . __init__ ( '<STR_LIT>' % ( self . code , self . name ) ) <EOL> def get_error_body ( self ) : <EOL> """<STR_LIT>""" <EOL> return ( <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' <EOL> ) % { <EOL> '<STR_LIT:code>' : self . code , <EOL> '<STR_LIT:name>' : self . name <EOL> } <EOL> def abort ( code ) : <EOL> """<STR_LIT>""" <EOL> raise HTTPException ( code ) </s>
