Blob Blame History Raw
From ed391df2f489df9428cad355e4973c52b77371bd Mon Sep 17 00:00:00 2001
From: Frank Dana <ferdnyc@gmail.com>
Date: Wed, 24 Aug 2016 19:19:00 -0700
Subject: [PATCH] Switch to new METAR data provider

NOAA shut down their METAR service, so we need to switch to their
recommended service, aviationweather.gov, for our data.

Backported to libgweather 3.14.1 by Kalev Lember <klember@redhat.com>.

https://bugzilla.gnome.org/show_bug.cgi?id=770321
---
 libgweather/weather-metar.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/libgweather/weather-metar.c b/libgweather/weather-metar.c
index d808e43..1722a76 100644
--- a/libgweather/weather-metar.c
+++ b/libgweather/weather-metar.c
@@ -581,7 +581,7 @@ metar_finish (SoupSession *session, SoupMessage *msg, gpointer data)
 
     loc = &priv->location;
 
-    searchkey = g_strdup_printf ("\n%s", loc->code);
+    searchkey = g_strdup_printf ("<raw_text>%s", loc->code);
     p = strstr (msg->response_body->data, searchkey);
     g_free (searchkey);
     if (p) {
@@ -593,8 +593,8 @@ metar_finish (SoupSession *session, SoupMessage *msg, gpointer data)
 	    metar = g_strdup (p);
 	success = metar_parse (metar, info);
 	g_free (metar);
-    } else if (!strstr (msg->response_body->data, "National Weather Service")) {
-	/* The response doesn't even seem to have come from NWS...
+    } else if (!strstr (msg->response_body->data, "aviationweather.gov")) {
+	/* The response doesn't even seem to have come from NOAA...
 	 * most likely it is a wifi hotspot login page. Call that a
 	 * network error.
 	 */
@@ -621,8 +621,14 @@ metar_start_open (GWeatherInfo *info)
     loc = &priv->location;
 
     msg = soup_form_request_new (
-	"GET", "http://weather.noaa.gov/cgi-bin/mgetmetar.pl",
-	"cccc", loc->code,
+	"GET", "https://www.aviationweather.gov/adds/dataserver_current/httpparam",
+	"dataSource", "metars",
+	"requestType", "retrieve",
+	"format", "xml",
+	"hoursBeforeNow", "3",
+	"mostRecent", "true",
+	"fields", "raw_text",
+	"stationString", loc->code,
 	NULL);
     _gweather_info_begin_request (info, msg);
     soup_session_queue_message (priv->session, msg, metar_finish, info);
-- 
2.7.4