mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:46:02 +08:00
add a low level LLSDxml encoder for cases where it makes no sense to use more heavy things like OSD, and use it on displaynames
This commit is contained in:
@@ -1824,52 +1824,51 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
|
||||
Dictionary<UUID,string> names = m_UserManager.GetUsersNames(ids);
|
||||
|
||||
OSDMap osdReply = new OSDMap();
|
||||
OSDArray agents = new OSDArray();
|
||||
|
||||
osdReply["agents"] = agents;
|
||||
foreach (KeyValuePair<UUID,string> kvp in names)
|
||||
StringBuilder lsl = new StringBuilder(names.Count * 256 + 256);
|
||||
LLSDxmlEncode.AddStartHeader(lsl);
|
||||
LLSDxmlEncode.AddStartMap(lsl);
|
||||
if(names.Count == 0)
|
||||
LLSDxmlEncode.AddEmpyArray("agents", lsl);
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(kvp.Value))
|
||||
continue;
|
||||
if(kvp.Key == UUID.Zero)
|
||||
continue;
|
||||
LLSDxmlEncode.AddStartArray("agents", lsl);
|
||||
|
||||
string[] parts = kvp.Value.Split(new char[] {' '});
|
||||
OSDMap osdname = new OSDMap();
|
||||
foreach (KeyValuePair<UUID,string> kvp in names)
|
||||
{
|
||||
if (string.IsNullOrEmpty(kvp.Value))
|
||||
continue;
|
||||
if(kvp.Key == UUID.Zero)
|
||||
continue;
|
||||
|
||||
string[] parts = kvp.Value.Split(new char[] {' '});
|
||||
|
||||
// dont tell about unknown users, we can't send them back on Bad either
|
||||
if(parts[0] == "Unknown")
|
||||
continue;
|
||||
/*
|
||||
if(parts[0] == "Unknown")
|
||||
{
|
||||
osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddHours(1));
|
||||
osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddHours(2));
|
||||
}
|
||||
else
|
||||
*/
|
||||
{
|
||||
osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddDays(8));
|
||||
osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddMonths(1));
|
||||
}
|
||||
osdname["display_name"] = OSD.FromString(kvp.Value);
|
||||
osdname["legacy_first_name"] = parts[0];
|
||||
osdname["legacy_last_name"] = parts[1];
|
||||
osdname["username"] = OSD.FromString(kvp.Value);
|
||||
osdname["id"] = OSD.FromUUID(kvp.Key);
|
||||
osdname["is_display_name_default"] = OSD.FromBoolean(true);
|
||||
if(parts[0] == "Unknown")
|
||||
continue;
|
||||
|
||||
agents.Add(osdname);
|
||||
LLSDxmlEncode.AddStartMap(lsl);
|
||||
LLSDxmlEncode.AddElem("display_name_next_update", DateTime.UtcNow.AddDays(8), lsl);
|
||||
LLSDxmlEncode.AddElem("display_name_expires", DateTime.UtcNow.AddMonths(1), lsl);
|
||||
LLSDxmlEncode.AddElem("display_name", kvp.Value, lsl);
|
||||
LLSDxmlEncode.AddElem("legacy_first_name", parts[0], lsl);
|
||||
LLSDxmlEncode.AddElem("legacy_last_name", parts[1], lsl);
|
||||
LLSDxmlEncode.AddElem("username", kvp.Value, lsl);
|
||||
LLSDxmlEncode.AddElem("id", kvp.Key, lsl);
|
||||
LLSDxmlEncode.AddElem("is_display_name_default", true, lsl);
|
||||
LLSDxmlEncode.AddEndMap(lsl);
|
||||
}
|
||||
LLSDxmlEncode.AddEndArray(lsl);
|
||||
}
|
||||
|
||||
LLSDxmlEncode.AddEndMap(lsl);
|
||||
LLSDxmlEncode.AddEndHeader(lsl);
|
||||
|
||||
// Full content request
|
||||
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.OK;
|
||||
//httpResponse.ContentLength = ??;
|
||||
httpResponse.ContentType = "application/llsd+xml";
|
||||
|
||||
string reply = OSDParser.SerializeLLSDXmlString(osdReply);
|
||||
return reply;
|
||||
return lsl.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user