Files
Hippolyzer/hippolyzer/lib/proxy/asset_uploader.py
2023-12-22 04:38:30 +00:00

40 lines
1.5 KiB
Python

from hippolyzer.lib.base.datatypes import UUID
from hippolyzer.lib.base.inventory import InventoryItem
from hippolyzer.lib.base.message.message import Message, Block
from hippolyzer.lib.base.network.transport import Direction
from hippolyzer.lib.client.asset_uploader import AssetUploader
class ProxyAssetUploader(AssetUploader):
async def _handle_upload_complete(self, resp_payload: dict):
# Check if this a failure response first, raising if it is
await super()._handle_upload_complete(resp_payload)
# Fetch enough data from AIS to tell the viewer about the new inventory item
session = self._region.session()
item_id = resp_payload["new_inventory_item"]
ais_req_data = {
"items": [
{
"owner_id": session.agent_id,
"item_id": item_id,
}
]
}
async with self._region.caps_client.post('FetchInventory2', llsd=ais_req_data) as resp:
ais_item = InventoryItem.from_llsd((await resp.read_llsd())["items"][0], flavor="ais")
# Got it, ship it off to the viewer
message = Message(
"UpdateCreateInventoryItem",
Block(
"AgentData",
AgentID=session.agent_id,
SimApproved=1,
TransactionID=UUID.random(),
),
ais_item.to_inventory_data(),
direction=Direction.IN
)
self._region.circuit.send(message)