Aurora.Services.WebAPIHandler.GetGroups C# (CSharp) 메소드

GetGroups() 개인적인 메소드

private GetGroups ( OSDMap map, UUID requestingAgentID ) : OSDMap
map OSDMap
requestingAgentID UUID
리턴 OSDMap
        private OSDMap GetGroups(OSDMap map, UUID requestingAgentID)
        {
            OSDMap resp = new OSDMap();
            uint start = map.ContainsKey("Start") ? map["Start"].AsUInteger() : 0;
            resp["Start"] = start;
            resp["Total"] = 0;

            IGroupsServiceConnector groups = Aurora.DataManager.DataManager.RequestPlugin<IGroupsServiceConnector>();
            OSDArray Groups = new OSDArray();
            if (groups != null)
            {
                if (!map.ContainsKey("GroupIDs"))
                {
                    Dictionary<string, bool> sort = new Dictionary<string, bool>();
                    Dictionary<string, bool> boolFields = new Dictionary<string, bool>();

                    if (map.ContainsKey("Sort") && map["Sort"].Type == OSDType.Map)
                    {
                        OSDMap fields = (OSDMap)map["Sort"];
                        foreach (string field in fields.Keys)
                        {
                            sort[field] = int.Parse(fields[field]) != 0;
                        }
                    }
                    if (map.ContainsKey("BoolFields") && map["BoolFields"].Type == OSDType.Map)
                    {
                        OSDMap fields = (OSDMap)map["BoolFields"];
                        foreach (string field in fields.Keys)
                        {
                            boolFields[field] = int.Parse(fields[field]) != 0;
                        }
                    }
                    List<GroupRecord> reply = groups.GetGroupRecords(
                        requestingAgentID,
                        start,
                        map.ContainsKey("Count") ? map["Count"].AsUInteger() : 10,
                        sort,
                        boolFields
                    );
                    if (reply.Count > 0)
                    {
                        foreach (GroupRecord groupReply in reply)
                        {
                            Groups.Add(GroupRecord2OSDMap(groupReply));
                        }
                    }
                    resp["Total"] = groups.GetNumberOfGroups(requestingAgentID, boolFields);
                }
                else
                {
                    OSDArray groupIDs = (OSDArray)map["Groups"];
                    List<UUID> GroupIDs = new List<UUID>();
                    foreach (string groupID in groupIDs)
                    {
                        UUID foo;
                        if (UUID.TryParse(groupID, out foo))
                        {
                            GroupIDs.Add(foo);
                        }
                    }
                    if (GroupIDs.Count > 0)
                    {
                        List<GroupRecord> reply = groups.GetGroupRecords(requestingAgentID, GroupIDs);
                        if (reply.Count > 0)
                        {
                            foreach (GroupRecord groupReply in reply)
                            {
                                Groups.Add(GroupRecord2OSDMap(groupReply));
                            }
                        }
                        resp["Total"] = Groups.Count;
                    }
                }
            }

            resp["Groups"] = Groups;
            return resp;
        }