Пример #1
0
        public void SendEventNotification(Change change)
        {
            Dictionary <string, object> postData = new Dictionary <string, object>
            {
                { "Path", change.ItemPath },
                { "Type", change.ChangeType },
                { "ChangedDate", DateTime.UtcNow.ToString("u") },
                { "IsDirectory", change.IsDirectory ? "Yes" : "No" }
            };

            if (change is RenameChange)
            {
                postData.Add("OldPath", ((RenameChange)change).OldPath);
            }

            byte[] data = BuildPostData(postData);

            Tracing.Default.Source.TraceData(TraceEventType.Verbose, (int)Tracing.Events.NOTIFY_SWISSCENTER, Encoding.UTF8.GetString(data));

            HttpWebRequest request = BuildPostRequest(Settings.Default.NotificationUri, data);

            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(data, 0, data.Length);
                requestStream.Close();
            }

            WebResponse response = request.GetResponse();

            using (Stream responseStream = response.GetResponseStream())
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string result = "";
                    while (reader.Peek() >= 0)
                    {
                        result += reader.ReadLine();
                    }

                    Tracing.Default.Source.TraceData(TraceEventType.Verbose, (int)Tracing.Events.NOTIFICATION_RESULTS,
                                                     change.ChangeId, result);

                    NotificationResult notificationResult = ExtractResult(result);

                    Tracing.Default.Source.TraceEvent(TraceEventType.Information, (int)Tracing.Events.NOTIFICATION_RESULTS,
                                                      "Results received: {0} {1}", change.ChangeId, notificationResult.ToString());

                    ValidateResult(notificationResult);
                }

            response.Close();
        }