mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			
		
			
	
	
		
			77 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
		
			
		
	
	
			77 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
|  | __filename__ = "httprequests.py" | ||
|  | __author__ = "Bob Mottram" | ||
|  | __license__ = "AGPL3+" | ||
|  | __version__ = "1.5.0" | ||
|  | __maintainer__ = "Bob Mottram" | ||
|  | __email__ = "bob@libreserver.org" | ||
|  | __status__ = "Production" | ||
|  | __module_group__ = "Core" | ||
|  | 
 | ||
|  | from webapp_utils import text_mode_browser | ||
|  | 
 | ||
|  | 
 | ||
|  | def request_csv(headers: {}) -> bool: | ||
|  |     """Should a csv response be given?
 | ||
|  |     """
 | ||
|  |     if not headers.get('Accept'): | ||
|  |         return False | ||
|  |     accept_str = headers['Accept'] | ||
|  |     if 'text/csv' in accept_str: | ||
|  |         return True | ||
|  |     return False | ||
|  | 
 | ||
|  | 
 | ||
|  | def request_ssml(headers: {}) -> bool: | ||
|  |     """Should a ssml response be given?
 | ||
|  |     """
 | ||
|  |     if not headers.get('Accept'): | ||
|  |         return False | ||
|  |     accept_str = headers['Accept'] | ||
|  |     if 'application/ssml' in accept_str: | ||
|  |         if 'text/html' not in accept_str: | ||
|  |             return True | ||
|  |     return False | ||
|  | 
 | ||
|  | 
 | ||
|  | def request_http(headers: {}, debug: bool) -> bool: | ||
|  |     """Should a http response be given?
 | ||
|  |     """
 | ||
|  |     if not headers.get('Accept'): | ||
|  |         return False | ||
|  |     accept_str = headers['Accept'] | ||
|  |     if debug: | ||
|  |         print('ACCEPT: ' + accept_str) | ||
|  |     if 'application/ssml' in accept_str: | ||
|  |         if 'text/html' not in accept_str: | ||
|  |             return False | ||
|  |     if 'image/' in accept_str: | ||
|  |         if 'text/html' not in accept_str: | ||
|  |             return False | ||
|  |     if 'video/' in accept_str: | ||
|  |         if 'text/html' not in accept_str: | ||
|  |             return False | ||
|  |     if 'audio/' in accept_str: | ||
|  |         if 'text/html' not in accept_str: | ||
|  |             return False | ||
|  |     if accept_str.startswith('*') or 'text/html' in accept_str: | ||
|  |         if headers.get('User-Agent'): | ||
|  |             ua_str = headers['User-Agent'] | ||
|  |             if text_mode_browser(ua_str) or 'NetSurf/' in ua_str: | ||
|  |                 return True | ||
|  |         if 'text/html' not in accept_str: | ||
|  |             return False | ||
|  |     if 'json' in accept_str: | ||
|  |         return False | ||
|  |     return True | ||
|  | 
 | ||
|  | 
 | ||
|  | def request_icalendar(headers: {}) -> bool: | ||
|  |     """Should an icalendar response be given?
 | ||
|  |     """
 | ||
|  |     if not headers.get('Accept'): | ||
|  |         return False | ||
|  |     accept_str = headers['Accept'] | ||
|  |     if 'text/calendar' in accept_str: | ||
|  |         return True | ||
|  |     return False |