module HTTP
Overview
The HTTP module contains HTTP::Client
, HTTP::Server
and HTTP::WebSocket
implementations.
Defined in:
http/client.crhttp/params.cr
http/content.cr
http/cookie.cr
http.cr
http/common.cr
Constant Summary
-
MAX_HEADERS_SIZE =
16384
-
Default maximum permitted combined size (in bytes) of the headers in an HTTP request.
-
MAX_REQUEST_LINE_SIZE =
8192
-
Default maximum permitted size (in bytes) of the request line in an HTTP request.
-
SUPPORTED_VERSIONS =
{"HTTP/1.0", "HTTP/1.1"}
Class Method Summary
-
.dequote_string(str)
Dequotes an RFC 2616 quoted-string.
- .expect_continue?(headers)
- .format_time(time : Time) : String
-
.parse_time(time_str : String) : Time?
Parse a time string using the formats specified by RFC 2616
-
.quote_string(string, io)
Encodes a string to an RFC 2616 quoted-string.
-
.quote_string(string)
Encodes a string to an RFC 2616 quoted-string.
- .serialize_chunked_body(io, body)
- .serialize_headers(io, headers)
- .serialize_headers_and_string_body(io, headers, body)
Class Method Detail
Dequotes an RFC 2616 quoted-string.
require "http"
quoted = %q(\"foo\\bar\")
HTTP.dequote_string(quoted) # => %q("foo\bar")
Format a Time
object as a String
using the format specified as sane-cookie-date
by RFC 6265 which is
according to RFC 2616 a
RFC 1123 format with explicit
timezone GMT
(interpreted as UTC
).
require "http"
HTTP.format_time(Time.utc(2016, 2, 15)) # => "Mon, 15 Feb 2016 00:00:00 GMT"
Uses Time::Format::HTTP_DATE
as formatter.
Parse a time string using the formats specified by RFC 2616
require "http"
HTTP.parse_time("Sun, 14 Feb 2016 21:00:00 GMT") # => "2016-02-14 21:00:00 UTC"
HTTP.parse_time("Sunday, 14-Feb-16 21:00:00 GMT") # => "2016-02-14 21:00:00 UTC"
HTTP.parse_time("Sun Feb 14 21:00:00 2016") # => "2016-02-14 21:00:00 UTC"
Uses Time::Format::HTTP_DATE
as parser.
Encodes a string to an RFC 2616 quoted-string. Encoded string is written to io. May raise when string contains an invalid character.
require "http"
string = %q("foo\ bar")
io = IO::Memory.new
HTTP.quote_string(string, io)
io.rewind
io.gets_to_end # => %q(\"foo\\\ bar\")