|
|
@ -6,6 +6,9 @@ from boats_loader import BoatsLoader
|
|
|
|
import requests
|
|
|
|
import requests
|
|
|
|
|
|
|
|
|
|
|
|
class RestApiBoatsLoader(BoatsLoader):
|
|
|
|
class RestApiBoatsLoader(BoatsLoader):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Allows to load Boats from https://localisation.flotteoceanographique.fr/api/v2/vessels
|
|
|
|
|
|
|
|
"""
|
|
|
|
def __init__(self):
|
|
|
|
def __init__(self):
|
|
|
|
self.url = 'https://localisation.flotteoceanographique.fr/api/v2/vessels'
|
|
|
|
self.url = 'https://localisation.flotteoceanographique.fr/api/v2/vessels'
|
|
|
|
self.search_begin = '-01-01T00:00:00.000Z'
|
|
|
|
self.search_begin = '-01-01T00:00:00.000Z'
|
|
|
@ -13,6 +16,9 @@ class RestApiBoatsLoader(BoatsLoader):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_boats(self, year: int):
|
|
|
|
def load_boats(self, year: int):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Create and return Boats with Loaded data fom flotteoceanographique.fr
|
|
|
|
|
|
|
|
"""
|
|
|
|
raw_data = self.load_from_url(self.url)
|
|
|
|
raw_data = self.load_from_url(self.url)
|
|
|
|
boats = []
|
|
|
|
boats = []
|
|
|
|
for boat in raw_data.json():
|
|
|
|
for boat in raw_data.json():
|
|
|
@ -20,7 +26,12 @@ class RestApiBoatsLoader(BoatsLoader):
|
|
|
|
tmp_boat = Boat(boat['id'], boat['name'], boat['sismerId'], boat['url'], boat['avatar'], boat_data['temp'], boat_data['pos'])
|
|
|
|
tmp_boat = Boat(boat['id'], boat['name'], boat['sismerId'], boat['url'], boat['avatar'], boat_data['temp'], boat_data['pos'])
|
|
|
|
boats.append(tmp_boat)
|
|
|
|
boats.append(tmp_boat)
|
|
|
|
return boats
|
|
|
|
return boats
|
|
|
|
|
|
|
|
|
|
|
|
def _load_boat_data(self, boat_id: str, year: int):
|
|
|
|
def _load_boat_data(self, boat_id: str, year: int):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Collects all positions and sea temperatues send by <boat_id> in <year>.
|
|
|
|
|
|
|
|
Return a Dictionary with 2 keys: 'pos' and 'temp'
|
|
|
|
|
|
|
|
"""
|
|
|
|
json_data = self.load_from_url(self.url + f"/{boat_id}/positions?startDate={year}{self.search_begin}&endDate={year}{self.search_end}").json()
|
|
|
|
json_data = self.load_from_url(self.url + f"/{boat_id}/positions?startDate={year}{self.search_begin}&endDate={year}{self.search_end}").json()
|
|
|
|
data = {}
|
|
|
|
data = {}
|
|
|
|
data['pos'] = []
|
|
|
|
data['pos'] = []
|
|
|
@ -35,6 +46,9 @@ class RestApiBoatsLoader(BoatsLoader):
|
|
|
|
return data
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
def load_from_url(self, url: str):
|
|
|
|
def load_from_url(self, url: str):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Send a GET request to <url> and convert result in Response (see requests module)
|
|
|
|
|
|
|
|
"""
|
|
|
|
data = requests.get(url)
|
|
|
|
data = requests.get(url)
|
|
|
|
if(data.status_code != 200):
|
|
|
|
if(data.status_code != 200):
|
|
|
|
raise custom_exception.HttpException(f"Error {data.status_code}")
|
|
|
|
raise custom_exception.HttpException(f"Error {data.status_code}")
|
|
|
|