| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -226,11 +226,10 @@ fn get_page_with_cookies(url: &str, cookie_str: &str) -> Result<Response, Error> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// ```
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					fn get_icon_priority(href: &str, sizes: &str) -> u8 { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // Check if there is a dimension set
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if !sizes.is_empty() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let dimensions: Vec<&str> = sizes.split('x').collect(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let width: u16 = dimensions[0].parse().unwrap(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        let height: u16 = dimensions[1].parse().unwrap(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let (width, height) = parse_sizes(sizes); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // Check if there is a size given
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if width != 0 && height != 0 { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // Only allow square dimensions
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if width == height { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            // Change priority by given size
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -243,8 +242,9 @@ fn get_icon_priority(href: &str, sizes: &str) -> u8 { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } else if width == 16 { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                4 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                100 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                5 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // There are dimensions available, but the image is not a square
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            200 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -260,6 +260,37 @@ fn get_icon_priority(href: &str, sizes: &str) -> u8 { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// Returns a Tuple with the width and hight as a seperate value extracted from the sizes attribute
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// It will return 0 for both values if no match has been found.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					///
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// # Arguments
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// * `sizes` - The size of the icon if available as a <width>x<height> value like 32x32.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// 
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// # Example
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// ```
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// let (width, height) = parse_sizes("64x64"); // (64, 64)
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// let (width, height) = parse_sizes("x128x128"); // (128, 128)
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// let (width, height) = parse_sizes("32"); // (0, 0)
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/// ```
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					fn parse_sizes(sizes: &str) -> (u16, u16) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let mut width: u16 = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let mut height: u16 = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if !sizes.is_empty() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        match Regex::new(r"(?x)(\d+)\D*(\d+)").unwrap().captures(sizes.trim()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            None => {}, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Some(dimensions) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if dimensions.len() >= 3 { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    width = dimensions[1].parse::<u16>().unwrap_or_default(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    height = dimensions[2].parse::<u16>().unwrap_or_default(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    (width, height) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					fn download_icon(domain: &str) -> Result<Vec<u8>, Error> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let (url, cookie_str) = get_icon_url(&domain)?; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |