From a90c1e982a9d8f9f42076ac6a059384fe94adc7a Mon Sep 17 00:00:00 2001
From: Jonathan Harris <jonathan@marginal.org.uk>
Date: Sat, 23 Sep 2017 13:17:10 +0100
Subject: [PATCH] Fix 2.4 cAPI queries

---
 EDMarketConnector.py | 2 +-
 companion.py         | 7 ++++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/EDMarketConnector.py b/EDMarketConnector.py
index 31d6d9f3..9e4bd6ed 100755
--- a/EDMarketConnector.py
+++ b/EDMarketConnector.py
@@ -514,7 +514,7 @@ class AppWindow:
                             self.eddn.export_outfitting(data, monitor.is_beta)
                             if data['lastStarport'].get('ships'):
                                 self.eddn.export_shipyard(data, monitor.is_beta)
-                            elif data['lastStarport']['services'].get('shipyard'):
+                            elif data['lastStarport'].get('services', {}).get('shipyard'):
                                 # API is flakey about shipyard info - silently retry if missing (<1s is usually sufficient - 5s for margin).
                                 self.w.after(int(SERVER_RETRY * 1000), lambda:self.retry_for_shipyard(2))
                             if not old_status:
diff --git a/companion.py b/companion.py
index 61e89e53..f9098ade 100644
--- a/companion.py
+++ b/companion.py
@@ -245,15 +245,16 @@ class Session:
 
     def station(self):
         data = self.query(URL_QUERY)
-        if data.get('docked'):
-            if data['lastStarport']['services'].get('commodities'):
+        if data['commander'].get('docked'):
+            services = data['lastStarport'].get('services', {})
+            if services.get('commodities'):
                 marketdata = self.query(URL_MARKET)
                 if (data['lastStarport']['name'] != marketdata['name'] or
                     int(data['lastStarport']['id']) != int(marketdata['id'])):
                     raise ServerLagging()
                 else:
                     data['lastStarport'].update(marketdata)
-            if data['lastStarport']['services'].get('outfitting') or data['lastStarport']['services'].get('shipyard'):
+            if services.get('outfitting') or services.get('shipyard'):
                 shipdata = self.query(URL_SHIPYARD)
                 if (data['lastStarport']['name'] != shipdata['name'] or
                     int(data['lastStarport']['id']) != int(shipdata['id'])):