1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use crate::TaskOutput;
use crate::TaskResult;
use crate::TaskRunnerContext;
use switchboard_common::error::SbError;
pub use crate::protos::oracle_job::*;

fn validate(ctx: &TaskRunnerContext, task: &MedianTask) -> Result<Vec<f64>, SbError> {
    let value = if let TaskOutput::Json(v) = &ctx.value {
        v
    } else {
        return Err(SbError::CustomMessage("median_task: Input value is not an array".to_string()));
    };
    let formatted = match value.as_array() {
        Some(array) => {
            let string_vec: Vec<f64> = array.iter()
                .filter_map(|item| item.as_str())
                .map(|s| s.to_string().parse::<f64>().unwrap())
                .collect();
            Ok(string_vec)
        },
        None => Err(SbError::CustomMessage("Not a JSON array".into()))
    };
    formatted
}

pub fn median_task(_ctx: &TaskRunnerContext, _task: &MedianTask) -> TaskResult<TaskOutput> {
    return Err(SbError::CustomMessage("UNIMPLEMENTED".to_string()));
}

#[cfg(test)]
mod tests {


    #[tokio::test]
    async fn test_1() {}
}