Example #1
0
        /// <summary>
        /// Content-Type から charset を取得し、<see cref="Encoding"/>として返す
        /// </summary>
        /// <param name="headers">HTTP ヘッダー</param>
        /// <returns>charset から作成された<see cref="Encoding"/></returns>
        private static Encoding GetCharset(this IReadOnlyHttpHeaders headers)
        {
            if (!headers.HasHeader("Content-Type"))
            {
                return(null);
            }
            var charset = headers.GetFirstValue("Content-Type")
                          .ToLower()
                          .Split(';')
                          .Select(x => x.Trim())
                          .FirstOrDefault(x => x.StartsWith("charset="))
                          ?.Split('=')
                          .Last();

            if (string.IsNullOrWhiteSpace(charset))
            {
                return(null);
            }
            try
            {
                var e = Encoding.GetEncoding(charset);
                return(e);
            }
            catch (ArgumentException)
            {
                return(null);
            }
        }
Example #2
0
 /// <summary>
 /// 指定された名前のヘッダーの値のリストを取得
 /// </summary>
 /// <param name="headers">HTTP ヘッダー</param>
 /// <param name="name">ヘッダー名</param>
 /// <returns>ヘッダー値のリスト</returns>
 public static IReadOnlyList <string> GetValues(this IReadOnlyHttpHeaders headers, string name)
 => ApplicationLayer.Entities.Http.HttpHeadersExtensions.GetValues(headers, name);
Example #3
0
 /// <summary>
 /// 指定された名前のヘッダーの最初の値を取得
 /// </summary>
 /// <param name="headers">HTTP ヘッダー</param>
 /// <param name="name">ヘッダー名</param>
 /// <returns>最初のヘッダー値</returns>
 public static string GetFirstValue(this IReadOnlyHttpHeaders headers, string name)
 => ApplicationLayer.Entities.Http.HttpHeadersExtensions.GetFirstValue(headers, name);
Example #4
0
 /// <summary>
 /// 指定された名前のヘッダーを持つかどうか
 /// </summary>
 /// <param name="headers">HTTP ヘッダー</param>
 /// <param name="name">ヘッダー名</param>
 /// <returns>指定された名前のヘッダーを持つかどうか</returns>
 public static bool HasHeader(this IReadOnlyHttpHeaders headers, string name)
 => ApplicationLayer.Entities.Http.HttpHeadersExtensions.HasHeader(headers, name);