Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ContentDisposition.cs
Go to the documentation of this file.
6using System.Text;
7
8namespace System.Net.Mime;
9
11{
13
14 private string _disposition;
15
16 private string _dispositionType;
17
18 private bool _isChanged;
19
20 private bool _isPersisted;
21
22 private static readonly TrackingValidationObjectDictionary.ValidateAndParseValue s_dateParser = (object v) => new SmtpDateTime(v.ToString());
23
24 private static readonly TrackingValidationObjectDictionary.ValidateAndParseValue s_longParser = delegate(object value)
25 {
26 if (!long.TryParse(value.ToString(), NumberStyles.None, CultureInfo.InvariantCulture, out var result))
27 {
29 }
30 return result;
31 };
32
34 {
35 { "creation-date", s_dateParser },
36 { "modification-date", s_dateParser },
37 { "read-date", s_dateParser },
38 { "size", s_longParser }
39 };
40
41 public string DispositionType
42 {
43 get
44 {
45 return _dispositionType;
46 }
47 set
48 {
49 if (value == null)
50 {
51 throw new ArgumentNullException("value");
52 }
53 if (value.Length == 0)
54 {
56 }
57 _isChanged = true;
59 }
60 }
61
63
64 public string? FileName
65 {
66 get
67 {
68 return Parameters["filename"];
69 }
70 set
71 {
72 if (string.IsNullOrEmpty(value))
73 {
74 Parameters.Remove("filename");
75 }
76 else
77 {
78 Parameters["filename"] = value;
79 }
80 }
81 }
82
84 {
85 get
86 {
87 return GetDateParameter("creation-date");
88 }
89 set
90 {
92 ((TrackingValidationObjectDictionary)Parameters).InternalSet("creation-date", value2);
93 }
94 }
95
97 {
98 get
99 {
100 return GetDateParameter("modification-date");
101 }
102 set
103 {
105 ((TrackingValidationObjectDictionary)Parameters).InternalSet("modification-date", value2);
106 }
107 }
108
109 public bool Inline
110 {
111 get
112 {
113 return _dispositionType == "inline";
114 }
115 set
116 {
117 _isChanged = true;
118 _dispositionType = (value ? "inline" : "attachment");
119 }
120 }
121
123 {
124 get
125 {
126 return GetDateParameter("read-date");
127 }
128 set
129 {
131 ((TrackingValidationObjectDictionary)Parameters).InternalSet("read-date", value2);
132 }
133 }
134
135 public long Size
136 {
137 get
138 {
139 object obj = ((TrackingValidationObjectDictionary)Parameters).InternalGet("size");
140 if (obj != null)
141 {
142 return (long)obj;
143 }
144 return -1L;
145 }
146 set
147 {
149 }
150 }
151
152 internal bool IsChanged
153 {
154 get
155 {
156 if (!_isChanged)
157 {
158 if (_parameters != null)
159 {
160 return _parameters.IsChanged;
161 }
162 return false;
163 }
164 return true;
165 }
166 }
167
169 {
170 _isChanged = true;
171 _disposition = (_dispositionType = "attachment");
172 }
173
175 {
176 if (disposition == null)
177 {
178 throw new ArgumentNullException("disposition");
179 }
180 _isChanged = true;
182 ParseValue();
183 }
184
186 {
188 {
189 return smtpDateTime.Date;
190 }
191 return DateTime.MinValue;
192 }
193
195 {
197 {
198 headers.InternalSet(MailHeaderInfo.GetString(MailHeaderID.ContentDisposition), ToString());
199 _isPersisted = true;
200 }
201 }
202
203 public override string ToString()
204 {
205 if (_disposition == null || _isChanged || (_parameters != null && _parameters.IsChanged))
206 {
208 _isChanged = false;
209 _parameters.IsChanged = false;
210 _isPersisted = false;
211 }
212 return _disposition;
213 }
214
215 internal string Encode(bool allowUnicode)
216 {
219 foreach (string key in Parameters.Keys)
220 {
221 stringBuilder.Append("; ");
223 stringBuilder.Append('=');
225 }
226 return stringBuilder.ToString();
227 }
228
229 private static void EncodeToBuffer(string value, StringBuilder builder, bool allowUnicode)
230 {
232 if (encoding != null)
233 {
234 builder.Append('"').Append(value).Append('"');
235 return;
236 }
238 {
240 return;
241 }
242 encoding = Encoding.GetEncoding("utf-8");
243 builder.Append('"').Append(MimeBasePart.EncodeHeaderValue(value, encoding, MimeBasePart.ShouldUseBase64Encoding(encoding))).Append('"');
244 }
245
246 public override bool Equals([NotNullWhen(true)] object? rparam)
247 {
248 if (rparam != null)
249 {
250 return string.Equals(ToString(), rparam.ToString(), StringComparison.OrdinalIgnoreCase);
251 }
252 return false;
253 }
254
255 public override int GetHashCode()
256 {
257 return ToString().ToLowerInvariant().GetHashCode();
258 }
259
260 [MemberNotNull("_dispositionType")]
261 private void ParseValue()
262 {
263 int offset = 0;
264 try
265 {
267 if (string.IsNullOrEmpty(_dispositionType))
268 {
270 }
271 if (_parameters == null)
272 {
274 }
275 else
276 {
278 }
280 {
281 if (_disposition[offset++] != ';')
282 {
284 }
286 {
288 if (_disposition[offset++] != '=')
289 {
291 }
293 {
295 }
297 if (string.IsNullOrEmpty(text) || string.IsNullOrEmpty(value))
298 {
300 }
302 continue;
303 }
304 break;
305 }
306 }
308 {
310 }
311 _parameters.IsChanged = false;
312 }
313}
virtual void Add(string key, string? value)
static CultureInfo InvariantCulture
static string GetString(MailHeaderID id)
static void EncodeToBuffer(string value, StringBuilder builder, bool allowUnicode)
override bool Equals([NotNullWhen(true)] object? rparam)
static readonly TrackingValidationObjectDictionary.ValidateAndParseValue s_longParser
static readonly Dictionary< string, TrackingValidationObjectDictionary.ValidateAndParseValue > s_validators
TrackingValidationObjectDictionary _parameters
static readonly TrackingValidationObjectDictionary.ValidateAndParseValue s_dateParser
void PersistIfNeeded(HeaderCollection headers, bool forcePersist)
DateTime GetDateParameter(string parameterName)
static bool HasCROrLF(string data)
static string ReadToken(string data, ref int offset, StringBuilder builder)
static string ReadQuotedString(string data, ref int offset, StringBuilder builder)
static void GetTokenOrQuotedString(string data, StringBuilder builder, bool allowUnicode)
static string ReadParameterAttribute(string data, ref int offset, StringBuilder builder)
static bool SkipCFWS(string data, ref int offset)
static bool IsAscii(string value, bool permitCROrLF)
static string EncodeHeaderValue(string value, Encoding encoding, bool base64Encoding)
static bool ShouldUseBase64Encoding(Encoding encoding)
static Encoding DecodeEncoding(string value)
delegate object ValidateAndParseValue(object valueToValidate)
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string MailHeaderFieldMalformedHeader
Definition SR.cs:38
static string ContentDispositionInvalid
Definition SR.cs:52
static string net_emptystringset
Definition SR.cs:20
static string MailHeaderFieldInvalidCharacter
Definition SR.cs:140
Definition SR.cs:7
static Encoding GetEncoding(int codepage)
Definition Encoding.cs:593
static readonly DateTime MinValue
Definition DateTime.cs:35