leetcode_core/graphql/query/
mod.rs

1pub mod console_panel_config;
2pub mod daily_coding_challenge;
3pub mod editor_data;
4pub mod problemset_question_list;
5pub mod question_content;
6pub mod run_code;
7pub mod submit_code;
8use super::GQLLeetcodeRequest;
9use crate::errors::AppResult;
10use crate::types::run_submit_response::{ParsedResponse, RunSubmitResult};
11use async_trait::async_trait;
12pub use editor_data::Query as EditorDataRequest;
13
14#[async_trait]
15pub trait RunOrSubmitCodeCheckResult<IntermediateResponse>:
16    GQLLeetcodeRequest<T = IntermediateResponse>
17where
18    IntermediateResponse: GQLLeetcodeRequest<T = RunSubmitResult> + Send,
19{
20    async fn poll_check_response(&self) -> AppResult<ParsedResponse> {
21        let run_response = self.send().await?;
22        loop {
23            let status_check = run_response.send().await?;
24            let parsed_response = status_check.to_parsed_response()?;
25            match parsed_response {
26                ParsedResponse::Pending => continue,
27                _ => return Ok(parsed_response),
28            }
29        }
30    }
31}