private async Task <dynamic> AttachForecast(Activity activity) { Forecast forecast = null; if (activity.MeanLocation != null) { forecast = await darkSkyApi.GetWeatherInTime(activity.MeanLocation[0], activity.MeanLocation[1], activity.MeanDate.ToUnixTimeSeconds()); } return(new { Activity = activity, Forecast = forecast }); }
public async Task <Activity> RegisterActivity(long id) { var activity = await stravaApi.GetActivity(id); if (activity.MeanLocation == null) { throw new HttpException(HttpStatusCode.BadRequest, $"Activity '{id}' not found or not public"); } var token = db.AccessTokens.Where(t => t.UserId == activity.Athlete.Id).FirstOrDefault(); logger.LogInformation($"User: {token}"); if (token == null) { throw new HttpException(HttpStatusCode.BadRequest, $"Provided athlete '{activity.Athlete.Id}' is not registered"); } var forecast = await darkSkyApi.GetWeatherInTime(activity.MeanLocation[0], activity.MeanLocation[1], activity.MeanDate.ToUnixTimeSeconds()); int temperature = (int)Math.Round(forecast.Currently.Temperature); logger.LogInformation($"Weather: {forecast.BestHourlyMatch.Summary}"); return(await stravaApi.SetActivityName(activity.Id, $"{activity.Name} ({temperature}°C {forecast.BestHourlyMatch.Summary})", token.Token)); }