From 96fe25f4c461805e7f999f6143f0c530aa00aa05 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 14 2021 04:14:12 +0000 Subject: import libgweather-3.28.2-4.el8 --- diff --git a/SOURCES/0001-GWeatherWeather-Always-set-a-user-agent-when-doing-q.patch b/SOURCES/0001-GWeatherWeather-Always-set-a-user-agent-when-doing-q.patch new file mode 100644 index 0000000..8fa98f0 --- /dev/null +++ b/SOURCES/0001-GWeatherWeather-Always-set-a-user-agent-when-doing-q.patch @@ -0,0 +1,41 @@ +From 42c4136039af5bfb4cb0d351131994ea57577d7f Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 26 Aug 2019 14:55:12 +0300 +Subject: [PATCH 1/7] GWeatherWeather: Always set a user-agent when doing + queries + +This should fix IWIN queries not working (403) because it didn't +appreciate the lack of user-agent. +--- + libgweather/gweather-weather.c | 2 ++ + meson.build | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/libgweather/gweather-weather.c b/libgweather/gweather-weather.c +index 571a3e0b..62543169 100644 +--- a/libgweather/gweather-weather.c ++++ b/libgweather/gweather-weather.c +@@ -595,6 +595,8 @@ ref_session (void) + return g_object_ref (session); + + session = soup_session_new (); ++ g_object_set (G_OBJECT (session), SOUP_SESSION_USER_AGENT, ++ "libgweather/" LIBGWEATHER_VERSION " (+https://gitlab.gnome.org/GNOME/libgweather/) ", NULL); + + cache = get_cache (); + if (cache != NULL) { +diff --git a/meson.build b/meson.build +index 67261ad6..43490631 100644 +--- a/meson.build ++++ b/meson.build +@@ -56,6 +56,7 @@ config_h.set_quoted('LOCALEDIR', join_paths(datadir, 'locale')) + config_h.set_quoted('GNOMELOCALEDIR', join_paths(datadir, 'locale')) + config_h.set_quoted('G_LOG_DOMAIN', 'GWeather') + config_h.set_quoted('GWEATHER_XML_LOCATION_DIR', pkgdatadir) ++config_h.set_quoted('LIBGWEATHER_VERSION', meson.project_version()) + + if c_compiler.has_member('struct tm', 'tm_gmtoff', prefix: '#include ') + config_h.set('HAVE_TM_TM_GMOFF', 1) +-- +2.30.2 + diff --git a/SOURCES/0002-yrno-Link-to-met.no-using-HTTPS.patch b/SOURCES/0002-yrno-Link-to-met.no-using-HTTPS.patch new file mode 100644 index 0000000..05444a5 --- /dev/null +++ b/SOURCES/0002-yrno-Link-to-met.no-using-HTTPS.patch @@ -0,0 +1,25 @@ +From 3f2f1fd8ee361798dbe4e677978a40b748749b1d Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 26 Aug 2019 15:01:05 +0300 +Subject: [PATCH 2/7] yrno: Link to met.no using HTTPS + +--- + libgweather/weather-yrno.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c +index 39803b4e..d01075bf 100644 +--- a/libgweather/weather-yrno.c ++++ b/libgweather/weather-yrno.c +@@ -504,7 +504,7 @@ parse_forecast_xml_new (GWeatherInfo *master_info, + + That's very nice of them! + */ +- priv->forecast_attribution = g_strdup(_("Weather data from the Norwegian Meteorological Institute")); ++ priv->forecast_attribution = g_strdup(_("Weather data from the Norwegian Meteorological Institute")); + + out: + xmlXPathFreeContext (xpath_ctx); +-- +2.30.2 + diff --git a/SOURCES/0003-metno-Use-compat-2.0-API.patch b/SOURCES/0003-metno-Use-compat-2.0-API.patch new file mode 100644 index 0000000..5b5224d --- /dev/null +++ b/SOURCES/0003-metno-Use-compat-2.0-API.patch @@ -0,0 +1,44 @@ +From 3df75414d865829274ddc64d30ada98ca08fba3b Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Thu, 7 Jan 2021 15:14:40 +0100 +Subject: [PATCH 3/7] metno: Use compat 2.0 API + +Version 1.9, which we were using, was deprecated and will be removed soon, +so migrate to the compat XML output of the v2.0 API. + +Closes: #65 +--- + libgweather/weather-yrno.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c +index d01075bf..7a46fbae 100644 +--- a/libgweather/weather-yrno.c ++++ b/libgweather/weather-yrno.c +@@ -37,7 +37,7 @@ + + #define XC(t) ((const xmlChar *)(t)) + +-/* Reference for symbols at http://om.yr.no/forklaring/symbol/ */ ++/* Reference for symbols at https://api.met.no/weatherapi/weathericon/2.0/ */ + typedef struct { + int code; + GWeatherSky sky; +@@ -589,12 +589,12 @@ yrno_start_open_new (GWeatherInfo *info) + if (!loc->latlon_valid) + return FALSE; + +- /* see the description here: https://api.met.no/ */ ++ /* see the description here: https://api.met.no/weatherapi/locationforecast/2.0/documentation */ + + g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude)); + g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude)); + +- url = g_strdup_printf("https://api.met.no/weatherapi/locationforecast/1.9/?lat=%s;lon=%s", latstr, lonstr); ++ url = g_strdup_printf("https://api.met.no/weatherapi/locationforecast/2.0/classic?lat=%s;lon=%s", latstr, lonstr); + + message = soup_message_new ("GET", url); + _gweather_info_begin_request (info, message); +-- +2.30.2 + diff --git a/SOURCES/0004-metno-Use-GNOME-specific-subdomain.patch b/SOURCES/0004-metno-Use-GNOME-specific-subdomain.patch new file mode 100644 index 0000000..6160b45 --- /dev/null +++ b/SOURCES/0004-metno-Use-GNOME-specific-subdomain.patch @@ -0,0 +1,36 @@ +From d304e911d09d52b763f2c11a4309d170d0597a86 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Tue, 12 Jan 2021 14:21:21 +0100 +Subject: [PATCH 4/7] metno: Use GNOME-specific subdomain + +This allows the API provider to track libgweather usage. +--- + libgweather/weather-yrno.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c +index 7a46fbae..13ee8537 100644 +--- a/libgweather/weather-yrno.c ++++ b/libgweather/weather-yrno.c +@@ -37,6 +37,9 @@ + + #define XC(t) ((const xmlChar *)(t)) + ++/* As per https://gitlab.gnome.org/GNOME/libgweather/-/issues/59#note_1004747 */ ++#define API_ENDPOINT_DOMAIN "aa037rv1tsaszxi6o.api.met.no" ++ + /* Reference for symbols at https://api.met.no/weatherapi/weathericon/2.0/ */ + typedef struct { + int code; +@@ -594,7 +597,7 @@ yrno_start_open_new (GWeatherInfo *info) + g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude)); + g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude)); + +- url = g_strdup_printf("https://api.met.no/weatherapi/locationforecast/2.0/classic?lat=%s;lon=%s", latstr, lonstr); ++ url = g_strdup_printf("https://" API_ENDPOINT_DOMAIN "/weatherapi/locationforecast/2.0/classic?lat=%s;lon=%s", latstr, lonstr); + + message = soup_message_new ("GET", url); + _gweather_info_begin_request (info, message); +-- +2.30.2 + diff --git a/SOURCES/0005-metno-Use-as-arguments-separator-in-query.patch b/SOURCES/0005-metno-Use-as-arguments-separator-in-query.patch new file mode 100644 index 0000000..7db52f7 --- /dev/null +++ b/SOURCES/0005-metno-Use-as-arguments-separator-in-query.patch @@ -0,0 +1,30 @@ +From 1e3706da2a737e78c879847d31c55226c990b338 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Tue, 12 Jan 2021 14:22:28 +0100 +Subject: [PATCH 5/7] metno: Use "&" as arguments separator in query + +According to the HTML5 spec ";" is no longer allowed. This was +automatically rewritten in Varnish, but was temporary measure +and was likely to disappear if on cache/load balancer change. + +Closes: #72 +--- + libgweather/weather-yrno.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c +index 13ee8537..e5c2e75a 100644 +--- a/libgweather/weather-yrno.c ++++ b/libgweather/weather-yrno.c +@@ -597,7 +597,7 @@ yrno_start_open_new (GWeatherInfo *info) + g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude)); + g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude)); + +- url = g_strdup_printf("https://" API_ENDPOINT_DOMAIN "/weatherapi/locationforecast/2.0/classic?lat=%s;lon=%s", latstr, lonstr); ++ url = g_strdup_printf("https://" API_ENDPOINT_DOMAIN "/weatherapi/locationforecast/2.0/classic?lat=%s&lon=%s", latstr, lonstr); + + message = soup_message_new ("GET", url); + _gweather_info_begin_request (info, message); +-- +2.30.2 + diff --git a/SOURCES/0006-metno-Use-alphabetical-2.0-symbol-codes.patch b/SOURCES/0006-metno-Use-alphabetical-2.0-symbol-codes.patch new file mode 100644 index 0000000..9a99795 --- /dev/null +++ b/SOURCES/0006-metno-Use-alphabetical-2.0-symbol-codes.patch @@ -0,0 +1,162 @@ +From 2305ae3d973355b632777dbe969efea91c4e7339 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 21 Jan 2021 05:12:21 +0100 +Subject: [PATCH 6/7] metno: Use alphabetical 2.0 symbol codes + +The numerical codes are deprecated and scheduled for removal, so +replace them with the non-deprecated alphabetical codes as listed +in https://api.met.no/weatherapi/weathericon/2.0/. + +https://gitlab.gnome.org/GNOME/libgweather/-/issues/67 +--- + libgweather/weather-yrno.c | 113 ++++++++++++++++++------------------- + 1 file changed, 55 insertions(+), 58 deletions(-) + +diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c +index e5c2e75a..f32c772a 100644 +--- a/libgweather/weather-yrno.c ++++ b/libgweather/weather-yrno.c +@@ -42,53 +42,53 @@ + + /* Reference for symbols at https://api.met.no/weatherapi/weathericon/2.0/ */ + typedef struct { +- int code; ++ const char *code; + GWeatherSky sky; + GWeatherConditions condition; + } YrnoSymbol; + + static YrnoSymbol symbols[] = { +- { 1, GWEATHER_SKY_CLEAR, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* Sun */ +- { 2, GWEATHER_SKY_BROKEN, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* LightCloud */ +- { 3, GWEATHER_SKY_SCATTERED, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* PartlyCloudy */ +- { 4, GWEATHER_SKY_OVERCAST, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* Cloudy */ +- { 5, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_LIGHT } }, /* LightRainSun */ +- { 6, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* LightRainThunderSun */ +- { 7, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_NONE } }, /* SleetSun */ +- { 8, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_NONE } }, /* SnowSun */ +- { 9, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_LIGHT } }, /* SnowSun */ +- { 10, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_NONE } }, /* Rain */ +- { 11, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* RainThunder */ +- { 12, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_NONE } }, /* Sleet */ +- { 13, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_NONE } }, /* Snow */ +- { 14, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SnowThunder */ +- { 15, GWEATHER_SKY_CLEAR, { TRUE, GWEATHER_PHENOMENON_FOG, GWEATHER_QUALIFIER_NONE } }, /* Fog */ +- { 20, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SleetSunThunder */ +- { 21, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SnowSunThunder */ +- { 22, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* LightRainThunder */ +- { 23, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SleetThunder */ +- { 24, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* DrizzleThunderSun */ +- { 25, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* RainThunderSun */ +- { 26, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetThunderSun */ +- { 27, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetThunderSun */ +- { 28, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowThunderSun */ +- { 29, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowThunderSun */ +- { 30, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* DrizzleThunder */ +- { 31, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetThunder */ +- { 32, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetThunder */ +- { 33, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowThunder */ +- { 34, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowThunder */ +- { 40, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_NONE } }, /* DrizzleSun */ +- { 41, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_NONE } }, /* RainSun */ +- { 42, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetSun */ +- { 43, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetSun */ +- { 44, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowSun */ +- { 45, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowSun */ +- { 46, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_NONE } }, /* Drizzle */ +- { 47, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleet */ +- { 48, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleet */ +- { 49, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnow */ +- { 50, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } } /* HeavySnow */ ++ { "clearsky", GWEATHER_SKY_CLEAR, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* Sun */ ++ { "fair", GWEATHER_SKY_BROKEN, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* LightCloud */ ++ { "partlycloudy", GWEATHER_SKY_SCATTERED, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* PartlyCloudy */ ++ { "cloudy", GWEATHER_SKY_OVERCAST, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* Cloudy */ ++ { "rainshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_LIGHT } }, /* LightRainSun */ ++ { "rainshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* LightRainThunderSun */ ++ { "sleetshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_NONE } }, /* SleetSun */ ++ { "snowshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_NONE } }, /* SnowSun */ ++ { "rain", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_LIGHT } }, /* SnowSun */ ++ { "heavyrain", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_NONE } }, /* Rain */ ++ { "heavyrainandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* RainThunder */ ++ { "sleet", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_NONE } }, /* Sleet */ ++ { "snow", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_NONE } }, /* Snow */ ++ { "snowandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SnowThunder */ ++ { "fog", GWEATHER_SKY_CLEAR, { TRUE, GWEATHER_PHENOMENON_FOG, GWEATHER_QUALIFIER_NONE } }, /* Fog */ ++ { "sleetshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SleetSunThunder */ ++ { "snowshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SnowSunThunder */ ++ { "rainandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* LightRainThunder */ ++ { "sleetandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SleetThunder */ ++ { "lightrainshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* DrizzleThunderSun */ ++ { "heavyrainshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* RainThunderSun */ ++ { "lightssleetshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetThunderSun */ ++ { "heavysleetshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetThunderSun */ ++ { "lightssnowshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowThunderSun */ ++ { "heavysnowshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowThunderSun */ ++ { "lightrainandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* DrizzleThunder */ ++ { "lightsleetandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetThunder */ ++ { "heavysleetandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetThunder */ ++ { "lightsnowandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowThunder */ ++ { "heavysnowandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowThunder */ ++ { "lightrainshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_NONE } }, /* DrizzleSun */ ++ { "heavyrainshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_NONE } }, /* RainSun */ ++ { "lightsleetshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetSun */ ++ { "heavysleetshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetSun */ ++ { "lightsnowshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowSun */ ++ { "heavysnowshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowSun */ ++ { "lightrain", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_NONE } }, /* Drizzle */ ++ { "lightsleet", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleet */ ++ { "heavysleet", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleet */ ++ { "lightsnow", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnow */ ++ { "heavysnow", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } } /* HeavySnow */ + }; + + static struct { +@@ -149,21 +149,18 @@ date_to_time_t (const xmlChar *str, const char * tzid) + } + + static YrnoSymbol * +-symbol_search (int code) ++symbol_search (const char *code) + { +- int a = 0; +- int b = G_N_ELEMENTS (symbols); +- +- while (a < b) { +- int c = (a + b)/2; +- YrnoSymbol *yc = symbols + c; +- +- if (yc->code == code) +- return yc; +- if (yc->code < code) +- a = c+1; +- else +- b = c; ++ unsigned int i; ++ ++ for (i = 0; i < G_N_ELEMENTS (symbols); i++) { ++ YrnoSymbol *s = symbols + i; ++ ++ if (strcmp (code, s->code) == 0) ++ return s; ++ ++ if (strstr (code, s->code) == code && code[strlen (s->code)] == '_') ++ return s; + } + + return NULL; +@@ -177,9 +174,9 @@ read_symbol (GWeatherInfo *info, + YrnoSymbol* symbol; + GWeatherInfoPrivate *priv = info->priv; + +- val = xmlGetProp (node, XC("number")); ++ val = xmlGetProp (node, XC("code")); + +- symbol = symbol_search (strtol ((char*) val, NULL, 0)); ++ symbol = symbol_search ((char *)val); + if (symbol != NULL) { + priv->valid = TRUE; + priv->sky = symbol->sky; +-- +2.30.2 + diff --git a/SOURCES/0007-weather-add-app-ID-to-HTTP-user-agent.patch b/SOURCES/0007-weather-add-app-ID-to-HTTP-user-agent.patch new file mode 100644 index 0000000..1e23b6a --- /dev/null +++ b/SOURCES/0007-weather-add-app-ID-to-HTTP-user-agent.patch @@ -0,0 +1,66 @@ +From 9e04624edff61f381365485565477f5302a2b93e Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Fri, 19 Mar 2021 15:45:52 -0500 +Subject: [PATCH 7/7] weather: add app ID to HTTP user agent + +met.no has requested we add the app ID even if we cannot provide +application contact info. See #82. +--- + libgweather/gweather-weather.c | 34 ++++++++++++++++++++++++++++++++-- + 1 file changed, 32 insertions(+), 2 deletions(-) + +diff --git a/libgweather/gweather-weather.c b/libgweather/gweather-weather.c +index 62543169..f81aa7e2 100644 +--- a/libgweather/gweather-weather.c ++++ b/libgweather/gweather-weather.c +@@ -583,6 +583,37 @@ dump_and_unref_cache (SoupCache *cache) + + static SoupSession *static_session; + ++static const char * ++app_id (void) ++{ ++ GApplication *app = g_application_get_default (); ++ const char *id; ++ ++ if (app) { ++ id = g_application_get_application_id (app); ++ if (id) ++ return id; ++ } ++ ++ return g_get_prgname (); ++} ++ ++static char * ++compute_user_agent (void) ++{ ++ return g_strdup_printf ("libgweather/%s (+https://gitlab.gnome.org/GNOME/libgweather/) (%s) ", LIBGWEATHER_VERSION, app_id ()); ++} ++ ++static const char * ++user_agent (void) ++{ ++ static GOnce once = G_ONCE_INIT; ++ ++ g_once (&once, compute_user_agent, NULL); ++ ++ return once.retval; ++} ++ + static SoupSession * + ref_session (void) + { +@@ -595,8 +626,7 @@ ref_session (void) + return g_object_ref (session); + + session = soup_session_new (); +- g_object_set (G_OBJECT (session), SOUP_SESSION_USER_AGENT, +- "libgweather/" LIBGWEATHER_VERSION " (+https://gitlab.gnome.org/GNOME/libgweather/) ", NULL); ++ g_object_set (G_OBJECT (session), SOUP_SESSION_USER_AGENT, user_agent (), NULL); + + cache = get_cache (); + if (cache != NULL) { +-- +2.30.2 + diff --git a/SPECS/libgweather.spec b/SPECS/libgweather.spec index b0e6a97..bb3fb21 100644 --- a/SPECS/libgweather.spec +++ b/SPECS/libgweather.spec @@ -1,6 +1,6 @@ Name: libgweather Version: 3.28.2 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A library for weather information License: GPLv2+ @@ -9,6 +9,15 @@ Source0: https://download.gnome.org/sources/libgweather/3.28/%{name}-%{ve # https://bugzilla.redhat.com/show_bug.cgi?id=1853151 Patch0: libgweather-3.28.2-fix-enum-types-multilib.patch +# https://gitlab.gnome.org/GNOME/libgweather/-/issues/82 +Patch1: 0001-GWeatherWeather-Always-set-a-user-agent-when-doing-q.patch +Patch2: 0002-yrno-Link-to-met.no-using-HTTPS.patch +Patch3: 0003-metno-Use-compat-2.0-API.patch +Patch4: 0004-metno-Use-GNOME-specific-subdomain.patch +Patch5: 0005-metno-Use-as-arguments-separator-in-query.patch +Patch6: 0006-metno-Use-alphabetical-2.0-symbol-codes.patch +Patch7: 0007-weather-add-app-ID-to-HTTP-user-agent.patch + BuildRequires: gettext BuildRequires: gtk-doc BuildRequires: meson @@ -72,6 +81,9 @@ developing applications that use %{name}. %{_datadir}/vala/vapi/gweather-3.0.vapi %changelog +* Tue Apr 27 2021 David King - 3.28.2-4 +- Fix no weather data available (#1942202) + * Wed Oct 07 2020 David King - 3.28.2-3 - Fix multilib conflict in enum header (#1853151)