Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
JsonReaderDelegator.cs
Go to the documentation of this file.
3using System.Xml;
4
6
8{
9 private sealed class DateTimeArrayJsonHelperWithString : ArrayHelper<string, DateTime>
10 {
12
17
18 protected override int ReadArray(XmlDictionaryReader reader, string localName, string namespaceUri, DateTime[] array, int offset, int count)
19 {
21 int i;
22 for (i = 0; i < count; i++)
23 {
24 if (!reader.IsStartElement("item", string.Empty))
25 {
26 break;
27 }
29 }
30 return i;
31 }
32
33 protected override void WriteArray(XmlDictionaryWriter writer, string prefix, string localName, string namespaceUri, DateTime[] array, int offset, int count)
34 {
36 }
37 }
38
40
42
44 {
45 get
46 {
47 if (dictionaryReader == null)
48 {
49 return null;
50 }
52 }
53 }
54
66
71
77
78 internal static XmlQualifiedName ParseQualifiedName(string qname)
79 {
80 string name;
81 string ns;
82 if (string.IsNullOrEmpty(qname))
83 {
84 name = (ns = string.Empty);
85 }
86 else
87 {
88 qname = qname.Trim();
89 int num = qname.IndexOf(':');
90 if (num >= 0)
91 {
92 name = qname.Substring(0, num);
93 ns = qname.Substring(num + 1);
94 }
95 else
96 {
97 name = qname;
98 ns = string.Empty;
99 }
100 }
101 return new XmlQualifiedName(name, ns);
102 }
103
104 internal override char ReadContentAsChar()
105 {
107 }
108
110 {
112 }
113
114 internal override char ReadElementContentAsChar()
115 {
117 }
118
119 public override byte[] ReadContentAsBase64()
120 {
122 {
123 return Array.Empty<byte>();
124 }
125 if (dictionaryReader == null)
126 {
128 return ByteArrayHelperWithString.Instance.ReadArray(xmlDictionaryReader, "item", string.Empty, xmlDictionaryReader.Quotas.MaxArrayLength);
129 }
131 }
132
133 internal override byte[] ReadElementContentAsBase64()
134 {
136 {
137 throw new XmlException(System.SR.Format(System.SR.XmlStartElementExpected, "EndElement"));
138 }
139 byte[] result;
141 {
142 reader.Read();
143 result = Array.Empty<byte>();
144 }
145 else
146 {
148 result = ReadContentAsBase64();
150 }
151 return result;
152 }
153
154 internal override DateTime ReadContentAsDateTime()
155 {
157 }
158
160 {
161 if (dateTimeFormat == null)
162 {
164 }
165 return DateTime.ParseExact(originalDateTimeValue, dateTimeFormat.FormatString, dateTimeFormat.FormatProvider, dateTimeFormat.DateTimeStyles);
166 }
167
169 {
170 string text = (string.IsNullOrEmpty(originalDateTimeValue) ? originalDateTimeValue : originalDateTimeValue.Trim());
171 if (string.IsNullOrEmpty(text) || !text.StartsWith("/Date(", StringComparison.Ordinal) || !text.EndsWith(")/", StringComparison.Ordinal))
172 {
174 }
175 string text2 = text.Substring(6, text.Length - 8);
177 int num = text2.IndexOf('+', 1);
178 if (num == -1)
179 {
180 num = text2.IndexOf('-', 1);
181 }
182 if (num != -1)
183 {
185 text2 = text2.Substring(0, num);
186 }
187 long num2;
188 try
189 {
190 num2 = long.Parse(text2, CultureInfo.InvariantCulture);
191 }
193 {
195 }
197 {
199 }
201 {
203 }
204 long ticks = num2 * 10000 + JsonGlobals.unixEpochTicks;
205 try
206 {
207 DateTime dateTime = new DateTime(ticks, DateTimeKind.Utc);
208 return dateTimeKind switch
209 {
210 DateTimeKind.Local => dateTime.ToLocalTime(),
211 DateTimeKind.Unspecified => DateTime.SpecifyKind(dateTime.ToLocalTime(), DateTimeKind.Unspecified),
212 _ => dateTime,
213 };
214 }
216 {
218 }
219 }
220
225
230
242
243 internal override ulong ReadContentAsUnsignedLong()
244 {
246 if (text == null || text.Length == 0)
247 {
249 }
250 try
251 {
252 return ulong.Parse(text, NumberStyles.Float, NumberFormatInfo.InvariantInfo);
253 }
255 {
257 }
259 {
261 }
263 {
265 }
266 }
267
268 internal override ulong ReadElementContentAsUnsignedLong()
269 {
271 {
272 throw new XmlException(System.SR.Format(System.SR.XmlStartElementExpected, "EndElement"));
273 }
275 if (text == null || text.Length == 0)
276 {
278 }
279 try
280 {
281 return ulong.Parse(text, NumberStyles.Float, NumberFormatInfo.InvariantInfo);
282 }
284 {
286 }
288 {
290 }
292 {
294 }
295 }
296}
static CultureInfo InvariantCulture
static Exception ByDesign
override void WriteArray(XmlDictionaryWriter writer, string prefix, string localName, string namespaceUri, DateTime[] array, int offset, int count)
override int ReadArray(XmlDictionaryReader reader, string localName, string namespaceUri, DateTime[] array, int offset, int count)
override bool TryReadDateTimeArray(XmlObjectSerializerReadContext context, XmlDictionaryString itemName, XmlDictionaryString itemNamespace, int arrayLength, [NotNullWhen(true)] out DateTime[] array)
bool TryReadJsonDateTimeArray(XmlObjectSerializerReadContext context, XmlDictionaryString itemName, XmlDictionaryString itemNamespace, int arrayLength, [NotNullWhen(true)] out DateTime[] array)
static DateTime ParseJsonDateInDefaultFormat(string originalDateTimeValue)
static DateTime ParseJsonDate(string originalDateTimeValue, DateTimeFormat dateTimeFormat)
static XmlQualifiedName ParseQualifiedName(string qname)
JsonReaderDelegator(XmlReader reader, DateTimeFormat dateTimeFormat)
static void CheckArray(Array array, int offset, int count)
static string TryAddLineInfo(XmlReaderDelegator reader, string errorMessage)
int GetArrayLengthQuota(XmlObjectSerializerReadContext context)
static string XmlInvalidConversion
Definition SR.cs:312
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string JsonInvalidDateTimeString
Definition SR.cs:536
static string XmlStartElementExpected
Definition SR.cs:316
Definition SR.cs:7
static char ToChar(string s)
static XmlDictionaryReader CreateDictionaryReader(XmlReader reader)
virtual XmlDictionaryReaderQuotas Quotas
static string GetString(XmlDictionaryString s)
static XmlException CreateConversionException(string type, Exception exception)
virtual string ReadContentAsString()
Definition XmlReader.cs:286
virtual bool IsStartElement()
Definition XmlReader.cs:760
virtual void ReadStartElement()
Definition XmlReader.cs:629
virtual void ReadEndElement()
Definition XmlReader.cs:751
virtual string ReadElementContentAsString()
Definition XmlReader.cs:456
static DateTime ParseExact(string s, string format, IFormatProvider? provider)
Definition DateTime.cs:953
static DateTime SpecifyKind(DateTime value, DateTimeKind kind)
Definition DateTime.cs:756