UserAgent.cs
1/*
2 UdgerParser - Local parser lib
3
4 UdgerParser class parses useragent strings based on a database downloaded from udger.com
5
6
7 author The Udger.com Team (info@udger.com)
8 copyright Copyright (c) Udger s.r.o.
9 license GNU Lesser General Public License
10 link https://udger.com/products/local_parser
11 */
12
13namespace Udger.Parser
14{
15 public class UserAgent
16 {
17 #region Properties
18 [NamePosition(0, Name = "UaString")]
19 public string UaString { get; set; }
20
21 [NamePosition(1, Name = "UaClass")]
22 public string UaClass { get; set; }
23
24 [NamePosition(2, Name = "UaClassCode")]
25 public string UaClassCode { get; set; }
26
27 [NamePosition(3, Name = "Ua")]
28 public string Ua { get; set; }
29
30 [NamePosition(4, Name = "UaVersion")]
31 public string UaVersion { get; set; }
32
33 [NamePosition(5, Name = "UaVersionMajor")]
34 public string UaVersionMajor { get; set; }
35
36 [NamePosition(6, Name = "UaUptodateCurrentVersion")]
37 public string UaUptodateCurrentVersion { get; set; }
38
39 [NamePosition(7, Name = "UaFamily")]
40 public string UaFamily { get; set; }
41
42 [NamePosition(8, Name = "UaFamilyCode")]
43 public string UaFamilyCode { get; set; }
44
45 [NamePosition(9, Name = "UaFamilyHompage")]
46 public string UaFamilyHompage { get; set; }
47
48 [NamePosition(10, Name = "UaFamilyVendor")]
49 public string UaFamilyVendor { get; set; }
50
51 [NamePosition(11, Name = "UaFamilyVendorCode")]
52 public string UaFamilyVendorCode { get; set; }
53
54 [NamePosition(12, Name = "UaFamilyVendorHomepage")]
55 public string UaFamilyVendorHomepage { get; set; }
56
57 [NamePosition(13, Name = "UaFamilyIcon")]
58 public string UaFamilyIcon { get; set; }
59
60 [NamePosition(14, Name = "UaFamilyIconBig")]
61 public string UaFamilyIconBig { get; set; }
62
63 [NamePosition(15, Name = "UaFamilyIconUrl")]
64 public string UaFamilyInfoUrl { get; set; }
65
66 [NamePosition(16, Name = "UaEngine")]
67 public string UaEngine { get; set; }
68
69 [NamePosition(17, Name = "Os")]
70 public string Os { get; set; }
71
72 [NamePosition(18, Name = "OsCode")]
73 public string OsCode { get; set; }
74
75 [NamePosition(19, Name = "OsHomepage")]
76 public string OsHomepage { get; set; }
77
78 [NamePosition(20, Name = "OsIcon")]
79 public string OsIcon { get; set; }
80
81 [NamePosition(21, Name = "OsIconBig")]
82 public string OsIconBig { get; set; }
83
84 [NamePosition(22, Name = "OsInfoUrl")]
85 public string OsInfoUrl { get; set; }
86
87 [NamePosition(23, Name = "OsFamily")]
88 public string OsFamily { get; set; }
89
90 [NamePosition(24, Name = "OsFamilyCode")]
91 public string OsFamilyCode { get; set; }
92
93 [NamePosition(25, Name = "OsFamilyVendor")]
94 public string OsFamilyVendor { get; set; }
95
96 [NamePosition(26, Name = "OsFamilyVendorCode")]
97 public string OsFamilyVendorCode { get; set; }
98
99 [NamePosition(27, Name = "OsFamilyVendorHomepage")]
100 public string OsFamilyVendorHomepage { get; set; }
101
102 [NamePosition(28, Name = "DeviceClass")]
103 public string DeviceClass { get; set; }
104
105 [NamePosition(29, Name = "DeviceClassCode")]
106 public string DeviceClassCode { get; set; }
107
108 [NamePosition(30, Name = "DeviceClassIcon")]
109 public string DeviceClassIcon { get; set; }
110
111 [NamePosition(31, Name = "DeviceClassIconBig")]
112 public string DeviceClassIconBig { get; set; }
113
114 [NamePosition(32, Name = "DeviceClassInfoUrl")]
115 public string DeviceClassInfoUrl { get; set; }
116
117 [NamePosition(33, Name = "CrawlerLastSeen")]
118 public string CrawlerLastSeen { get; set; }
119
120 [NamePosition(34, Name = "CrawlerCategory")]
121 public string CrawlerCategory { get; set; }
122
123 [NamePosition(35, Name = "CrawlerCategoryCode")]
124 public string CrawlerCategoryCode { get; set; }
125
126 [NamePosition(36, Name = "CrawlerRespectRobotstxt")]
127 public string CrawlerRespectRobotstxt { get; set; }
128
129 [NamePosition(37, Name = "DeviceMarketname")]
130 public string DeviceMarketname { get; set; }
131
132 [NamePosition(38, Name = "DeviceBrand")]
133 public string DeviceBrand { get; set; }
134
135 [NamePosition(39, Name = "DeviceBrandCode")]
136 public string DeviceBrandCode { get; set; }
137
138 [NamePosition(40, Name = "DeviceBrandHomepage")]
139 public string DeviceBrandHomepage { get; set; }
140
141 [NamePosition(41, Name = "DeviceBrandIcon")]
142 public string DeviceBrandIcon { get; set; }
143
144 [NamePosition(42, Name = "DeviceBrandIconBig")]
145 public string DeviceBrandIconBig { get; set; }
146
147 [NamePosition(43, Name = "DeviceBrandInfoUrl")]
148 public string DeviceBrandInfoUrl { get; set; }
149
150 [NamePosition(44, Name = "Sec-Ch-Ua")]
151 public string SecChUa { get; set; }
152
153 [NamePosition(45, Name = "SecChUaFullVersionList")]
154 public string SecChUaFullVersionList { get; set; }
155
156 [NamePosition(46, Name = "SecChUaMobile")]
157 public string SecChUaMobile { get; set; }
158
159 [NamePosition(47, Name = "SecChUaFullVersion")]
160 public string SecChUaFullVersion { get; set; }
161
162 [NamePosition(48, Name = "SecChUaPlatform")]
163 public string SecChUaPlatform { get; set; }
164
165 [NamePosition(49, Name = "SecChUaPlatformVersion")]
166 public string SecChUaPlatformVersion { get; set; }
167
168 [NamePosition(51, Name = "SecChUaModel")]
169 public string SecChUaModel { get; set; }
170
171
172 #endregion
173 #region constructors
174 public UserAgent()
175 {
176
177 }
178 #endregion
179 #region public
180
181 public string Compare(UserAgent toCompare)
182 {
183 string ret = "";
184
185 foreach (var property in toCompare.GetType().GetProperties())
186 {
187 var val1 = property.GetValue(this);
188 var val2 = property.GetValue(toCompare);
189
190 if (val1 != val2)
191 {
192 if (val1 is string || val2 is string)
193 {
194 string val1s = "";
195 if (val1 != null)
196 val1s = val1.ToString();
197
198 string val2s = "";
199 if (val2 != null)
200 val2s = val2.ToString();
201
202 if (val1s != val2s)
203 ret += $"Property {property.Name} - {val1} and {val2} are different" + System.Environment.NewLine;
204 }
205 else
206 ret += $"Property {property.Name} - {val1} and {val2} are different" + System.Environment.NewLine;
207 }
208
209 }
210 return ret;
211 }
212 #endregion
213 }
214}