Skip to content

Commit 45d2911

Browse files
mind6etpinard
authored andcommitted
updated to HTTP 1.51; duplicated 0.9.17's RequestHandlerFunction in HttpHelpers/handlers.jl
1 parent 754ff49 commit 45d2911

File tree

12 files changed

+107
-88
lines changed

12 files changed

+107
-88
lines changed

Project.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,12 @@ DashCoreComponents = "2.0.0"
3030
DashHtmlComponents = "2.0.0"
3131
DashTable = "5.0.0"
3232
DataStructures = "0.17, 0.18"
33-
HTTP = "0.8.10, 0.9"
3433
JSON = "0.21"
3534
JSON3 = "1.9"
3635
MD5 = "0.2"
3736
PlotlyBase = "0.8.5, 0.8.6"
38-
YAML = "0.4.7"
3937
Requires = "1.3"
38+
YAML = "0.4.7"
4039
julia = "1.4"
4140

4241
[extras]

src/HttpHelpers/HttpHelpers.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
module HttpHelpers
22

3-
export state_handler, exception_handling_handler, compress_handler, Route, Router, add_route!
3+
export state_handler, exception_handling_handler, compress_handler, Route, Router, add_route!, handle
44

55
import HTTP, CodecZlib
6-
76
include("handlers.jl")
87
include("router.jl")
98

src/HttpHelpers/handlers.jl

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,37 @@
1+
struct RequestHandlerFunction <: HTTP.Handler
2+
func::Function # func(req)
3+
end
4+
5+
function handle(h::RequestHandlerFunction, request::HTTP.Request, args...)
6+
h.func(request, args...)
7+
end
8+
9+
function handle(handler::Function, request::HTTP.Request, args...)
10+
handler(request, args)
11+
end
12+
13+
function handle(h::RequestHandlerFunction, request::HTTP.Request, state, args...)
14+
h.func(request, state, args...)
15+
end
16+
17+
function handle(handler::Function, request::HTTP.Request, state, args...)
18+
handler(request, state, args)
19+
end
20+
121
function state_handler(base_handler, state)
2-
return HTTP.RequestHandlerFunction(
3-
function(request::HTTP.Request, args...)
4-
response = HTTP.handle(base_handler, request, state, args...)
5-
if response.status == 200
6-
HTTP.defaultheader!(response, "Content-Type" => HTTP.sniff(response.body))
7-
HTTP.defaultheader!(response, "Content-Length" => string(sizeof(response.body)))
8-
end
9-
return response
10-
end
11-
)
22+
return RequestHandlerFunction(
23+
function(request::HTTP.Request, args...)
24+
response = handle(base_handler, request, state, args...)
25+
if response.status == 200
26+
HTTP.defaultheader!(response, "Content-Type" => HTTP.sniff(response.body))
27+
HTTP.defaultheader!(response, "Content-Length" => string(sizeof(response.body)))
28+
end
29+
return response
30+
end
31+
)
1232
end
1333

14-
state_handler(base_handler::Function, state) = state_handler(HTTP.RequestHandlerFunction(base_handler), state)
34+
state_handler(base_handler::Function, state) = state_handler(RequestHandlerFunction(base_handler), state)
1535

1636
function check_mime(message::HTTP.Message, mime_list)
1737
!HTTP.hasheader(message, "Content-Type") && return false
@@ -22,9 +42,9 @@ end
2242

