-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathUrlMonitorConfig.cs
143 lines (118 loc) · 3.34 KB
/
UrlMonitorConfig.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace UrlMonitor
{
public class Header
{
public string Name;
public string Value;
}
public class MonitoredUrl : IComparable<MonitoredUrl>
{
public string Path;
public string Method;
public string PostText;
public byte[] PostBytes;
public string StatusCodeRegex;
public string HeadersRegex;
public string BodyRegex;
public string MismatchMessage;
public bool AlertIfChanged;
public string EmailAddresses;
[XmlArray("Headers")]
[XmlArrayItem("Header")]
public Header[] Headers;
[XmlIgnore]
public DateTime LastCheck;
[XmlIgnore]
public byte[] PostDataBytes;
[XmlIgnore]
public long MD51;
[XmlIgnore]
public long MD52;
[XmlIgnore]
public bool InProcess;
[XmlIgnore]
public TimeSpan Frequency;
[XmlElement("Frequency")]
public string FrequencyString
{
get { return Frequency.ToString(); }
set { Frequency = TimeSpan.Parse(value, CultureInfo.InvariantCulture); }
}
[XmlIgnore]
public TimeSpan MaxTime;
[XmlElement("MaxTime")]
public string MaxTimeString
{
get { return MaxTime.ToString(); }
set { MaxTime = TimeSpan.Parse(value, CultureInfo.InvariantCulture); }
}
public override int GetHashCode()
{
return Path.GetHashCode();
}
public override bool Equals(object obj)
{
MonitoredUrl other = (obj as MonitoredUrl);
if (other == null)
{
return false;
}
return (Path == other.Path);
}
public override string ToString()
{
return Path;
}
public int CompareTo(MonitoredUrl other)
{
int result = LastCheck.CompareTo(other.LastCheck);
if (result == 0)
{
result = Path.CompareTo(other.Path);
}
return result;
}
}
public class Email
{
public string Host;
public string UserName;
public string Password;
public int Port;
public bool Ssl;
public string Subject;
public string From;
}
public class UrlMonitorConfig
{
[XmlArray("Urls")]
[XmlArrayItem("Url")]
public MonitoredUrl[] Urls;
[XmlIgnore]
public SortedSet<MonitoredUrl> UrlSet;
public Email Email;
public int MaxThreads;
[XmlIgnore]
public TimeSpan SleepTimeUrl;
[XmlElement("SleepTimeUrl")]
public string SleepTimeUrlString
{
get { return SleepTimeUrl.ToString(); }
set { SleepTimeUrl = TimeSpan.Parse(value, CultureInfo.InvariantCulture); }
}
[XmlIgnore]
public TimeSpan SleepTimeBatch;
[XmlElement("SleepTimeBatch")]
public string SleepTimeBatchString
{
get { return SleepTimeBatch.ToString(); }
set { SleepTimeBatch = TimeSpan.Parse(value, CultureInfo.InvariantCulture); }
}
}
}