// Call this to execute your request // Pass in the delegate which will be called when events occur that are related to this object public void Execute(IGlitchRequester glitchRequester) { // Set local IGlitchRequester for callbacks requester = glitchRequester; // Concatenate the full url String fullUrl = API_URL + method; // If we don't have parameters, create the dictionary if (parameters == null) { parameters = new Dictionary <String, String>(); } // Add access token to dictionary if (glitch.accessToken != null) { parameters.Add("oauth_token", glitch.accessToken); } // Serialize our full url with our parameters fullUrl = SerializeURL(fullUrl, parameters); // Create the request and set its method request = HttpWebRequest.Create(fullUrl) as HttpWebRequest; request.Method = WebRequestMethods.Http.Get; // Begin the response with the associated callback request.BeginGetResponse(r => { // Callback // r is the IAsyncResult // Get the associated Glitch Request object GlitchRequest glitchRequest = r.AsyncState as GlitchRequest; // Attempt to parse the response to check for ok try { // Get the associated response object HttpWebResponse httpWebResponse = request.EndGetResponse(r) as HttpWebResponse; // Read the response into a string StreamReader reader = new StreamReader(httpWebResponse.GetResponseStream()); String result = reader.ReadToEnd(); reader.Dispose(); // Serialize the response string into an object JavaScriptSerializer serializer = new JavaScriptSerializer(); object response = serializer.DeserializeObject(result); // Check the type before checking for ok if (response.GetType().Equals(typeof(Dictionary <String, Object>))) { // Cast to a dictionary Dictionary <String, Object> responseDict = response as Dictionary <String, Object>; // Declare ok object object ok; // Attempt to get the ok value if (responseDict.TryGetValue("ok", out ok)) { // If ok is an int if (ok.GetType().Equals(typeof(int))) { // Check if it is 1, which means the request was ok if ((int)ok == 1) { // Set the response for the request glitchRequest.response = response; // Call the requester with the request requester.RequestFinished(glitchRequest); return; } } // If the service did not return ok or did not return ok = 1 requester.RequestFailed(glitchRequest, new Exception("Service did not return OK")); } } } catch (Exception ex) { // If there was an exception somewhere in the parsing process, send it back to the requester requester.RequestFailed(glitchRequest, ex); } // If we get to this point, we didn't encounter an exception but we didn't get a valid parsed response requester.RequestFailed(glitchRequest, new Exception("An unknown error occurred with the request!")); }, this); }
// Call this to execute your request // Pass in the delegate which will be called when events occur that are related to this object public void Execute(IGlitchRequester glitchRequester) { // Set local IGlitchRequester for callbacks requester = glitchRequester; // Concatenate the full url String fullUrl = API_URL + method; // If we don't have parameters, create the dictionary if (parameters == null) { parameters = new Dictionary<String, String>(); } // Add access token to dictionary if (glitch.accessToken != null) { parameters.Add("oauth_token", glitch.accessToken); } // Serialize our full url with our parameters fullUrl = SerializeURL(fullUrl, parameters); // Create the request and set its method request = HttpWebRequest.Create(fullUrl) as HttpWebRequest; request.Method = WebRequestMethods.Http.Get; // Begin the response with the associated callback request.BeginGetResponse(r => { // Callback // r is the IAsyncResult // Get the associated Glitch Request object GlitchRequest glitchRequest = r.AsyncState as GlitchRequest; // Attempt to parse the response to check for ok try { // Get the associated response object HttpWebResponse httpWebResponse = request.EndGetResponse(r) as HttpWebResponse; // Read the response into a string StreamReader reader = new StreamReader(httpWebResponse.GetResponseStream()); String result = reader.ReadToEnd(); reader.Dispose(); // Serialize the response string into an object JavaScriptSerializer serializer = new JavaScriptSerializer(); object response = serializer.DeserializeObject(result); // Check the type before checking for ok if (response.GetType().Equals(typeof(Dictionary<String, Object>))) { // Cast to a dictionary Dictionary<String, Object> responseDict = response as Dictionary<String, Object>; // Declare ok object object ok; // Attempt to get the ok value if (responseDict.TryGetValue("ok", out ok)) { // If ok is an int if (ok.GetType().Equals(typeof(int))) { // Check if it is 1, which means the request was ok if ((int)ok == 1) { // Set the response for the request glitchRequest.response = response; // Call the requester with the request requester.RequestFinished(glitchRequest); return; } } // If the service did not return ok or did not return ok = 1 requester.RequestFailed(glitchRequest, new Exception("Service did not return OK")); } } } catch (Exception ex) { // If there was an exception somewhere in the parsing process, send it back to the requester requester.RequestFailed(glitchRequest, ex); } // If we get to this point, we didn't encounter an exception but we didn't get a valid parsed response requester.RequestFailed(glitchRequest, new Exception("An unknown error occurred with the request!")); }, this); }