private static string EncodeAndQuoteMime(string input) { string input1 = input; bool flag = false; if (ContentDispositionHeaderValue.IsQuoted((ReadOnlySpan <char>)input1)) { input1 = input1.Substring(1, input1.Length - 2); flag = true; } if (input1.Contains('"')) { throw new ArgumentException(SR.Format((IFormatProvider)CultureInfo.InvariantCulture, SR.net_http_headers_invalid_value, (object)input)); } if (HeaderUtilities.ContainsNonAscii(input1)) { flag = true; input1 = ContentDispositionHeaderValue.EncodeMime(input1); } else if (!flag && HttpRuleParser.GetTokenLength(input1, 0) != input1.Length) { flag = true; } if (flag) { input1 = "\"" + input1 + "\""; } return(input1); }
private static bool TryDecodeMime(string input, out string output) { output = (string)null; string str = input; if (!ContentDispositionHeaderValue.IsQuoted((ReadOnlySpan <char>)str) || str.Length < 10) { return(false); } string[] strArray = str.Split('?', StringSplitOptions.None); if (strArray.Length == 5 && !(strArray[0] != "\"=") && !(strArray[4] != "=\"")) { if (!(strArray[2].ToLowerInvariant() != "b")) { try { Encoding encoding = Encoding.GetEncoding(strArray[1]); byte[] bytes = Convert.FromBase64String(strArray[3]); output = encoding.GetString(bytes, 0, bytes.Length); return(true); } catch (ArgumentException ex) { } catch (FormatException ex) { } return(false); } } return(false); }
private DateTimeOffset?GetDate(string parameter) { NameValueHeaderValue valueHeaderValue = NameValueHeaderValue.Find(this._parameters, parameter); if (valueHeaderValue != null) { ReadOnlySpan <char> input = (ReadOnlySpan <char>)valueHeaderValue.Value; if (ContentDispositionHeaderValue.IsQuoted(input)) { input = input.Slice(1, input.Length - 2); } DateTimeOffset result; if (HttpDateParser.TryStringToDate(input, out result)) { return(new DateTimeOffset?(result)); } } return(new DateTimeOffset?()); }