class PredictionManager:
    def __init__(self):
        self.filesaver = FileSaver()

    def predict_and_save(self, ts, alt, long, lat, file_name):
        # request prediction of flight
        prediction = self.make_request(ts, HOURS_AHEAD_TO_PREDICT, alt, long, lat)
        # save prediction to file.
        self.filesaver.save_file(file_name, prediction.content)

    @staticmethod
    def gen_filename(file_str_prefix):
        file_time = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
        file_name = '{0}_{1}.json'.format(file_str_prefix, file_time)
        return file_name

    def make_request(self, start_time: datetime, hours_ahead: int, current_alt, current_long, current_lat):
        params = {
            "launch_latitude": current_lat,
            "launch_longitude": current_long % 360,  # convert from [-180,180] to [0,360]
            "launch_altitude": current_alt - 1,
            "launch_datetime": start_time.astimezone().isoformat() + "Z",
            "ascent_rate": 0.8,
            "float_altitude": current_alt,
            "stop_datetime": (start_time + timedelta(hours=hours_ahead)).astimezone().isoformat(),
            "profile": "float_profile"

        }
        return requests.get(BASE_URL, params=params)
Пример #2
0
    def test_file_saving(self):
        Fs = FileSaver()
        res = Fs.save_file("test.json", b"abc")

        path = pl.Path("data_dump/test.json")
        self.assertIsFile(path)