metaculus/apis/
question_summaries_api.rs

1/*
2 * Metaculus API
3 *
4 * Welcome to the unofficial Rust client for the Metaculus API
5 *
6 * The version of the OpenAPI document: 1.0
7 * Contact: Benjamin Manns <opensource@benmanns.com>
8 * Generated by: https://openapi-generator.tech
9 */
10
11use reqwest;
12
13use super::{configuration, Error};
14use crate::apis::ResponseContent;
15
16/// struct for passing parameters to the method [`question_summaries_feedback_create`]
17#[derive(Clone, Debug)]
18pub struct QuestionSummariesFeedbackCreateParams {
19    pub question_summary_feedback: crate::models::QuestionSummaryFeedback,
20}
21
22/// struct for passing parameters to the method [`question_summaries_retrieve`]
23#[derive(Clone, Debug)]
24pub struct QuestionSummariesRetrieveParams {
25    pub id: String,
26}
27
28/// struct for typed errors of method [`question_summaries_feedback_create`]
29#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(untagged)]
31pub enum QuestionSummariesFeedbackCreateError {
32    UnknownValue(serde_json::Value),
33}
34
35/// struct for typed errors of method [`question_summaries_retrieve`]
36#[derive(Debug, Clone, Serialize, Deserialize)]
37#[serde(untagged)]
38pub enum QuestionSummariesRetrieveError {
39    UnknownValue(serde_json::Value),
40}
41
42pub async fn question_summaries_feedback_create(
43    configuration: &configuration::Configuration,
44    params: QuestionSummariesFeedbackCreateParams,
45) -> Result<crate::models::QuestionSummaryFeedback, Error<QuestionSummariesFeedbackCreateError>> {
46    let local_var_configuration = configuration;
47
48    // unbox the parameters
49    let question_summary_feedback = params.question_summary_feedback;
50
51    let local_var_client = &local_var_configuration.client;
52
53    let local_var_uri_str = format!(
54        "{}/api2/question-summaries/feedback/",
55        local_var_configuration.base_path
56    );
57    let mut local_var_req_builder =
58        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
59
60    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
61        local_var_req_builder =
62            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
63    }
64    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
65        local_var_req_builder = local_var_req_builder
66            .basic_auth(local_var_auth_conf.0.clone(), local_var_auth_conf.1.clone());
67    };
68    if let Some(ref local_var_cookie) = local_var_configuration.cookie {
69        local_var_req_builder =
70            local_var_req_builder.header("Cookie", format!("sessionid={}", local_var_cookie.value));
71    };
72    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
73        let local_var_key = local_var_apikey.key.clone();
74        let local_var_value = match local_var_apikey.prefix {
75            Some(ref local_var_prefix) => format!("{local_var_prefix} {local_var_key}"),
76            None => local_var_key,
77        };
78        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
79    };
80    local_var_req_builder = local_var_req_builder.json(&question_summary_feedback);
81
82    let local_var_req = local_var_req_builder.build()?;
83    let local_var_resp = local_var_client.execute(local_var_req).await?;
84
85    let local_var_status = local_var_resp.status();
86    let local_var_content = local_var_resp.text().await?;
87
88    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
89        serde_json::from_str(&local_var_content).map_err(Error::from)
90    } else {
91        let local_var_entity: Option<QuestionSummariesFeedbackCreateError> =
92            serde_json::from_str(&local_var_content).ok();
93        let local_var_error = ResponseContent {
94            status: local_var_status,
95            content: local_var_content,
96            entity: local_var_entity,
97        };
98        Err(Error::ResponseError(local_var_error))
99    }
100}
101
102/// Get the question summary for a given question.
103pub async fn question_summaries_retrieve(
104    configuration: &configuration::Configuration,
105    params: QuestionSummariesRetrieveParams,
106) -> Result<crate::models::QuestionSummary, Error<QuestionSummariesRetrieveError>> {
107    let local_var_configuration = configuration;
108
109    // unbox the parameters
110    let id = params.id;
111
112    let local_var_client = &local_var_configuration.client;
113
114    let local_var_uri_str = format!(
115        "{}/api2/question-summaries/{id}/",
116        local_var_configuration.base_path,
117        id = crate::apis::urlencode(id)
118    );
119    let mut local_var_req_builder =
120        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
121
122    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
123        local_var_req_builder =
124            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
125    }
126    if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
127        local_var_req_builder = local_var_req_builder
128            .basic_auth(local_var_auth_conf.0.clone(), local_var_auth_conf.1.clone());
129    };
130    if let Some(ref local_var_cookie) = local_var_configuration.cookie {
131        local_var_req_builder =
132            local_var_req_builder.header("Cookie", format!("sessionid={}", local_var_cookie.value));
133    };
134    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
135        let local_var_key = local_var_apikey.key.clone();
136        let local_var_value = match local_var_apikey.prefix {
137            Some(ref local_var_prefix) => format!("{local_var_prefix} {local_var_key}"),
138            None => local_var_key,
139        };
140        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
141    };
142
143    let local_var_req = local_var_req_builder.build()?;
144    let local_var_resp = local_var_client.execute(local_var_req).await?;
145
146    let local_var_status = local_var_resp.status();
147    let local_var_content = local_var_resp.text().await?;
148
149    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
150        serde_json::from_str(&local_var_content).map_err(Error::from)
151    } else {
152        let local_var_entity: Option<QuestionSummariesRetrieveError> =
153            serde_json::from_str(&local_var_content).ok();
154        let local_var_error = ResponseContent {
155            status: local_var_status,
156            content: local_var_content,
157            entity: local_var_entity,
158        };
159        Err(Error::ResponseError(local_var_error))
160    }
161}