alpaca_api_client/
timeframe.rs1use std::{io::Error, str::FromStr};
2
3#[derive(Debug, PartialEq, Clone, Copy)]
5pub enum TimeFrame {
6 OneMinute,
7 FiveMinutes,
8 FifteenMinutes,
9 ThirtyMinutes,
10 OneHour,
11 FourHours,
12 OneDay,
13 OneWeek,
14 OneMonth,
15}
16
17impl ToString for TimeFrame {
18 fn to_string(&self) -> String {
19 match self {
20 TimeFrame::OneMinute => "1Min".to_string(),
21 TimeFrame::FiveMinutes => "5Min".to_string(),
22 TimeFrame::FifteenMinutes => "15Min".to_string(),
23 TimeFrame::ThirtyMinutes => "30Min".to_string(),
24 TimeFrame::OneHour => "1H".to_string(),
25 TimeFrame::FourHours => "4H".to_string(),
26 TimeFrame::OneDay => "1D".to_string(),
27 TimeFrame::OneWeek => "1W".to_string(),
28 TimeFrame::OneMonth => "1M".to_string(),
29 }
30 }
31}
32
33impl FromStr for TimeFrame {
34 type Err = Error;
35
36 fn from_str(s: &str) -> Result<Self, Self::Err> {
37 match s {
38 "1Min" => Ok(TimeFrame::OneMinute),
39 "5Min" => Ok(TimeFrame::FiveMinutes),
40 "15Min" => Ok(TimeFrame::FifteenMinutes),
41 "30Min" => Ok(TimeFrame::ThirtyMinutes),
42 "1Hour" => Ok(TimeFrame::OneHour),
43 "4Hour" => Ok(TimeFrame::FourHours),
44 "1Day" => Ok(TimeFrame::OneDay),
45 "1Week" => Ok(TimeFrame::OneWeek),
46 "1Month" => Ok(TimeFrame::OneMonth),
47 "1T" => Ok(TimeFrame::OneMinute),
48 "5T" => Ok(TimeFrame::FiveMinutes),
49 "15T" => Ok(TimeFrame::FifteenMinutes),
50 "30T" => Ok(TimeFrame::ThirtyMinutes),
51 "1H" => Ok(TimeFrame::OneHour),
52 "4H" => Ok(TimeFrame::FourHours),
53 "1D" => Ok(TimeFrame::OneDay),
54 "1W" => Ok(TimeFrame::OneWeek),
55 "1M" => Ok(TimeFrame::OneMonth),
56 _ => Err(Error::other("Timeframes Do Not Match")),
57 }
58 }
59}