Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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?());
        }