2828MAX_COUNT = 100 # Max records the API will return for one call
2929MAX_RETRY = 10
3030
31+ MAX_LOOKBACK_YEARS = 5 # We'll request event records newer than this
32+ OFFSET_SECONDS = MAX_LOOKBACK_YEARS * 365 * 86400
33+
34+
3135# Get the API key
3236try :
3337 from secrets_dict import SHELTERLUV_SECRET_TOKEN
4347 logger .error ("Couldn't get SHELTERLUV_SECRET_TOKEN from file or environment" )
4448
4549
46- TEST_MODE = os .getenv ("TEST_MODE" ) # if not present, has value None
50+ TEST_MODE = os .getenv ("TEST_MODE" ) # if not present, has value None
4751
4852headers = {"Accept" : "application/json" , "X-API-Key" : SHELTERLUV_SECRET_TOKEN }
4953
7579# }
7680
7781
78- def get_event_count ():
82+ def get_event_count (query_from ):
7983 """Test that server is operational and get total event count."""
80- events = "v1/events?offset=0&limit=1"
84+
85+ logger .debug ("Querying for events from last %d years, since %d" , MAX_LOOKBACK_YEARS , query_from )
86+ events = "v1/events?offset=0&limit=1&since=" + str (query_from )
8187 URL = path .join (BASE_URL , events )
8288 logger .info ("making call: %s" , URL )
8389
@@ -104,7 +110,7 @@ def get_event_count():
104110 return - 5 # AFAICT, this means URL was bad
105111
106112
107- def get_events_bulk ():
113+ def get_events_bulk (query_from ):
108114 """Pull all event records from SL """
109115
110116 # Interesting API design - event record 0 is the newest. But since we pull all records each time it doesn't
@@ -114,7 +120,7 @@ def get_events_bulk():
114120
115121 event_records = []
116122
117- raw_url = path .join (BASE_URL , "v1/events?offset={0}&limit={1}" )
123+ raw_url = path .join (BASE_URL , "v1/events?offset={0}&limit={1}&since={2} " )
118124 offset = 0
119125 limit = MAX_COUNT
120126 more_records = True
@@ -124,12 +130,12 @@ def get_events_bulk():
124130
125131 if retries > MAX_RETRY :
126132 raise Exception ("get_events_bulk failed, max retries reached" )
127- url = raw_url .format (offset , limit )
133+ url = raw_url .format (offset , limit , query_from )
128134
129135 try :
130136 response = requests .request ("GET" , url , headers = headers )
131137 except Exception as e :
132- logger .error ("get_events_buk failed with %s, retrying..." , e )
138+ logger .error ("get_events_bulk failed with %s, retrying..." , e )
133139 retries += 1
134140 continue
135141
@@ -165,10 +171,12 @@ def get_events_bulk():
165171
166172
167173def slae_test ():
168- total_count = get_event_count ()
174+
175+ query_from = int (time .mktime (time .localtime ()) - OFFSET_SECONDS )
176+ total_count = get_event_count (query_from )
169177 logger .debug ("Total events: %d" , total_count )
170178
171- b = get_events_bulk ()
179+ b = get_events_bulk (query_from )
172180 logger .debug ("Stored records: %d" , len (b ))
173181
174182 # f = filter_events(b)
@@ -177,11 +185,15 @@ def slae_test():
177185 count = shelterluv_db .insert_events (b )
178186 return count
179187
188+
180189def store_all_animals_and_events ():
181- total_count = get_event_count ()
190+
191+ query_from = int (time .mktime (time .localtime ()) - OFFSET_SECONDS )
192+
193+ total_count = get_event_count (query_from )
182194 logger .debug ("Total events: %d" , total_count )
183195
184- b = get_events_bulk ()
196+ b = get_events_bulk (query_from )
185197 logger .debug ("Stored records: %d" , len (b ))
186198
187199 # f = filter_events(b)
0 commit comments