Пример #1
0
        /// <summary>
        ///     Send data to the web server
        /// </summary>
        /// <returns></returns>
        private CleantalkResponse SendData(CleantalkRequest request, MethodType methodType)
        {
            string response;

            using (var webClient = new WebClient())
            {
                webClient.Encoding = Encoding.UTF8;

                //get headers from httpContext
                var context = HttpContext.Current;
                if (context != null)
                {
                    var restrictedHeaders = new[] { "Content-Length", "Connection" };
                    var h = context.Request.Headers;
                    foreach (var v in
                             h.Keys.Cast <string>()
                             .Select(x => new { key = x, value = h[x] })
                             .Where(x => !restrictedHeaders.Contains(x.key)))
                    {
                        webClient.Headers.Add(v.key, v.value);
                    }
                }

                webClient.Headers[HttpRequestHeader.ContentType] = @"application/x-www-form-urlencoded";

                request.AllHeaders = WebHelper.HeadersSerialize(webClient.Headers);

                var postData = WebHelper.JsonSerialize(Preprocessing(request, methodType));
                response = webClient.UploadString(ServerUrl, postData);
            }

            var result = WebHelper.JsonDeserialize <CleantalkResponse>(response);

            return(Postprocessing(result));
        }
Пример #2
0
        /// <summary>
        ///     Processing request data before action
        /// </summary>
        /// <param name="request"></param>
        /// <param name="methodType"></param>
        /// <returns></returns>
        private static CleantalkRequest Preprocessing(CleantalkRequest request, MethodType methodType)
        {
            if (string.IsNullOrWhiteSpace(request.AuthKey))
            {
                throw new ArgumentNullException("AuthKey is empty");
            }

            switch (methodType)
            {
            case MethodType.check_message:
                //nothing to do
                break;

            case MethodType.check_newuser:
                if (string.IsNullOrWhiteSpace(request.SenderNickname))
                {
                    throw new ArgumentNullException("SenderNickname is empty");
                }

                if (string.IsNullOrWhiteSpace(request.SenderEmail))
                {
                    throw new ArgumentNullException("SenderEmail is empty");
                }

                break;

            case MethodType.send_feedback:
                if (string.IsNullOrWhiteSpace(request.Feedback))
                {
                    throw new ArgumentNullException("Feedback is empty");
                }

                break;

            default:
                throw new ArgumentOutOfRangeException("methodType", methodType, null);
            }

            request.MethodName = methodType.ToString();

            return(request);
        }
Пример #3
0
        /// <summary>
        ///     Send data to the web server
        /// </summary>
        /// <returns></returns>
        private CleantalkResponse SendData(CleantalkRequest request, MethodType methodType)
        {
            string response;
            using (var webClient = new WebClient())
            {
                webClient.Encoding = Encoding.UTF8;

                //get headers from httpContext
                var context = HttpContext.Current;
                if (context != null)
                {
                    var restrictedHeaders = new[] { "Content-Length", "Connection" };
                    var h = context.Request.Headers;
                    foreach (var v in
                        h.Keys.Cast<string>()
                            .Select(x => new { key = x, value = h[x] })
                            .Where(x => !restrictedHeaders.Contains(x.key)))
                    {
                        webClient.Headers.Add(v.key, v.value);
                    }
                }

                webClient.Headers[HttpRequestHeader.ContentType] = @"application/x-www-form-urlencoded";

                request.AllHeaders = WebHelper.HeadersSerialize(webClient.Headers);

                var postData = WebHelper.JsonSerialize(Preprocessing(request, methodType));
                response = webClient.UploadString(ServerUrl, postData);
            }

            var result = WebHelper.JsonDeserialize<CleantalkResponse>(response);

            return Postprocessing(result);
        }
Пример #4
0
        /// <summary>
        ///     Processing request data before action
        /// </summary>
        /// <param name="request"></param>
        /// <param name="methodType"></param>
        /// <returns></returns>
        private static CleantalkRequest Preprocessing(CleantalkRequest request, MethodType methodType)
        {
            if (string.IsNullOrWhiteSpace(request.AuthKey))
            {
                throw new ArgumentNullException("AuthKey is empty");
            }

            switch (methodType)
            {
                case MethodType.check_message:
                    //nothing to do
                    break;
                case MethodType.check_newuser:
                    if (string.IsNullOrWhiteSpace(request.SenderNickname))
                    {
                        throw new ArgumentNullException("SenderNickname is empty");
                    }

                    if (string.IsNullOrWhiteSpace(request.SenderEmail))
                    {
                        throw new ArgumentNullException("SenderEmail is empty");
                    }

                    break;
                case MethodType.send_feedback:
                    if (string.IsNullOrWhiteSpace(request.Feedback))
                    {
                        throw new ArgumentNullException("Feedback is empty");
                    }

                    break;
                default:
                    throw new ArgumentOutOfRangeException("methodType", methodType, null);
            }

            request.MethodName = methodType.ToString();

            return request;
        }
Пример #5
0
 /// <summary>
 ///     Function sends the results of manual moderation
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public CleantalkResponse SendFeedback(CleantalkRequest request)
 {
     return SendData(request, MethodType.send_feedback);
 }
Пример #6
0
 /// <summary>
 ///     Function checks whether it is possible to publish the message
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public CleantalkResponse CheckNewUser(CleantalkRequest request)
 {
     return SendData(request, MethodType.check_newuser);
 }
Пример #7
0
 /// <summary>
 ///     Function checks whether it is possible to publish the message
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public CleantalkResponse CheckMessage(CleantalkRequest request)
 {
     return SendData(request, MethodType.check_message);
 }
Пример #8
0
 /// <summary>
 ///     Function checks whether it is possible to publish the message
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public CleantalkResponse CheckNewUser(CleantalkRequest request)
 {
     return(SendData(request, MethodType.check_newuser));
 }
Пример #9
0
 /// <summary>
 ///     Function checks whether it is possible to publish the message
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public CleantalkResponse CheckMessage(CleantalkRequest request)
 {
     return(SendData(request, MethodType.check_message));
 }
Пример #10
0
 /// <summary>
 ///     Function sends the results of manual moderation
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public CleantalkResponse SendFeedback(CleantalkRequest request)
 {
     return(SendData(request, MethodType.send_feedback));
 }