# Helpers for Fastly's Compute@Edge Synthetic Content Tutorial This crate exports a (de)serializable [`struct ForecastAPIResponse`](./src/lib.rs) for [WeatherAPI](https://weatherapi.com)'s [Forecast](https://www.weatherapi.com/api-explorer.aspx#forecast) endpoint response. The ensuing data structure supports the creation of a Weather Widget during the [Synthetic Content Tutorial](https://developer.fastly.com/solutions/tutorials/synthetic/) using Fastly's [Compute@Edge](https://developer.fastly.com/learning/compute/rust/). ## Use with [`Response.take_body_json`](https://docs.rs/fastly/latest/fastly/http/struct.Response.html#method.take_body_json) ```rust let url = format!( "http://api.weatherapi.com/v1/forecast.json?q={},{}&key={}", LATITUDE, LONGITUDE, MY_API_KEY ); let mut resp = Request::new(Method::GET, url) .with_pass(true) .send(BACKEND_NAME)?; // Parse the JSON response body into an ForecastAPIResponse let api_response = resp.take_body_json::()?; ``` ### Resulting structure ```rust ForecastAPIResponse { on: LocationData { date: DateElements { weekday: "Wednesday", weekday_short: "Wed", pretty_date: " 7 December 2022", }, }, current: CurrentWeatherData { temp_c: 2.0, temp_f: 35.6, wind_mph: 6.9, wind_kph: 11.2, precip_mm: 0.0, precip_in: 0.0, humidity: 80.0, condition: WeatherCondition { description: "Clear", icon: 1000, }, }, forecast: ForecastData { on: [ WeatherReport { dt: DateElements { weekday: "Wednesday", weekday_short: "Wed", pretty_date: " 7 December 2022", }, day: DayWeatherData { avgtemp_c: 3.5, avgtemp_f: 38.3, condition: WeatherCondition { description: "Partly cloudy", icon: 1003, }, }, }, WeatherReport { dt: DateElements { weekday: "Thursday", weekday_short: "Thu", pretty_date: " 8 December 2022", }, day: DayWeatherData { avgtemp_c: 2.0, avgtemp_f: 35.5, condition: WeatherCondition { description: "Sunny", icon: 1000, }, }, }, WeatherReport { dt: DateElements { weekday: "Friday", weekday_short: "Fri", pretty_date: " 9 December 2022", }, day: DayWeatherData { avgtemp_c: 1.3, avgtemp_f: 34.4, condition: WeatherCondition { description: "Sunny", icon: 1000, }, }, }, ], }, } ```