Skip to content

Commit

Permalink
extract latest timestamp from feed entries
Browse files Browse the repository at this point in the history
  • Loading branch information
exxamalte committed Oct 26, 2018
1 parent cd0279e commit fb0ab74
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 2 deletions.
9 changes: 8 additions & 1 deletion geojson_client/__init__.py
Expand Up @@ -28,6 +28,7 @@ def __init__(self, home_coordinates, url, filter_radius=None):
self._filter_radius = filter_radius
self._url = url
self._request = requests.Request(method="GET", url=url).prepare()
self._last_timestamp = None

def __repr__(self):
"""Return string representation of this feed."""
Expand All @@ -50,7 +51,9 @@ def update(self):
for feature in data.features:
entries.append(self._new_entry(self._home_coordinates,
feature, global_data))
return UPDATE_OK, self._filter_entries(entries)
filtered_entries = self._filter_entries(entries)
self._last_timestamp = self._extract_last_timestamp(filtered_entries)
return UPDATE_OK, filtered_entries
else:
# Should not happen.
return UPDATE_OK, None
Expand Down Expand Up @@ -103,6 +106,10 @@ def _extract_from_feed(self, feed):
"""Extract global metadata from feed."""
return None

def _extract_last_timestamp(self, feed_entries):
"""Determine latest (newest) entry from the filtered feed."""
return None


class FeedEntry:
"""Feed entry base class."""
Expand Down
3 changes: 2 additions & 1 deletion geojson_client/feed_manager.py
Expand Up @@ -14,14 +14,15 @@ class FeedManagerBase:
"""Generic Feed manager."""

def __init__(self, feed, generate_callback, update_callback,
remove_callback):
remove_callback, persistent_timestamp=False):
"""Initialise feed manager."""
self._feed = feed
self.feed_entries = {}
self._managed_external_ids = set()
self._generate_callback = generate_callback
self._update_callback = update_callback
self._remove_callback = remove_callback
self._persistent_timestamp = persistent_timestamp

def __repr__(self):
"""Return string representation of this feed."""
Expand Down
8 changes: 8 additions & 0 deletions geojson_client/nsw_rural_fire_service_feed.py
Expand Up @@ -80,6 +80,14 @@ def _filter_entries(self, entries):
entries))
return entries

def _extract_last_timestamp(self, feed_entries):
"""Determine latest (newest) entry from the filtered feed."""
if feed_entries:
dates = sorted([entry.publication_date for entry in feed_entries],
reverse=True)
return dates[0]
return None


class NswRuralFireServiceFeedEntry(FeedEntry):
"""NSW Rural Fire Service feed entry."""
Expand Down
8 changes: 8 additions & 0 deletions geojson_client/usgs_earthquake_hazards_program_feed.py
Expand Up @@ -100,6 +100,14 @@ def _filter_entries(self, entries):
_filter_minimum_magnitude, entries))
return entries

def _extract_last_timestamp(self, feed_entries):
"""Determine latest (newest) entry from the filtered feed."""
if feed_entries:
dates = sorted([entry.updated for entry in feed_entries],
reverse=True)
return dates[0]
return None

def _extract_from_feed(self, feed):
"""Extract global metadata from feed."""
global_data = {}
Expand Down

0 comments on commit fb0ab74

Please sign in to comment.