public static MoodleRestResponse InvokeMethod(string methodName, HttpContextBase context, params KeyValuePair <string, string>[] requestParams) { var cache = getCachedResponse(methodName, context); if (cache != null) { return(cache); } RestClient client = new RestClient(ConfigurationManager.AppSettings["MoodleBaseAddress"]); var request = new RestRequest(ConfigurationManager.AppSettings["RestAddress"]); request.AddParameter("wstoken", ConfigurationManager.AppSettings["SecretKey"]); request.AddParameter("wsfunction", methodName); if (requestParams != null && requestParams.Length > 0) { object[] criteriaParams = new object[requestParams.Length]; for (int i = 0; i < requestParams.Length; i++) { criteriaParams[i] = new { key = requestParams[i].Key, value = requestParams[i].Value } } ; request.AddParameter("criteria", criteriaParams, ParameterType.RequestBody); } RestResponse <MoodleRestResponse> resp = (RestResponse <MoodleRestResponse>)client.Execute <MoodleRestResponse>(request); XmlSerializer ser = new XmlSerializer(typeof(MoodleRestResponse)); MoodleRestResponse res = (MoodleRestResponse)ser.Deserialize(new StringReader(resp.Content)); setCachedResponse(methodName, res, context); return(res); } }
public static void setCachedResponse(string methodName, MoodleRestResponse resp, HttpContextBase context) { CacheItemPolicy policy = new CacheItemPolicy(); policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(60); context.Cache.Add(methodName, resp, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 30, 0), System.Web.Caching.CacheItemPriority.Normal, null); }