diff options
Diffstat (limited to 'src/helpers.cr')
| -rw-r--r-- | src/helpers.cr | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/helpers.cr b/src/helpers.cr index 110a0831..4f59d639 100644 --- a/src/helpers.cr +++ b/src/helpers.cr @@ -29,6 +29,30 @@ class Config }) end +class FilteredCompressHandler < Kemal::Handler + exclude ["/videoplayback"] + + def call(env) + return call_next env if exclude_match? env + + {% if flag?(:without_zlib) %} + call_next env + {% else %} + request_headers = env.request.headers + + if request_headers.includes_word?("Accept-Encoding", "gzip") + env.response.headers["Content-Encoding"] = "gzip" + env.response.output = Gzip::Writer.new(env.response.output, sync_close: true) + elsif request_headers.includes_word?("Accept-Encoding", "deflate") + env.response.headers["Content-Encoding"] = "deflate" + env.response.output = Flate::Writer.new(env.response.output, sync_close: true) + end + + call_next env + {% end %} + end +end + class Video module HTTPParamConverter def self.from_rs(rs) |
