shiguredo_http11 2026.6.1

HTTP/1.1 Library
Documentation
//! # shiguredo_http11
//!
//! 依存なしの HTTP/1.1 スタイル テキストプロトコルライブラリ (Sans I/O)
//!
//! ## 特徴
//!
//! - **依存なし**: `core` / `alloc` のみ (no_std 対応)
//! - **Sans I/O**: I/O を完全に分離した設計
//! - **柔軟性**: HTTP/1.1, RTSP/1.0, RTSP/2.0 等に対応
//!
//! ## 使い方
//!
//! ### クライアント (リクエスト送信、レスポンス受信)
//!
//! ```rust
//! use shiguredo_http11::{EncodeError, Request, ResponseDecoder};
//!
//! fn build() -> Result<Vec<u8>, EncodeError> {
//!     // リクエストを作成してエンコード
//!     let request = Request::new("GET", "/")
//!         .unwrap()
//!         .header("Host", "example.com")
//!         .unwrap()
//!         .header("Connection", "close")
//!         .unwrap();
//!     request.encode()
//! }
//! let bytes = build().unwrap();
//! // bytes を送信...
//!
//! // レスポンスをデコード
//! let mut decoder = ResponseDecoder::new();
//! // 受信データを feed...
//! // decoder.feed(&received_data)?;
//! // if let Some(response) = decoder.decode()? { ... }
//! ```
//!
//! ### サーバー (リクエスト受信、レスポンス送信)
//!
//! ```rust
//! use shiguredo_http11::{EncodeError, RequestDecoder, Response, StatusCode};
//!
//! // リクエストをデコード
//! let mut decoder = RequestDecoder::new();
//! // 受信データを feed...
//! // decoder.feed(&received_data)?;
//! // if let Some(request) = decoder.decode()? { ... }
//!
//! fn build() -> Result<Vec<u8>, EncodeError> {
//!     // レスポンスを作成してエンコード
//!     let response = Response::with_status(StatusCode::OK)
//!         .header("Content-Type", "text/plain").unwrap()
//!         .body(b"Hello, World!".to_vec());
//!     response.encode()
//! }
//! let bytes = build().unwrap();
//! // bytes を送信...
//! ```

#![cfg_attr(not(test), no_std)]
extern crate alloc;

pub mod accept;
pub mod auth;
mod base64;
pub mod cache;
pub mod compression;
pub mod conditional;
pub mod content_disposition;
pub mod content_encoding;
pub mod content_language;
pub mod content_location;
pub mod content_type;
pub mod cookie;
pub mod date;
mod decoder;
pub mod digest_fields;
mod encoder;
mod error;
mod header_name;

pub mod etag;
pub mod expect;
pub mod host;
mod limits;
mod method;
pub mod multipart;
pub mod range;
mod request;
pub mod request_target;
mod response;
pub mod status_code;
pub mod trailer;
pub mod upgrade;
pub mod uri;
mod validate;
pub mod vary;

pub use decoder::{
    BodyKind, BodyProgress, HttpHead, RequestDecoder, RequestHead, ResponseDecoder, ResponseHead,
};
pub use encoder::{
    RequestEncoder, ResponseEncoder, encode_chunk, encode_chunks, encode_request,
    encode_request_headers, encode_response, encode_response_headers,
};
pub use error::{EncodeError, Error};
pub use header_name::{HeaderName, HeaderNameError};
pub use limits::DecoderLimits;
pub use method::{Method, MethodError};
pub use request::Request;
pub use response::Response;
pub use status_code::{StatusClass, StatusCode};
pub use uri::{Scheme, SchemeError};