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
37
38
39
40
41
42
43
44
45
46
47
48
49
use crate::time::DateTime;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
/// Information about an astronomical event at a specific day.
pub struct AstronomyDayEvent {
/// Indicates the type of the event.
pub r#type: String,
/// Hour at which the event is happening (local time).
pub hour: i32,
/// Minute at which the event is happening (local time).
pub min: i32,
/// Second at which the event is happening (local time).
pub sec: i32,
#[serde(deserialize_with = "DateTime::option_deserialize_from_str", default)]
/// Local time at which the event is happening in ISO 8601 format.
/// Only returned if requested by specifying the parameter isotime.
pub isotime: Option<DateTime>,
#[serde(deserialize_with = "DateTime::option_deserialize_from_str", default)]
/// UTC time at which the event is happening in ISO 8601 format.
/// Only returned if requested by specifying the parameter utctime.
pub utctime: Option<DateTime>,
/// Altitude of the center of the queried astronomical object above an ideal horizon.
/// Only for meridian type events.
pub altitude: Option<f32>,
/// Horizontal direction of the astronomical object at set/rise time (referring to true north).
/// North is 0 degrees, east is 90 degrees, south is 180 degrees and west is 270 degrees.
/// Only for rise ans set type events.
pub azimuth: Option<f32>,
/// Distance of the earth's center to the center of the queried astronomical object in
/// kilometers. Only for meridian type events.
pub distance: Option<f32>,
/// The fractin of the Moon's surface illuminated by the Sun's rays as seen from the selected
/// location. Only for the moon for meridian type events.
pub illuminated: Option<f32>,
/// The counterclockwise angle of the midpoint of the Moon's bright limb as seen from the
/// selected location. Only for the moon for meridian type events.
pub posangle: Option<f32>,
}