<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def order_book(self, selling_asset_code, buying_asset_code, selling_asset_issuer=None, buying_asset_issuer=None, limit=10):
 """Return, for each orderbook, a summary of the orderbook and the bids and asks associated with that orderbook. See the external docs below for information on the arguments required. `GET /order_book <https://www.stellar.org/developers/horizon/reference/endpoints/orderbook-details.html>`_ :param str selling_asset_code: Code of the Asset being sold. :param str buying_asset_code: Type of the Asset being bought. :param str selling_asset_issuer: Account ID of the issuer of the Asset being sold, if it is a native asset, let it be `None`. :param str buying_asset_issuer: Account ID of the issuer of the Asset being bought, if it is a native asset, let it be `None`. :param int limit: Limit the number of items returned. :return: A list of orderbook summaries as a JSON object. :rtype: dict """

        selling_asset = Asset(selling_asset_code, selling_asset_issuer)
        buying_asset = Asset(buying_asset_code, buying_asset_issuer)
        asset_params = {
            'selling_asset_type': selling_asset.type,
            'selling_asset_code': None if selling_asset.is_native() else selling_asset.code,
            'selling_asset_issuer': selling_asset.issuer,
            'buying_asset_type': buying_asset.type,
            'buying_asset_code': None if buying_asset.is_native() else buying_asset.code,
            'buying_asset_issuer': buying_asset.issuer,
        }
        endpoint = '/order_book'
        params = self.__query_params(limit=limit, **asset_params)
        return self.query(endpoint, params)