コード例 #1
0
        public async Task MakeUsersMe(DbUser u)
        {
            //Set basic values
            screen_name       = u.screen_name;
            profile_image_url = u.profile_image_url;
            id            = u.id;
            steam_id      = u.steam_id;
            user_settings = u.user_settings;

            //Convert servers
            servers = new List <UsersMeReply_Server>();
            List <string> clusterIds    = new List <string>();
            var           found_servers = await u.GetGameServersAsync(Program.connection);

            foreach (var id in found_servers)
            {
                //Get server by ID
                var converted = MakeServer(id.Item1, id.Item2, u);
                servers.Add(converted);
                if (converted.cluster_id != null && !clusterIds.Contains(converted.cluster_id))
                {
                    clusterIds.Add(converted.cluster_id);
                }
            }

            //Convert clusters
            clusters = new List <UsersMeReply_Cluster>();
            foreach (var c in clusterIds)
            {
                clusters.Add(new UsersMeReply_Cluster(await DbCluster.GetClusterById(Program.connection, MongoDB.Bson.ObjectId.Parse(c))));
            }
        }
コード例 #2
0
        public static async Task OnHttpRequest(Microsoft.AspNetCore.Http.HttpContext e, DbUser u)
        {
            //Set up our basic values
            UsersMeResponse response = new UsersMeResponse
            {
                screen_name       = u.screen_name,
                profile_image_url = u.profile_image_url,
                id            = u.id,
                steam_id      = u.steam_id,
                user_settings = u.user_settings,
                servers       = new List <UsersMeReply_Server>(),
                clusters      = new List <UsersMeReply_Cluster>()
            };

            //Fetch and convert our servers
            var servers = await u.GetGameServersAsync(Program.connection);

            List <string>   clusterIds = new List <string>();
            List <ObjectId> serverIds  = new List <ObjectId>();

            foreach (var s in servers)
            {
                //Add server
                serverIds.Add(s.Item1._id);

                //Get tribe info
                var tribe = await Program.connection.GetTribeByTribeIdAsync(s.Item1.id, s.Item2.tribe_id);

                //Get map info
                string mapName = null;
                var    mapData = await s.Item1.GetMapEntryAsync(Program.connection);

                if (mapData != null)
                {
                    mapName = mapData.displayName;
                }

                //Get closed reason, if any
                int close = -1;
                for (int i = 31; i >= 0; i--)
                {
                    if (s.Item1.CheckLockFlag(i))
                    {
                        close = i;
                    }
                }

                //Check pseudo flags
                if (mapData == null)
                {
                    close = 32; //MAP_NOT_SUPPORTED
                }
                //Create response
                UsersMeReply_Server sResponse = new UsersMeReply_Server
                {
                    display_name           = s.Item1.display_name,
                    image_url              = s.Item1.image_url,
                    owner_uid              = s.Item1.owner_uid,
                    cluster_id             = s.Item1.cluster_id,
                    id                     = s.Item1.id,
                    tribe_id               = s.Item2.tribe_id,
                    tribe_name             = tribe.tribe_name,
                    map_id                 = s.Item1.latest_server_map,
                    map_name               = mapName,
                    permissions            = s.Item1.GetPermissionFlagList(),
                    closed_reason          = close,
                    user_prefs             = await s.Item1.GetUserPrefs(Program.connection, u.id),
                    endpoint_createsession = Program.config.endpoint_echo + $"/{s.Item1.id}/" + "create_session"
                };

                //Add cluster if not added
                if (s.Item1.cluster_id != null && !clusterIds.Contains(s.Item1.cluster_id))
                {
                    clusterIds.Add(s.Item1.cluster_id);
                }

                //Add server
                response.servers.Add(sResponse);
            }

            //Add clusters
            foreach (var c in clusterIds)
            {
                //Get cluster data
                var cluster = await DbCluster.GetClusterById(Program.connection, MongoDB.Bson.ObjectId.Parse(c));

                //Add cluster data
                response.clusters.Add(new UsersMeReply_Cluster
                {
                    id   = cluster.id,
                    name = cluster.name
                });
            }

            //Get messages
            response.alerts = await(await u.GetAlertBanners(Program.connection, serverIds)).ToListAsync();

            //Write response
            await Program.QuickWriteJsonToDoc(e, response);
        }