# ktor-sample-httpbin

Based on httpbin(1): HTTP Request & Response Service

## ENDPOINTS

- `/` This page.
- `/ip` Returns Origin IP.
- `/user-agent` Returns user-agent.
- `/headers` Returns header dict.
- `/get` Returns GET data.
- `/post` Returns POST data.
- `/patch` Returns PATCH data.
- `/put` Returns PUT data.
- `/delete` Returns DELETE data
- `/encoding/utf8` Returns page containing UTF-8 data.
- `/gzip` Returns gzip-encoded data.
- `/deflate` Returns deflate-encoded data.
- `/brotli` Returns brotli-encoded data.
- `/status/:code` Returns given HTTP Status code.
- `/response-headers?key=val` Returns given response headers.
- `/redirect/:n` 302 Redirects n times.
- `/redirect-to?url=foo` 302 Redirects to the foo URL.
- `/redirect-to?url=foo&status_code=307` 307 Redirects to the foo URL.
- `/relative-redirect/:n` 302 Relative redirects n times.
- `/absolute-redirect/:n` 302 Absolute redirects n times.
- `/cookies` Returns cookie data.
- `/cookies/set?name=value` Sets one or more simple cookies.
- `/cookies/delete?name` Deletes one or more simple cookies.
- `/basic-auth/:user/:passwd` Challenges HTTPBasic Auth.
- `/hidden-basic-auth/:user/:passwd` 404'd BasicAuth.
- `/digest-auth/:qop/:user/:passwd/:algorithm` Challenges HTTP Digest Auth.
- `/digest-auth/:qop/:user/:passwd` Challenges HTTP Digest Auth.
- `/stream/:n` Streams min(n, 100) lines.
- `/delay/:n` Delays responding for min(n, 10) seconds.
- `/drip?numbytes=n&duration=s&delay=s&code=code` Drips data over a duration after an optional initial delay, then (optionally) returns with the given status code.
- `/range/1024?duration=s&chunk_size=code` Streams n bytes, and allows specifying a Range header to select a subset of the data. Accepts a chunk_size and request duration parameter.
- `/html` Renders an HTML Page.
- `/robots.txt` Returns some robots.txt rules.
- `/deny` Denied by robots.txt file.
- `/cache` Returns 200 unless an If-Modified-Since or If-None-Match header is provided, when it returns a 304.
- `/cache/:n` Sets a Cache-Control header for n seconds.
- `/bytes/:n` Generates n random bytes of binary data, accepts optional seed integer parameter.
- `/stream-bytes/:n` Streams n random bytes of binary data, accepts optional seed and chunk_size integer parameters.
- `/links/:n` Returns page containing n HTML links.
- `/image` Returns page containing an image based on sent Accept header.
- `/image/png` Returns a PNG image.
- `/image/jpeg` Returns a JPEG image.
- `/image/webp` Returns a WEBP image.
- `/image/svg` Returns a SVG image.
- `/forms/post` HTML form that submits to /post
- `/xml` Returns some XML

## DESCRIPTION

All endpoint responses are JSON-encoded.

## LIVE EXAMPLES

### $ curl http://httpbin.org/ip

### $ curl http://httpbin.org/user-agent

### $ curl http://httpbin.org/get

### $ curl -I http://httpbin.org/headers

### $ curl https://httpbin.org/get?show_env=1

## AUTHORS

Based on a Kenneth Reitz project httpbin.

Adopted to Ktor by Jean-Michel Fayard