예제 #1
0
 public bool loadRequestTimes()
 {
     try
     {
         this.requestTimesDict = HelperDataStructures.ReadObjectFromFile <Dictionary <string, DateTime> >("requestTimes.bin");
         return(true);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         return(false);
     }
 }
예제 #2
0
 public bool saveRequestTimes()
 {
     try
     {
         HelperDataStructures.WriteObjectToFile <Dictionary <string, DateTime> >("requestTimes.bin", requestTimesDict);
         return(true);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         return(false);
     }
 }
예제 #3
0
        /// <summary>
        /// Generic API request for generic objects
        /// </summary>
        /// <typeparam name="T">Object type to return</typeparam>
        /// <param name="uri">FRC API endpoint</param>
        /// <param name="useIfModifiedSince">boolean for whether or not to use the If-Modified-Since header</param>
        /// <returns></returns>
        private T handleAPIRequest <T>(string uri, bool useIfModifiedSince = true)
        {
            T apiObj;

            try
            {
                if (!System.IO.File.Exists(HelperDataStructures.convertUriToFileName(uri, ".bin")))
                {
                    //if there isn't a cached file, we need to force an API update to create one.
                    useIfModifiedSince = false;
                }
                string api_response = sendAndGetRawResponse(uri, useIfModifiedSince);

                if (api_response != null)
                {
                    apiObj = JsonConvert.DeserializeObject <T>(api_response);
                    HelperDataStructures.WriteObjectToFile <T>(HelperDataStructures.convertUriToFileName(uri, ".bin"), apiObj);
                    return(apiObj);
                }
                else
                {
                    return(default(T));
                }
            }
            catch (WebException ex)
            {
                if (((HttpWebResponse)(ex).Response).StatusCode == HttpStatusCode.NotModified)
                {
                    //no changes were made, so load from cache
                    try
                    {
                        Console.WriteLine("No API changes, pulling from cache.");
                        apiObj = HelperDataStructures.ReadObjectFromFile <T>(HelperDataStructures.convertUriToFileName(uri, ".bin"));
                        return(apiObj);
                    }
                    catch (System.IO.FileNotFoundException fnfe)
                    {
                        throw new Exception("No cached object found.", fnfe);
                    }
                }
                else
                {
                    throw ex;
                }
            }
        }