Skip to content

Commit 5b5b932

Browse files
ghyatzojuliohm
andauthored
way less spammy errors on bad requests. (#60)
* way less spammy errors on bad requests. * fix: better catch logic fix: added tests * invert range Co-authored-by: Júlio Hoffimann <[email protected]> * Minor adjustments --------- Co-authored-by: Júlio Hoffimann <[email protected]>
1 parent 4b933de commit 5b5b932

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

src/CDSAPI.jl

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,28 @@ function retrieve(name, params, filename; wait=1.0)
2222
end
2323
end
2424

25-
response = HTTP.request("POST",
26-
creds["url"] * "/retrieve/v1/processes/$name/execute",
27-
["PRIVATE-TOKEN" => creds["key"]],
28-
body=JSON.json(Dict("inputs" => params))
29-
)
25+
try
26+
response = HTTP.request("POST",
27+
creds["url"] * "/retrieve/v1/processes/$name/execute",
28+
["PRIVATE-TOKEN" => creds["key"]],
29+
body=JSON.json(Dict("inputs" => params))
30+
)
31+
catch e
32+
if e isa HTTP.StatusError
33+
if e.status == 404
34+
throw(ArgumentError("""
35+
The requested dataset $name was not found.
36+
"""))
37+
elseif 400 e.status < 500
38+
throw(ArgumentError("""
39+
The request is in a bad format:
40+
$params
41+
"""))
42+
end
43+
end
44+
throw(e)
45+
end
46+
3047
body = JSON.parse(String(response.body))
3148
data = Dict("status" => "queued")
3249

test/retrieve.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,17 @@
6565
rm(filepath)
6666
rm(ewq_file)
6767
end
68+
69+
@testset "Bad requests errors are catched" begin
70+
goodname = "reanalysis-era5-single-levels"
71+
badname = "bad-dataset"
72+
badrequest = """{
73+
"this": "is",
74+
"a": "bad",
75+
"re": ["quest"]
76+
}"""
77+
78+
@test_throws ArgumentError CDSAPI.retrieve(goodname, badrequest, "unreachable")
79+
@test_throws ArgumentError CDSAPI.retrieve(badname, badrequest, "unreachable")
80+
end
6881
end

0 commit comments

Comments
 (0)