/// <summary> /// Transfer-Encoding をデコード /// </summary> /// <param name="message">HTTP メッセージ</param> /// <returns>Transfer-Encoding をデコードされたメッセージボディー</returns> public static byte[] GetTransferDecodedBody(this IReadOnlyHttpMessage message) { if (message.Body == null) { return(null); } if (!message.Headers.HasHeader("Transfer-Encoding")) { return(message.Body); } return(message.Body.Decode(message.Headers.GetFirstValue("Transfer-Encoding").SplitValue().ToArray())); }
/// <summary> /// メッセージボディを指定した文字エンコーディングで文字列として取得。 /// Transfer-Encoding, Content-Encoding がある場合は同時にデコードします。 /// </summary> /// <param name="message">HTTP メッセージ</param> /// <param name="encoding">文字エンコーディング</param> /// <returns>メッセージボディー文字列</returns> public static string GetBodyAsString(this IReadOnlyHttpMessage message, Encoding encoding = null) { var body = message.GetContentDecodedBody(); if (body == null) { return(""); } if (encoding != null) { encoding.GetString(body); } return(body.AsString(message.Headers.GetCharset())); }
/// <summary> /// Transfer-Encoding をデコード /// </summary> /// <param name="message">HTTP メッセージ</param> /// <returns>Transfer-Encoding をデコードされたメッセージボディー</returns> public static IReadOnlyList <byte> GetTransferDecodedBody(this IReadOnlyHttpMessage message) => ApplicationLayer.Entities.Http.DecodeExtensions.GetTransferDecodedBody(message);
/// <summary> /// メッセージボディを指定した文字エンコーディングで文字列として取得。 /// Transfer-Encoding, Content-Encoding がある場合は同時にデコードします。 /// </summary> /// <param name="message">HTTP メッセージ</param> /// <param name="encoding">文字エンコーディング</param> /// <returns>メッセージボディー文字列</returns> public static string GetBodyAsString(this IReadOnlyHttpMessage message, Encoding encoding = null) => ApplicationLayer.Entities.Http.DecodeExtensions.GetBodyAsString(message, encoding);