import requests

session = requests.Session()

class Pump:
    url = "http://demo.ivoryos.ai/ivoryos/api/control/deck.pump"
    def dose_liquid(self, amount_in_ml: float, rate_ml_per_minute: float = 1):
        """dose liquid"""
        return session.post(self.url, data={"hidden_name": "dose_liquid", "amount_in_ml": amount_in_ml, "rate_ml_per_minute": rate_ml_per_minute}).json()


class Sdl:
    url = "http://demo.ivoryos.ai/ivoryos/api/control/deck.sdl"
    def analyze(self):
        return session.post(self.url, data={"hidden_name": "analyze"}).json()

    def dose_solid(self, amount_in_mg: float = 5, solid_name: str = 'Acetaminophen'):
        """dose current chemical"""
        return session.post(self.url, data={"hidden_name": "dose_solid", "amount_in_mg": amount_in_mg, "solid_name": solid_name}).json()

    def dose_solvent(self, solvent_name: str = 'Methanol', amount_in_ml: float = 5, rate_ml_per_minute: float = 1):
        return session.post(self.url, data={"hidden_name": "dose_solvent", "solvent_name": solvent_name, "amount_in_ml": amount_in_ml, "rate_ml_per_minute": rate_ml_per_minute}).json()

    def equilibrate(self, temp: float, duration: float):
        return session.post(self.url, data={"hidden_name": "equilibrate", "temp": temp, "duration": duration}).json()

    def simulate_error(self):
        return session.post(self.url, data={"hidden_name": "simulate_error"}).json()


class Balance:
    url = "http://demo.ivoryos.ai/ivoryos/api/control/deck.balance"
    def dose_solid(self, amount_in_mg: float):
        """this function is used to dose solid"""
        return session.post(self.url, data={"hidden_name": "dose_solid", "amount_in_mg": amount_in_mg}).json()

    def weigh_sample(self):
        return session.post(self.url, data={"hidden_name": "weigh_sample"}).json()


pump = Pump()
sdl = Sdl()
balance = Balance()
