Example #1
0
        /// <summary>
        /// Send request for feedback
        /// </summary>
        /// <returns></returns>
        public bool SendFeedback()
        {
            if (InternetController.InternetCheck())
            {
                FeedbackResponse = new ApiResponse();

                #region API Request

                // request host
                var server = new RestClient("http://api.kor.onl/");
                // request relative url
                var request = new RestRequest("apps/updater/1.0/", Method.POST);

                // add important parameters
                request.AddOrUpdateParameter("request", "feedback");
                request.AddOrUpdateParameter("type", OutputType);
                request.AddOrUpdateParameter("updateid", UpdateId);
                request.AddOrUpdateParameter("api_key", API_KEY);
                request.AddOrUpdateParameter("api_secret", API_SECRET);
                request.AddOrUpdateParameter("comment", Comment);
                request.AddOrUpdateParameter("point", Point);
                request.AddOrUpdateParameter("client", Client.Username);
                request.AddOrUpdateParameter("machine", Client.CPUId);

                // get query result
                var response = server.Execute(request);

                // get response status code
                FeedbackResponse.ResponseStatus = response.StatusCode;
                FeedbackResponse.ResponseData   = response.Content;

                #endregion

                #region JSON Parsing

                var settings = new JsonSerializerSettings
                {
                    NullValueHandling          = NullValueHandling.Ignore,
                    MissingMemberHandling      = MissingMemberHandling.Ignore,
                    PreserveReferencesHandling = PreserveReferencesHandling.Objects,
                };
                RespJsonObj = JsonConvert.DeserializeObject <RootobjectforFeedback>(response.Content, settings);

                #endregion

                #region Updates JSON Parsing

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    // if API code is 1
                    if (RespJsonObj.code == 1)
                    {
                        if (RespJsonObj.result == "OK")
                        {
                            return(true);
                        }
                    }

                    FeedbackResponse.ResponseResultString = RespJsonObj.result;
                }
                else
                {
                    // error message
                    FeedbackResponse.ResponseAPIErrorMessage = (string)RespJsonObj.messages.error_message ?? "";
                    // warning message
                    FeedbackResponse.ResponseAPIWarningMessage = (string)RespJsonObj.messages.warning_message ?? "";
                }

                #endregion
            }

            return(false);
        }
Example #2
0
        /// <summary>
        /// Feecback sender
        /// </summary>
        /// <param name="status"></param>
        /// <returns></returns>
        public bool SendAppFeedback(string feedback_type, string message, string messageid, string update_id)
        {
            UpdateCheck updatecheck = new UpdateCheck();

            stopwatch.Start();

            bool ret = false;

            DateTime startedOnUtc       = DateTime.UtcNow;
            string   responseData       = null;
            string   responseHeaders    = null;
            int      responseStatusCode = 0;

            try
            {
                BetterWebClient webClient = new BetterWebClient();
                webClient.Proxy = null;
                webClient.Headers.Add(HttpRequestHeader.Accept, "application/json charset=utf-8");

                var webRequest = webClient.GetWebRequestX(new Uri(CreateCheckURL(feedback_type, message, messageid, update_id)));
                webRequest.Method = WebRequestMethods.Http.Get;

                using (WebResponse response = webRequest.GetResponse())
                {
                    internet.processResponse(response, out responseData, out responseHeaders, out responseStatusCode);
                }
            }
            catch (WebException ex)
            {
                using (ex.Response)
                {
                    internet.processResponse(ex.Response, out responseData, out responseHeaders, out responseStatusCode);
                }

                // stop stopwatch
                stopwatch.Stop();

                #region Prepare Error Log

                // get error log contains
                string errorlog = ":Date: " + DateTime.UtcNow.ToString() + Environment.NewLine;
                errorlog = errorlog + ":ExMessage: " + ex.Message + Environment.NewLine + Environment.NewLine;
                errorlog = errorlog + ":ExtentedExMEssage: " + ex.ToString() + Environment.NewLine + Environment.NewLine;
                errorlog = errorlog + ":HttpStatus: " + responseStatusCode + Environment.NewLine;
                errorlog = errorlog + ":ResponseData: " + responseData + Environment.NewLine;
                errorlog = errorlog + ":TimeElapsed: " + stopwatch.Elapsed;

                // get error log id
                string errorid = aes256.AES256Engine(Info.current_username + "+" + DateTime.UtcNow.ToString(), Info.current_username);

                #endregion

                // save errorlog for feedback
                common.saveErrorLog(errorlog, errorid, updatecheck.update_id);
            }

            Debug.WriteLine("respoınse---->>>>>>>>>>>>>>>>>>" + responseStatusCode);
            // All 2xx HTTP statuses are OK
            if (responseStatusCode >= 200 && responseStatusCode < 300)
            {
                // response json data
                RootobjectforFeedback jobj = JsonConvert.DeserializeObject <RootobjectforFeedback>(responseData);

                if (jobj.status && jobj.feed_status)
                {
                    ret = true;
                }
                else
                {
                    ret = false;
                }
            }

            return(ret);
        }