public async Task <ActionResult> Forecast() { var forecast = await _weatherApi.Get("47.7650,-122.3457?exclude=minutely,hourly,alerts,flags"); ViewBag.High = Math.Round((float)forecast.daily.data[0].temperatureHigh); ViewBag.Low = Math.Round((float)forecast.daily.data[0].temperatureLow); ViewBag.Conditions = ((string)forecast.daily.data[0].summary).Replace(".", ""); return(View()); }
private ApiHandlerOutput Process(ApiInputHandler input) { string typeName = Business.Resource.GetType(input.Resource); if (string.IsNullOrWhiteSpace(typeName)) { throw new ApiNotFoundException(input.Resource); } bool canAccess = Business.Authorization.CanAccess(input.Resource, Context.Current.User); if (!canAccess) { logger.Warn($"Access denied for resource {input.Resource}"); throw new SecurityException(Messages.AccessDenied); } if (Business.Authorization.RequireToken(input.Resource)) { string token = input.Context.Request.Headers["ZestyApiToken"]; if (string.IsNullOrWhiteSpace(token)) { token = input.Context.Request.Query["t"]; } if (!Business.Authorization.IsValid(Context.Current.User.Id, input.Context.Session.Id, token)) { logger.Warn($"Invalid token for resource {input.Resource}"); throw new SecurityException(Messages.TokenMissing); } } ApiCacheItem cacheItem = ApiCache.Get(input); if (cacheItem != null) { logger.Info($"Output found in cache for request {input.Resource}"); return(cacheItem.Output); } else { ApiHandlerBase handler = InstanceHelper.Create <ApiHandlerBase>(typeName); ApiHandlerOutput output = handler.Process(input); if (output.CachePolicy == ApiCachePolicy.Enable) { cacheItem = new ApiCacheItem { Created = DateTime.Now, Output = output, Payload = input.Body, Resource = input.Resource }; ApiCache.Store(cacheItem); logger.Info($"Output stored in cache for request {input.Resource}"); } if (output.ResourceHistoryOutput != null && output.ResourceHistoryOutput.ResourceHistoryPolicy == ApiResourceHistoryPolicy.Save) { Business.History.Save(output.ResourceHistoryOutput.Item); } return(output); } }