Skip to content

Commit

Permalink
Add Date header to HTTP responses (#676)
Browse files Browse the repository at this point in the history
  • Loading branch information
Sija committed Apr 10, 2024
1 parent 7c47bbc commit b074578
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
12 changes: 12 additions & 0 deletions spec/init_handler_spec.cr
Expand Up @@ -11,6 +11,18 @@ describe "Kemal::InitHandler" do
context.response.headers["Content-Type"].should eq "text/html"
end

it "initializes context with Date header" do
request = HTTP::Request.new("GET", "/")
io = IO::Memory.new
response = HTTP::Server::Response.new(io)
context = HTTP::Server::Context.new(request, response)
Kemal::InitHandler::INSTANCE.next = ->(_context : HTTP::Server::Context) {}
Kemal::InitHandler::INSTANCE.call(context)
date = context.response.headers["Date"]?.should_not be_nil
date = HTTP.parse_time(date).should_not be_nil
date.should be_close(Time.utc, 1.second)
end

it "initializes context with X-Powered-By: Kemal" do
request = HTTP::Request.new("GET", "/")
io = IO::Memory.new
Expand Down
3 changes: 3 additions & 0 deletions src/kemal/init_handler.cr
@@ -1,3 +1,5 @@
require "http"

module Kemal
# Initializes the context with default values, such as
# *Content-Type* or *X-Powered-By* headers.
Expand All @@ -9,6 +11,7 @@ module Kemal
def call(context : HTTP::Server::Context)
context.response.headers.add "X-Powered-By", "Kemal" if Kemal.config.powered_by_header?
context.response.content_type = "text/html" unless context.response.headers.has_key?("Content-Type")
context.response.headers.add "Date", HTTP.format_time(Time.utc)
call_next context
end
end
Expand Down

0 comments on commit b074578

Please sign in to comment.