rust-headless-chrome/rust-headless-chrome

Best way to get http status code and headers from Tab?

Opened this issue · 1 comments

pycui commented

Seems not clear from documentation. There are multiple response type but unclear which one is best to get the status code. Appreciate any pointer!

You can use interceptors to get the requests and then get the status code from them like :

  // Define request patterns
   let patterns = vec![
       RequestPattern {
           url_pattern: None,
           resource_Type: None,
           request_stage: Some(RequestStage::Response),
       },
       RequestPattern {
           url_pattern: None,
           resource_Type: None,
           request_stage: Some(RequestStage::Request),
       },
   ];
   tab.enable_fetch(Some(&*patterns), Some(true))
       .context(t!("connect.enable_fetch_failed"))?;

   tab.enable_request_interception(interceptor)?;


 impl RequestInterceptor for AuthInterceptor {
     fn intercept(
         &self,
         _transport: Arc<Transport>,
         _session_id: SessionId,
         event: RequestPausedEvent,
     ) -> RequestPausedDecision {
         if event.params.request.url.contains("/example") {
             if let Some(response_status_code) = event.params.response_status_code {
                 if response_status_code == 401 {
                    // do what you want here
                 }
             }
         }
         RequestPausedDecision::Continue(None)
     }
 }