From 28a69973b420d985d2a313b14f4378d4fe6a644e Mon Sep 17 00:00:00 2001 From: Mike Ralphson Date: Fri, 5 May 2023 10:24:17 +0100 Subject: [PATCH] feat: images, robots.txt, humans.txt, ai-plugin.json, json, html Signed-off-by: Mike Ralphson --- Cargo.toml | 3 +- README.md | 2 +- src/routes/images.rs | 113 +++++++++++++ src/routes/mod.rs | 1 + src/routes/response_formats.rs | 13 +- src/routes/root.rs | 33 ++++ src/server.rs | 3 +- src/templates/ai-plugin.json | 18 +++ src/templates/humans.txt | 4 + src/templates/images/jackal.jpg | Bin 0 -> 35588 bytes src/templates/images/pig_icon.png | Bin 0 -> 8090 bytes src/templates/images/svg_logo.svg | 259 ++++++++++++++++++++++++++++++ src/templates/images/wolf_1.webp | Bin 0 -> 10568 bytes src/templates/index.html | 26 +-- src/templates/json.json | 22 +++ src/templates/moby.html | 14 ++ src/templates/robots.txt | 2 + 17 files changed, 496 insertions(+), 17 deletions(-) create mode 100644 src/routes/images.rs create mode 100644 src/templates/ai-plugin.json create mode 100644 src/templates/humans.txt create mode 100644 src/templates/images/jackal.jpg create mode 100644 src/templates/images/pig_icon.png create mode 100644 src/templates/images/svg_logo.svg create mode 100644 src/templates/images/wolf_1.webp create mode 100644 src/templates/json.json create mode 100644 src/templates/moby.html create mode 100644 src/templates/robots.txt diff --git a/Cargo.toml b/Cargo.toml index 55a0ed8..1ea2eb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "httpbin" -version = "0.1.0" +version = "0.10.0" edition = "2021" license = "Apache-2.0" @@ -12,6 +12,7 @@ rand = "0.8.5" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.68" tokio = { version = "1.0", features = ["full"] } +tokio-util = { version = "0.7.8", features = ["io"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } diff --git a/README.md b/README.md index 8012998..f4d35f5 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This is a reimplementation of `httpbin` for two purposes: 1. To demonstrate (and test) the abilities of an http library for rust -2. To make a static binary (1.6MB) providing all the httpbin functionality +2. To make a static binary (4.6MB) providing all the httpbin functionality (not affiliated to the original httpbin) diff --git a/src/routes/images.rs b/src/routes/images.rs new file mode 100644 index 0000000..74f91b8 --- /dev/null +++ b/src/routes/images.rs @@ -0,0 +1,113 @@ +use axum::{ + body::StreamBody, + http::{header::{self}, StatusCode, header::{ACCEPT, HeaderMap}}, + response::{Html, IntoResponse}, + routing::get, + {Router} +}; + +use tokio_util::io::ReaderStream; + +const SVG_LOGO: &str = include_str!("../templates/images/svg_logo.svg"); + +pub fn routes() -> Router { + Router::new().route("/image/svg", get(svg)) + .route("/image/jpeg", get(jpeg)) + .route("/image/png", get(png)) + .route("/image/webp", get(webp)) + .route("/image", get(image)) + .route("/favicon.ico", get(favicon)) +} + +async fn svg() -> Html<&'static str> { + SVG_LOGO.into() +} + +async fn favicon() -> impl IntoResponse { + // `File` implements `AsyncRead` + let file = match tokio::fs::File::open("static/favicon.ico").await { + Ok(file) => file, + Err(err) => return Err((StatusCode::NOT_FOUND, format!("File not found: {}", err))), + }; + // convert the `AsyncRead` into a `Stream` + let stream = ReaderStream::new(file); + // convert the `Stream` into an `axum::body::HttpBody` + let body = StreamBody::new(stream); + + Ok((StatusCode::OK, [(header::CONTENT_TYPE, "image/vnd.microsoft.icon")], body).into_response()) +} + +async fn jpeg() -> impl IntoResponse { + let file = match tokio::fs::File::open("src/templates/images/jackal.jpg").await { + Ok(file) => file, + Err(err) => return Err((StatusCode::NOT_FOUND, format!("File not found: {}", err))), + }; + let stream = ReaderStream::new(file); + let body = StreamBody::new(stream); + Ok((StatusCode::OK, [(header::CONTENT_TYPE, "image/jpeg")], body).into_response()) +} + +async fn png() -> impl IntoResponse { + let file = match tokio::fs::File::open("src/templates/images/pig_icon.png").await { + Ok(file) => file, + Err(err) => return Err((StatusCode::NOT_FOUND, format!("File not found: {}", err))), + }; + let stream = ReaderStream::new(file); + let body = StreamBody::new(stream); + Ok((StatusCode::OK, [(header::CONTENT_TYPE, "image/png")], body).into_response()) +} + +async fn webp() -> impl IntoResponse { + let file = match tokio::fs::File::open("src/templates/images/wolf_1.webp").await { + Ok(file) => file, + Err(err) => return Err((StatusCode::NOT_FOUND, format!("File not found: {}", err))), + }; + let stream = ReaderStream::new(file); + let body = StreamBody::new(stream); + Ok((StatusCode::OK, [(header::CONTENT_TYPE, "image/webp")], body).into_response()) +} + +async fn image(headers: HeaderMap) -> impl IntoResponse { + match headers.get(ACCEPT).map(|x| x.as_bytes()) { + Some(b"image/svg+xml") => svg().await.into_response(), + Some(b"image/jpeg") => jpeg().await.into_response(), + Some(b"image/webp") => webp().await.into_response(), + Some(b"image/*") => png().await.into_response(), + _ => png().await.into_response(), // Python implementation returns status 406 for all other + // types (except if no Accept header is present) + }.into_response() +} + +#[cfg(test)] +mod tests { + use super::*; + use axum::{ + body::Body, + http::{header, HeaderValue, Request, StatusCode}, + }; + use tower::ServiceExt; + + #[tokio::test] + async fn svg() { + let app = routes(); + + let response = app + .oneshot( + Request::builder() + .uri("/image/svg") + .body(Body::empty()) + .unwrap(), + ) + .await + .unwrap(); + + assert_eq!(response.status(), StatusCode::OK); + assert_eq!( + response.headers().get(header::CONTENT_TYPE), + Some(&HeaderValue::from_static(mime::IMAGE_SVG.as_ref())) + ); + + let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + assert!(std::str::from_utf8(&body).is_ok()) + } +} diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 8c91dac..ac20261 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -1,3 +1,4 @@ +pub mod images; pub mod request_inspection; pub mod response_formats; pub mod root; diff --git a/src/routes/response_formats.rs b/src/routes/response_formats.rs index 32e9e16..376de2e 100644 --- a/src/routes/response_formats.rs +++ b/src/routes/response_formats.rs @@ -1,15 +1,26 @@ -use axum::{response::Html, routing::get, Router}; +use axum::{response::Html, response::IntoResponse, routing::get, Router, + http::{StatusCode, header::{self}}}; const UTF8_PAGE: &str = include_str!("../templates/utf8.html"); +const JSON_PAGE: &str = include_str!("../templates/json.json"); pub fn routes() -> Router { Router::new().route("/encoding/utf8", get(utf8)) + .route("/json", get(json)) } async fn utf8() -> Html<&'static str> { UTF8_PAGE.into() } +async fn json() -> impl IntoResponse { +( + StatusCode::OK, + [(header::CONTENT_TYPE, mime::APPLICATION_JSON.essence_str())], + JSON_PAGE, +) +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/routes/root.rs b/src/routes/root.rs index a1c0807..83b11cf 100644 --- a/src/routes/root.rs +++ b/src/routes/root.rs @@ -8,15 +8,23 @@ use axum::{ use minijinja::render; const INDEX_TEMPLATE: &str = include_str!("../templates/index.html"); +const HTML_TEMPLATE: &str = include_str!("../templates/moby.html"); const OPENAPI_SPECIFICATION: &str = include_str!("../templates/openapi.yaml"); +const ROBOTS_TEMPLATE: &str = include_str!("../templates/robots.txt"); +const HUMANS_TEMPLATE: &str = include_str!("../templates/humans.txt"); +const PLUGIN_TEMPLATE: &str = include_str!("../templates/ai-plugin.json"); const NOT_FOUND_PAGE: &str = include_str!("../templates/not_found.html"); const API_DOCS_LOCATION: &str = "https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/postman-open-technologies/httpbin-rs/main/src/templates/openapi.yaml&nocors"; pub fn routes() -> Router { Router::new() .route("/", get(index)) + .route("/html", get(html)) .route("/api-docs", get(api_docs)) .route("/openapi.yaml", get(openapi)) + .route("/robots.txt", get(robots)) + .route("/.well-known/humans.txt", get(humans)) + .route("/.well-known/ai-plugin.json", get(plugin)) .fallback(not_found) } @@ -39,6 +47,31 @@ async fn api_docs() -> impl IntoResponse { ) } +async fn robots() -> impl IntoResponse { + ( + [(header::CONTENT_TYPE, "text/plain")], + ROBOTS_TEMPLATE, + ) +} + +async fn humans() -> impl IntoResponse { + ( + [(header::CONTENT_TYPE, "text/plain")], + HUMANS_TEMPLATE, + ) +} + +async fn plugin() -> impl IntoResponse { + ( + [(header::CONTENT_TYPE, "application/json")], + PLUGIN_TEMPLATE, + ) +} + +async fn html() -> Html { + render!(HTML_TEMPLATE, prefix => "").into() +} + async fn not_found() -> impl IntoResponse { (StatusCode::NOT_FOUND, Html(NOT_FOUND_PAGE)) } diff --git a/src/server.rs b/src/server.rs index b538aa6..cae0cea 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,4 +1,4 @@ -use crate::routes::{request_inspection, response_formats, root, status_codes}; +use crate::routes::{images, request_inspection, response_formats, root, status_codes}; use axum::{ http::{header, HeaderValue, Method, Request, StatusCode}, middleware::{from_fn, Next}, @@ -13,6 +13,7 @@ pub fn app() -> Router { .merge(request_inspection::routes()) .merge(response_formats::routes()) .merge(status_codes::routes()) + .merge(images::routes()) .layer(from_fn(inject_server_header)) .layer(from_fn(inject_cors_headers)) } diff --git a/src/templates/ai-plugin.json b/src/templates/ai-plugin.json new file mode 100644 index 0000000..6c14527 --- /dev/null +++ b/src/templates/ai-plugin.json @@ -0,0 +1,18 @@ +{ + "schema_version": "v1", + "name_for_human": "HTTPBin Plugin", + "name_for_model": "httpbin", + "description_for_human": "Plugin for accessing HTTPBin functionality.", + "description_for_model": "Plugin for accessing HTTPBin functionality. This plugin can provide information on network requests such as IP addresses, request headers, cookies, user-agents etc. It can also respond with various data such as JSON, XML, images, favicons, robots.txt, .well-known/humans.txt etc.", + "auth": { + "type": "none" + }, + "api": { + "type": "openapi", + "url": "http://httpbin.org/openapi.yaml", + "is_user_authenticated": false + }, + "logo_url": "http://httpbin.org/image/svg", + "contact_email": "mike.ralphson@gmail.com", + "legal_info_url": "http://httpbin.org/terms" +} diff --git a/src/templates/humans.txt b/src/templates/humans.txt new file mode 100644 index 0000000..37c0f9a --- /dev/null +++ b/src/templates/humans.txt @@ -0,0 +1,4 @@ +Pascal Heus +Doc Jones +Mike Ralphson +Kevin Swiber diff --git a/src/templates/images/jackal.jpg b/src/templates/images/jackal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4e824c247f97b4f524b885a358c0d0008e4e161 GIT binary patch literal 35588 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⩔sAx?J|ku2Tw$wg*VK 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 literal 0 HcmV?d00001 diff --git a/src/templates/images/svg_logo.svg b/src/templates/images/svg_logo.svg new file mode 100644 index 0000000..1b59410 --- /dev/null +++ b/src/templates/images/svg_logo.svg @@ -0,0 +1,259 @@ + + + SVG Logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SVG + + + + + + + + diff --git a/src/templates/images/wolf_1.webp b/src/templates/images/wolf_1.webp new file mode 100644 index 0000000000000000000000000000000000000000..37f5392d54cea2bda1c4bb97a5cd31f5ad93ad10 GIT binary patch literal 10568 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 literal 0 HcmV?d00001 diff --git a/src/templates/index.html b/src/templates/index.html index cd17911..b023b20 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -3,6 +3,7 @@ httpbin-rs: HTTP Client Testing Service +