mirror of
https://github.com/Magnus167/msyrs.git
synced 2025-08-20 13:10:00 +00:00
Add DQTimeseriesRequestArgs struct and related methods; update requester module
This commit is contained in:
parent
c3a49abdf7
commit
b3d36411f8
@ -2,3 +2,4 @@ pub mod jpmaqsdownload;
|
||||
pub mod oauth_client;
|
||||
pub mod requester;
|
||||
pub mod timeseries;
|
||||
pub mod parreq;
|
@ -2,6 +2,7 @@ use crate::download::oauth_client::OAuthClient;
|
||||
use crate::download::timeseries::DQCatalogueResponse;
|
||||
use crate::download::timeseries::DQCatalogueSingleResponse;
|
||||
use crate::download::timeseries::DQTimeSeriesResponse;
|
||||
use crate::download::timeseries::DQTimeseriesRequestArgs;
|
||||
use crossbeam::channel;
|
||||
use reqwest;
|
||||
use reqwest::blocking::Client;
|
||||
@ -27,74 +28,6 @@ pub struct DQRequester {
|
||||
rqclient: Client,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct DQTimeseriesRequestArgs {
|
||||
pub start_date: String,
|
||||
pub end_date: String,
|
||||
pub calendar: String,
|
||||
pub frequency: String,
|
||||
pub conversion: String,
|
||||
pub nan_treatment: String,
|
||||
pub expressions: Vec<String>,
|
||||
}
|
||||
|
||||
impl DQTimeseriesRequestArgs {
|
||||
pub fn new(
|
||||
start_date: &str,
|
||||
end_date: &str,
|
||||
calendar: &str,
|
||||
frequency: &str,
|
||||
conversion: &str,
|
||||
nan_treatment: &str,
|
||||
expressions: Vec<String>,
|
||||
) -> Self {
|
||||
DQTimeseriesRequestArgs {
|
||||
start_date: start_date.to_string(),
|
||||
end_date: end_date.to_string(),
|
||||
calendar: calendar.to_string(),
|
||||
frequency: frequency.to_string(),
|
||||
conversion: conversion.to_string(),
|
||||
nan_treatment: nan_treatment.to_string(),
|
||||
expressions,
|
||||
}
|
||||
}
|
||||
pub fn update_expressions(&mut self, expressions: Vec<String>) {
|
||||
self.expressions = expressions;
|
||||
}
|
||||
pub fn as_query_string(&self) -> String {
|
||||
let mut params = vec![
|
||||
("format", "JSON"),
|
||||
("start-date", &self.start_date),
|
||||
("end-date", &self.end_date),
|
||||
("calendar", &self.calendar),
|
||||
("frequency", &self.frequency),
|
||||
("conversion", &self.conversion),
|
||||
("nan_treatment", &self.nan_treatment),
|
||||
("data", "NO_REFERENCE_DATA"),
|
||||
];
|
||||
|
||||
for expression in &self.expressions {
|
||||
params.push(("expressions", expression));
|
||||
}
|
||||
|
||||
serde_urlencoded::to_string(¶ms).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for DQTimeseriesRequestArgs {
|
||||
fn default() -> Self {
|
||||
DQTimeseriesRequestArgs {
|
||||
start_date: "1990-01-01".to_string(),
|
||||
end_date: "TODAY+2D".to_string(),
|
||||
calendar: "CAL_ALLDAYS".to_string(),
|
||||
frequency: "FREQ_DAY".to_string(),
|
||||
conversion: "CONV_LASTBUS_ABS".to_string(),
|
||||
nan_treatment: "NA_NOTHING".to_string(),
|
||||
expressions: Vec::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for DQRequester {
|
||||
fn default() -> Self {
|
||||
DQRequester {
|
||||
@ -211,18 +144,19 @@ impl DQRequester {
|
||||
Ok(response)
|
||||
}
|
||||
|
||||
pub fn get_timeseries(
|
||||
&mut self,
|
||||
args: DQTimeseriesRequestArgs,
|
||||
) -> Result<Vec<DQTimeSeriesResponse>, Box<dyn Error>> {
|
||||
let max_retries = 5;
|
||||
println!(
|
||||
"Invoking recursive function for {:?} expressions",
|
||||
args.expressions.len()
|
||||
);
|
||||
_fetch_timeseries_recursive(self, args, max_retries)
|
||||
}
|
||||
}
|
||||
// pub fn get_timeseries(
|
||||
// &mut self,
|
||||
// args: DQTimeseriesRequestArgs,
|
||||
// ) -> Result<Vec<DQTimeSeriesResponse>, Box<dyn Error>> {
|
||||
// let max_retries = 5;
|
||||
// println!(
|
||||
// "Invoking recursive function for {:?} expressions",
|
||||
// args.expressions.len()
|
||||
// );
|
||||
// _fetch_timeseries_recursive(self, args, max_retries)
|
||||
// }
|
||||
// }
|
||||
|
||||
fn _fetch_expression_batch(
|
||||
client: Arc<Mutex<DQRequester>>,
|
||||
|
@ -8,6 +8,79 @@ use std::collections::HashSet;
|
||||
use std::error::Error;
|
||||
use std::fs::File;
|
||||
|
||||
|
||||
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct DQTimeseriesRequestArgs {
|
||||
pub start_date: String,
|
||||
pub end_date: String,
|
||||
pub calendar: String,
|
||||
pub frequency: String,
|
||||
pub conversion: String,
|
||||
pub nan_treatment: String,
|
||||
pub expressions: Vec<String>,
|
||||
}
|
||||
|
||||
impl DQTimeseriesRequestArgs {
|
||||
pub fn new(
|
||||
start_date: &str,
|
||||
end_date: &str,
|
||||
calendar: &str,
|
||||
frequency: &str,
|
||||
conversion: &str,
|
||||
nan_treatment: &str,
|
||||
expressions: Vec<String>,
|
||||
) -> Self {
|
||||
DQTimeseriesRequestArgs {
|
||||
start_date: start_date.to_string(),
|
||||
end_date: end_date.to_string(),
|
||||
calendar: calendar.to_string(),
|
||||
frequency: frequency.to_string(),
|
||||
conversion: conversion.to_string(),
|
||||
nan_treatment: nan_treatment.to_string(),
|
||||
expressions,
|
||||
}
|
||||
}
|
||||
pub fn update_expressions(&mut self, expressions: Vec<String>) {
|
||||
self.expressions = expressions;
|
||||
}
|
||||
pub fn as_query_string(&self) -> String {
|
||||
let mut params = vec![
|
||||
("format", "JSON"),
|
||||
("start-date", &self.start_date),
|
||||
("end-date", &self.end_date),
|
||||
("calendar", &self.calendar),
|
||||
("frequency", &self.frequency),
|
||||
("conversion", &self.conversion),
|
||||
("nan_treatment", &self.nan_treatment),
|
||||
("data", "NO_REFERENCE_DATA"),
|
||||
];
|
||||
|
||||
for expression in &self.expressions {
|
||||
params.push(("expressions", expression));
|
||||
}
|
||||
|
||||
serde_urlencoded::to_string(¶ms).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for DQTimeseriesRequestArgs {
|
||||
fn default() -> Self {
|
||||
DQTimeseriesRequestArgs {
|
||||
start_date: "1990-01-01".to_string(),
|
||||
end_date: "TODAY+2D".to_string(),
|
||||
calendar: "CAL_ALLDAYS".to_string(),
|
||||
frequency: "FREQ_DAY".to_string(),
|
||||
conversion: "CONV_LASTBUS_ABS".to_string(),
|
||||
nan_treatment: "NA_NOTHING".to_string(),
|
||||
expressions: Vec::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// Response from the DataQuery API
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct DQTimeSeriesResponse {
|
||||
|
Loading…
x
Reference in New Issue
Block a user