2343
const default_compress_mimes = ["text/plain", "text/html", "text/css", "text/xml", "application/json", "application/javascript", "application/css"]
2444
function compress_handler(base_handler; mime_types::Vector{String} = default_compress_mimes, compress_min_size = 500)
25-
return HTTP.RequestHandlerFunction(
45+
return RequestHandlerFunction(
2646
function(request::HTTP.Request, args...)
27-
response = HTTP.handle(base_handler, request, args...)
47+
response = handle(base_handler, request, args...)
2848
if response.status == 200 && sizeof(response.body) >= compress_min_size &&
2949
occursin("gzip", HTTP.header(request, "Accept-Encoding", "")) && check_mime(response, mime_types)
3050
HTTP.setheader(response, "Content-Encoding" => "gzip")
@@ -38,14 +58,14 @@ function compress_handler(base_handler; mime_types::Vector{String} = default_com
3858
end
3959

4060
function compress_handler(base_handler::Function; mime_types::Vector{String} = default_compress_mimes, compress_min_size = 500)
41-
return compress_handler(HTTP.RequestHandlerFunction(base_handler), mime_types = mime_types, compress_min_size = compress_min_size)
61+
return compress_handler(RequestHandlerFunction(base_handler), mime_types = mime_types, compress_min_size = compress_min_size)
4262
end
4363

4464
function exception_handling_handler(ex_handling_func, base_handler)
45-
return HTTP.RequestHandlerFunction(
65+
return RequestHandlerFunction(
4666
function(request::HTTP.Request, args...)
4767
try
48-
return HTTP.handle(base_handler, request, args...)
68+
return handle(base_handler, request, args...)
4969
catch e
5070
return ex_handling_func(e)
5171
end
@@ -55,12 +75,12 @@ function exception_handling_handler(ex_handling_func, base_handler)
5575
end
5676

5777
exception_handling_handler(ex_handling_func, base_handler::Function) =
58-
exception_handling_handler(ex_handling_func, HTTP.RequestHandlerFunction(base_handler))
78+
exception_handling_handler(ex_handling_func, RequestHandlerFunction(base_handler))
5979

6080
function request_logging_handler(base_handler; exclude = Regex[])
61-
return HTTP.RequestHandlerFunction(
81+
return RequestHandlerFunction(
6282
function(request::HTTP.Request, args...)
63-
response = HTTP.handle(base_handler, request, args...)
83+
response = handle(base_handler, request, args...)
6484

6585
return response
6686
end

src/HttpHelpers/router.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ end
124124
add_route!(handler::Function, router::Router, method, url) = add_route!(router, Route(handler, method, url))
125125
add_route!(handler::Function, router::Router, url) = add_route!(handler, router, nothing, url)
126126

127-
function HTTP.handle(router::Router, request::HTTP.Request, args...)
127+
function handle(router::Router, request::HTTP.Request, args...)
128128
path = HTTP.URI(request.target).path
129129
return handle(router.routes, path, request, args...)
130130
end

src/handler/make_handler.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ function make_handler(app::DashApp, registry::ResourcesRegistry; check_layout =
147147

148148
compile_request = HTTP.Request("GET", prefix)
149149
HTTP.setheader(compile_request, "Accept-Encoding" => "gzip")
150-
HTTP.handle(handler, compile_request) #For handler precompilation
150+
handle(handler, compile_request) #For handler precompilation
151151

152152
get_devsetting(app, :hot_reload) && start_reload_poll(state)
153153

test/callbacks.jl

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ using Dash
2121

2222
handler = make_handler(app)
2323
request = HTTP.Request("GET", "/_dash-dependencies")
24-
resp = HTTP.handle(handler, request)
24+
resp = Dash.HttpHelpers.handle(handler, request)
2525
deps = JSON3.read(String(resp.body))
2626
@test deps[1].prevent_initial_call == false
2727
@test deps[2].prevent_initial_call == false
@@ -43,7 +43,7 @@ using Dash
4343

4444
handler = make_handler(app)
4545
request = HTTP.Request("GET", "/_dash-dependencies")
46-
resp = HTTP.handle(handler, request)
46+
resp = Dash.HttpHelpers.handle(handler, request)
4747
deps = JSON3.read(String(resp.body))
4848
@test deps[1].prevent_initial_call == true
4949
@test deps[2].prevent_initial_call == false
@@ -65,7 +65,7 @@ using Dash
6565

6666
handler = make_handler(app)
6767
request = HTTP.Request("GET", "/_dash-dependencies")
68-
resp = HTTP.handle(handler, request)
68+
resp = Dash.HttpHelpers.handle(handler, request)
6969
deps = JSON3.read(String(resp.body))
7070
@test deps[1].prevent_initial_call == true
7171
@test deps[2].prevent_initial_call == true
@@ -87,7 +87,7 @@ using Dash
8787

8888
handler = make_handler(app)
8989
request = HTTP.Request("GET", "/_dash-dependencies")
90-
resp = HTTP.handle(handler, request)
90+
resp = Dash.HttpHelpers.handle(handler, request)
9191
deps = JSON3.read(String(resp.body))
9292
@test deps[1].prevent_initial_call == true
9393
@test deps[2].prevent_initial_call == false
@@ -110,7 +110,7 @@ end
110110

111111
handler = make_handler(app)
112112
request = HTTP.Request("GET", "/_dash-dependencies")
113-
resp = HTTP.handle(handler, request)
113+
resp = Dash.HttpHelpers.handle(handler, request)
114114
deps = JSON3.read(String(resp.body))
115115

116116
@test length(deps) == 1
@@ -124,7 +124,7 @@ end
124124
handler = Dash.make_handler(app)
125125
test_json = """{"output":"my-div.children","changedPropIds":["my-id.value"],"inputs":[{"id":"my-id","property":"value","value":"test"}]}"""
126126
request = HTTP.Request("POST", "/_dash-update-component", [], Vector{UInt8}(test_json))
127-
response = HTTP.handle(handler, request)
127+
response = Dash.HttpHelpers.handle(handler, request)
128128
@test response.status == 200
129129
resp_obj = JSON3.read(String(response.body))
130130
@test in(:multi, keys(resp_obj))
@@ -149,7 +149,7 @@ end
149149
handler = Dash.make_handler(app)
150150
test_json = """{"output":"..my-div.children...my-div2.children..","changedPropIds":["my-id.value"],"inputs":[{"id":"my-id","property":"value","value":"test"}], "state":[{"id":"my-id","property":"type","value":"state"}]}"""
151151
request = HTTP.Request("POST", "/_dash-update-component", [], Vector{UInt8}(test_json))
152-
response = HTTP.handle(handler, request)
152+
response = Dash.HttpHelpers.handle(handler, request)
153153
@test response.status == 200
154154
resp_obj = JSON3.read(String(response.body))
155155
@test in(:multi, keys(resp_obj))
@@ -172,7 +172,7 @@ end
172172
handler = Dash.make_handler(app)
173173
test_json = """{"output":"..my-div.children..","changedPropIds":["my-id.value"],"inputs":[{"id":"my-id","property":"value","value":"test"}], "state":[{"id":"my-id","property":"type","value":"state"}]}"""
174174
request = HTTP.Request("POST", "/_dash-update-component", [], Vector{UInt8}(test_json))
175-
response = HTTP.handle(handler, request)
175+
response = Dash.HttpHelpers.handle(handler, request)
176176
@test response.status == 200
177177
resp_obj = JSON3.read(String(response.body))
178178
@test in(:multi, keys(resp_obj))
@@ -350,7 +350,7 @@ end
350350
)
351351
test_json = JSON3.write(request)
352352
request = HTTP.Request("POST", "/_dash-update-component", [], Vector{UInt8}(test_json))
353-
response = HTTP.handle(handler, request)
353+
response = Dash.HttpHelpers.handle(handler, request)
354354

355355
@test response.status == 200
356356

@@ -389,7 +389,7 @@ end
389389
)
390390
test_json = JSON3.write(request)
391391
request = HTTP.Request("POST", "/_dash-update-component", [], Vector{UInt8}(test_json))
392-
response = HTTP.handle(handler, request)
392+
response = Dash.HttpHelpers.handle(handler, request)
393393

394394
@test response.status == 200
395395
resp_obj = JSON3.read(String(response.body))
@@ -441,7 +441,7 @@ end
441441
)
442442
test_json = JSON3.write(request)
443443
request = HTTP.Request("POST", "/_dash-update-component", [], Vector{UInt8}(test_json))
444-
response = HTTP.handle(handler, request)
444+
response = Dash.HttpHelpers.handle(handler, request)
445445
@test response.status == 200
446446
s = String(response.body)
447447
resp_obj = JSON3.read(s)
@@ -494,7 +494,7 @@ end
494494
)
495495
test_json = JSON3.write(request)
496496
request = HTTP.Request("POST", "/_dash-update-component", [], Vector{UInt8}(test_json))
497-
response = HTTP.handle(handler, request)
497+
response = Dash.HttpHelpers.handle(handler, request)
498498
@test response.status == 200
499499
resp_obj = JSON3.read(String(response.body))
500500
@test in(:multi, keys(resp_obj))
@@ -597,7 +597,7 @@ end
597597

598598
handler = make_handler(app)
599599
request = HTTP.Request("GET", "/_dash-dependencies")
600-
resp = HTTP.handle(handler, request)
600+
resp = Dash.HttpHelpers.handle(handler, request)
601601
deps = JSON3.read(String(resp.body))
602602

603603
@test length(deps) == 1
@@ -640,7 +640,7 @@ end
640640

641641
handler = make_handler(app)
642642
request = HTTP.Request("GET", "/_dash-dependencies")
643-
resp = HTTP.handle(handler, request)
643+
resp = Dash.HttpHelpers.handle(handler, request)
644644
deps = JSON3.read(String(resp.body))
645645

646646
@test length(deps) == 1
@@ -652,7 +652,7 @@ end
652652
@test cb.clientside_function.namespace == "_dashprivate_my-div"
653653
@test cb.clientside_function.function_name == "children"
654654
request = HTTP.Request("GET", "/")
655-
resp = HTTP.handle(handler, request)
655+
resp = Dash.HttpHelpers.handle(handler, request)
656656
body = String(resp.body)
657657
@test occursin("clientside[\"_dashprivate_my-div\"]", body)
658658
@test occursin("ns[\"children\"]", body)

test/config_functional.jl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -81,55 +81,55 @@ end
8181
app.layout = html_div()
8282
handler = make_handler(app)
8383
request = HTTP.Request("GET", "/assets/test.png")
84-
res = HTTP.handle(handler, request)
84+
res = Dash.HttpHelpers.handle(handler, request)
8585
@test res.status == 200
8686
request = HTTP.Request("GET", "/assets/test3.png")
87-
res = HTTP.handle(handler, request)
87+
res = Dash.HttpHelpers.handle(handler, request)
8888
@test res.status == 404
8989
request = HTTP.Request("GET", "/images/test.png")
90-
res = HTTP.handle(handler, request)
90+
res = Dash.HttpHelpers.handle(handler, request)
9191
@test startswith(HTTP.header(res, "Content-Type"), "text/html")
9292

9393
app = dash(url_base_pathname = "/test/")
9494
app.layout = html_div()
9595
handler = make_handler(app)
9696
request = HTTP.Request("GET", "/assets/test.png")
97-
res = HTTP.handle(handler, request)
97+
res = Dash.HttpHelpers.handle(handler, request)
9898
@test res.status == 404
9999
request = HTTP.Request("GET", "/test/assets/test.png")
100-
res = HTTP.handle(handler, request)
100+
res = Dash.HttpHelpers.handle(handler, request)
101101
@test res.status == 200
102102
request = HTTP.Request("GET", "/images/test.png")
103-
res = HTTP.handle(handler, request)
103+
res = Dash.HttpHelpers.handle(handler, request)
104104
@test res.status == 404
105105

106106
app = dash(assets_url_path = "ass")
107107
app.layout = html_div()
108108
handler = make_handler(app)
109109
request = HTTP.Request("GET", "/ass/test.png")
110-
res = HTTP.handle(handler, request)
110+
res = Dash.HttpHelpers.handle(handler, request)
111111
@test res.status == 200
112112
request = HTTP.Request("GET", "/ass/test3.png")
113-
res = HTTP.handle(handler, request)
113+
res = Dash.HttpHelpers.handle(handler, request)
114114
@test res.status == 404
115115
request = HTTP.Request("GET", "/assets/test3.png")
116-
res = HTTP.handle(handler, request)
116+
res = Dash.HttpHelpers.handle(handler, request)
117117
@test startswith(HTTP.header(res, "Content-Type"), "text/html")
118118
request = HTTP.Request("GET", "/images/test.png")
119-
res = HTTP.handle(handler, request)
119+
res = Dash.HttpHelpers.handle(handler, request)
120120
@test startswith(HTTP.header(res, "Content-Type"), "text/html")
121121

122122
app = dash(assets_folder = "images")
123123
app.layout = html_div()
124124
handler = make_handler(app)
125125
request = HTTP.Request("GET", "/assets/test.png")
126-
res = HTTP.handle(handler, request)
126+
res = Dash.HttpHelpers.handle(handler, request)
127127
@test res.status == 404
128128
request = HTTP.Request("GET", "/assets/test_images.png")
129-
res = HTTP.handle(handler, request)
129+
res = Dash.HttpHelpers.handle(handler, request)
130130
@test res.status == 200
131131
request = HTTP.Request("GET", "/images/test.png")
132-
res = HTTP.handle(handler, request)
132+
res = Dash.HttpHelpers.handle(handler, request)
133133
@test startswith(HTTP.header(res, "Content-Type"), "text/html")
134134
end
135135

0 commit comments

Comments
 (0)