private void NewFileAgentInventoryVariablePriceUploadHandler(NewFileAgentInventoryVariablePriceMessage message, Capability cap,
IHttpClientContext context, IHttpRequest request, IHttpResponse response)
{
byte[] assetData = request.GetBody();
UUID assetID = UUID.Zero;
LLInventoryItem item = null;
m_log.Debug("Received inventory asset upload from " + cap.OwnerID + " (" + assetData.Length + " bytes)");
if (assetData != null && assetData.Length > 0)
{
string contentType = LLUtil.LLAssetTypeToContentType((int)message.AssetType);
// Create the asset
if (m_assetClient.StoreAsset(contentType, false, false, assetData, cap.OwnerID, out assetID))
{
// Create the inventory item
item = new LLInventoryItem();
item.AssetID = assetID;
item.ContentType = contentType;
item.CreationDate = DateTime.UtcNow;
item.CreatorID = cap.OwnerID;
item.Description = message.Description;
item.ID = UUID.Random();
item.Name = message.Name;
item.OwnerID = cap.OwnerID;
item.ParentID = message.FolderID;
Permissions perms = (m_permissions != null) ? m_permissions.GetDefaultPermissions() : Permissions.FullPermissions;
perms.EveryoneMask = message.EveryoneMask;
perms.GroupMask = message.GroupMask;
perms.NextOwnerMask = message.NextOwnerMask;
item.Permissions = perms;
item.SalePrice = 10;
item.SaleType = SaleType.Not;
if (!m_inventoryClient.TryCreateItem(cap.OwnerID, item))
m_log.Warn("Failed to create inventory item for uploaded asset " + assetID);
}
else
{
m_log.WarnFormat("Failed to store uploaded inventory asset ({0} bytes)", assetData.Length);
}
}
else
{
m_log.Warn("Inventory asset upload contained no data");
}
// Build the response message
NewFileAgentInventoryUploadReplyMessage reply = new NewFileAgentInventoryUploadReplyMessage();
reply.NewAsset = assetID;
if (item != null)
{
reply.NewInventoryItem = item.ID;
reply.NewBaseMask = item.Permissions.BaseMask;
reply.NewEveryoneMask = item.Permissions.EveryoneMask;
reply.NewNextOwnerMask = item.Permissions.NextOwnerMask;
reply.NewOwnerMask = item.Permissions.OwnerMask;
}
LLUtil.SendLLSDXMLResponse(response, reply.Serialize());
}