From 59ce0053ac15f862e9571034cac28fd1063bef0e Mon Sep 17 00:00:00 2001 From: Aurélien LAJOIE Date: Wed, 18 Sep 2019 01:27:22 +0200 Subject: Catch error is the answer is not a valid json string This was triggered by a public wifi pushing an html file to all request --- weather-widget/weather.lua | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'weather-widget') diff --git a/weather-widget/weather.lua b/weather-widget/weather.lua index b0aa070..09eeeec 100644 --- a/weather-widget/weather.lua +++ b/weather-widget/weather.lua @@ -142,6 +142,15 @@ local function worker(args) return s end + local function error_display(resp_json) + local err_resp = json.decode(resp_json) + naughty.notify{ + title = 'Weather Widget Error', + text = err_resp.message, + preset = naughty.config.presets.critical, + } + end + weather_timer:connect_signal("timeout", function () local resp_json = {} local res, status = http.request{ @@ -164,12 +173,13 @@ local function worker(args) end if (status ~= 200 and resp_json ~= nil and resp_json ~= '') then - local err_resp = json.decode(resp_json) - naughty.notify{ - title = 'Weather Widget Error', - text = err_resp.message, - preset = naughty.config.presets.critical, - } + if (not pcall(error_display, resp_json)) then + naughty.notify{ + title = 'Weather Widget Error', + text = 'Cannot parse answer', + preset = naughty.config.presets.critical, + } + end elseif (resp_json ~= nil and resp_json ~= '') then resp = json.decode(resp_json) icon_widget.image = path_to_icons .. icon_map[resp.weather[1].icon] -- cgit v1.2.3