<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def buy_limit_order(self, amount, price):
 """Place a buy order at the given limit price. :param amount: Amount of major currency to buy at limit price. :type amount: int | float | str | unicode | decimal.Decimal :param price: Limit price. :type price: int | float | str | unicode | decimal.Decimal :return: Order details. :rtype: dict """

        amount = str(amount)
        price = str(price)
        self._log("buy {} {} at limit price of {} {}".format(
            amount, self.major, price, self.minor
        ))
        return self._rest_client.post(
            endpoint='/buy',
            payload={'book': self.name, 'amount': amount, 'price': price}
        )