pub(super) async fn request_link(&self, url: &str) -> Result<FeroxResponse> {
        log::trace!("enter: request_link({})", url);

        let ferox_url = FeroxUrl::from_string(url, self.handles.clone());

        // create a url based on the given command line options
        let new_url = ferox_url.format("", None)?;

        let scanned_urls = self.handles.ferox_scans()?;

        if scanned_urls.get_scan_by_url(&new_url.to_string()).is_some() {
            //we've seen the url before and don't need to scan again
            log::trace!("exit: request_link -> None");
            bail!("previously seen url");
        }

        if (!self.handles.config.url_denylist.is_empty()
            || !self.handles.config.regex_denylist.is_empty())
            && should_deny_url(&new_url, self.handles.clone())?
        {
            // can't allow a denied url to be requested
            bail!(
                "prevented request to {} due to {:?} || {:?}",
                url,
                self.handles.config.url_denylist,
                self.handles.config.regex_denylist,
            );
        }

        // make the request and store the response
        let new_response = logged_request(&new_url, self.handles.clone()).await?;

        let new_ferox_response =
            FeroxResponse::from(new_response, true, self.handles.config.output_level).await;

        log::trace!("exit: request_link -> {:?}", new_ferox_response);

        Ok(new_ferox_response)
    }
/// Wrapper around link extraction logic
/// currently used in two places:
///   - links from response bodies
///   - links from robots.txt responses
///
/// general steps taken:
///   - create a new Url object based on cli options/args
///   - check if the new Url has already been seen/scanned -> None
///   - make a request to the new Url ? -> Some(response) : None
Wrapper around link extraction logic
currently used in two places:
links from response bodies
links from robots.txt responses

general steps taken:
create a new Url object based on cli options/args
check if the new Url has already been seen/scanned -> None
make a request to the new Url .
Wrapper around link extraction logic currently used in two places : links from response bodies links from robots . txt responses general steps taken : create a new Url object based on cli options / args check if the new Url has already been seen / scanned - > None make a request to the new Url .
pub(super) async fn request_link(&self, url: &str) -> Result<FeroxResponse> {
        log::trace!("enter: request_link({})", url);
        let ferox_url = FeroxUrl::from_string(url, self.handles.clone());
        // create a url based on the given command line options
        let new_url = ferox_url.format("", None)?;
        let scanned_urls = self.handles.ferox_scans()?;
        if scanned_urls.get_scan_by_url(&new_url.to_string()).is_some() {
            //we've seen the url before and don't need to scan again
            log::trace!("exit: request_link -> None");
            bail!("previously seen url");
        }
        if (!self.handles.config.url_denylist.is_empty()
            || !self.handles.config.regex_denylist.is_empty())
            && should_deny_url(&new_url, self.handles.clone())?
        {
            // can't allow a denied url to be requested
            bail!(
                "prevented request to {} due to {:?} || {:?}",
                url,
                self.handles.config.url_denylist,
                self.handles.config.regex_denylist,
            );
        }
        // make the request and store the response
        let new_response = logged_request(&new_url, self.handles.clone()).await?;
        let new_ferox_response =
            FeroxResponse::from(new_response, true, self.handles.config.output_level).await;
        log::trace!("exit: request_link -> {:?}", new_ferox_response);
        Ok(new_ferox_response)
    }
pub ( super ) async fn request_link ( & self , url : & str ) -> Result < FeroxResponse > { log :: trace ! ( " " url ) ; let ferox_url = FeroxUrl :: from_string ( url , self . handles . clone ( ) ) ; // create a url based on the given command line options let new_url = ferox_url . format ( " " , None ) ? ; let scanned_urls = self . handles . ferox_scans ( ) ? ; if scanned_urls . get_scan_by_url ( & new_url . to_string ( ) ) . is_some ( ) { //we've seen the url before and don't need to scan again log :: trace ! ( " " ) ; bail ! ( " " ) ; } if ( ! self . handles . config . url_denylist . is_empty ( ) || ! self . handles . config . regex_denylist . is_empty ( ) ) && should_deny_url ( & new_url , self . handles . clone ( ) ) ? { // can't allow a denied url to be requested bail ! ( " " url self handles config url_denylist self handles config regex_denylist ) ; } // make the request and store the response let new_response = logged_request ( & new_url , self . handles . clone ( ) ) . await ? ; let new_ferox_response = FeroxResponse :: from ( new_response , true , self . handles . config . output_level ) . await ; log :: trace ! ( " " new_ferox_response ) ; Ok ( new_ferox_response ) }
Wrapper around link extraction logic
currently used in two places:
 links from response bodies
 links from robots.txt responses
Wrapper around link extraction logic currently used in two places : links from response bodies links from robots . txt responses
&self
url
&str