Example #1
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonTransferConfig config = new AmazonTransferConfig();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonTransferClient client = new AmazonTransferClient(creds, config);

            ListServersResponse resp = new ListServersResponse();

            do
            {
                ListServersRequest req = new ListServersRequest
                {
                    NextToken = resp.NextToken
                    ,
                    MaxResults = maxItems
                };

                resp = client.ListServers(req);
                CheckError(resp.HttpStatusCode, "200");

                foreach (var obj in resp.Servers)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextToken));
        }
Example #2
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            ListServersResponse response = new ListServersResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("NextToken", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.NextToken = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("Servers", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <ListedServer, ListedServerUnmarshaller>(ListedServerUnmarshaller.Instance);
                    response.Servers = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
        protected override void ProcessValidResponse(Envelope env)
        {
            ListServersResponse        m         = (ListServersResponse)env.Message;
            ConcurrentBag <IPEndPoint> endpoints = new ConcurrentBag <IPEndPoint>();

            SLRM.Servers.Clear();
            foreach (Server s in m.Servers)
            {
                SLRM.Add(s.ChatServerEndpoint, s);
            }
            RegisteredServerManager MyRST = RegisteredServerManager.GetInstance();

            MyRST.Update(endpoints);
            Console.WriteLine("Received Chat Server Endpoints");
        }
        public ListServersResponse ListServers()
        {
            try
            {
                if (DateTime.UtcNow - _lastRefresh > TimeSpan.FromSeconds(1) ||
                    _lastServerList == null)
                {
                    _lastServerList = _stateService.ListServers(HttpContext.Request.Host.Host);
                    _lastRefresh    = DateTime.UtcNow;
                }

                return(_lastServerList);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
                return(new ListServersResponse(generalErrorMessage));
            }
        }
Example #5
0
        protected override void ExecuteDetails(object context)
        {
            Message incomingMessage       = (ListServersRequest)context;
            RegisteredServerManager MyRST = RegisteredServerManager.GetInstance();

            List <Server> servers = new List <Server>();

            foreach (KeyValuePair <string, Tuple <Server, long> > kpv in SLRM.Servers)
            {
                servers.Add(kpv.Value.Item1);
            }

            var response = new ListServersResponse(servers);
            var envelope = new Envelope()
            {
                Message = response, EndPoint = RemoteEndPoint
            };

            if (!Send(envelope))
            {
                Error = "Cannot send back response.";
            }
        }
Example #6
0
        public ListServersResponse ListServers(string host)
        {
            StateResponse stateResponse   = RequestState();
            var           serversResponse = new ListServersResponse
            {
                Servers = stateResponse.Servers.Where(s => !s.IsPrivate).Select(s => new Server()
                {
                    Port           = s.Port,
                    IsStarted      = s.IsStarted,
                    CommandLine    = GetCommandLine(s, host),
                    GameType       = s.GameType,
                    Mod            = s.Mod.FriendlyName,
                    CurrentPlayers = s.CurrentPlayers,
                    MaximumPlayers = s.MaximumPlayers,
                    Players        = s.Players.Select(p => new Player()
                    {
                        Name = p.Name, Score = p.Score
                    }).ToList(),
                    SpawnedAtUtc = s.SpawnedAtUtc
                }).OrderBy(s => s.MaximumPlayers).ToList()
            };

            return(serversResponse);
        }
Example #7
0
        public void TestMessageGettersSetters()
        {
            // Test Message constructor

            // Setup
            Message m1 = new SendMessageRequest("my group id", "Hello World", "Me");
            Message m2 = new SendMessageRequest("my group id", "Hello World", "Me");

            // Tests
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(SendMessageRequest)));
            Assert.AreNotEqual(m1.MessageId, m2.MessageId);

            // Setup
            Server s = new Server();

            s.ChatServerEndpoint = new IPEndPoint(IPAddress.Parse("1.1.1.1"), 49);
            s.Hostname           = "TestHostName";
            s.ActiveUsers        = 14;
            Message m3 = new RegisterServerRequest(s);
            Message m4 = new RegisterServerRequest(s);

            // Tests
            Assert.IsNotNull(m3.Server);
            Assert.IsNotNull(m4.Server);
            Assert.AreEqual(m3.Server.Hostname, m4.Server.Hostname);
            Assert.AreEqual(m3.Server.ChatServerEndpoint, m4.Server.ChatServerEndpoint);
            Assert.AreEqual(m3.Server.ActiveUsers, m4.Server.ActiveUsers);
            Assert.AreEqual(m3.MessageType, m4.MessageType);
            Assert.AreNotEqual(m3.MessageId, m4.MessageId);

            // Setup
            List <Tuple <string, UserKey> > k = new List <Tuple <string, UserKey> >();

            k.Add(new Tuple <string, UserKey>("508", new UserKey("Bob", "BobsKey")));
            k.Add(new Tuple <string, UserKey>("509", new UserKey("Joe", "JoesKey")));
            Message m5 = new PublicKeysResponse(k);

            // Tests
            Assert.IsNotNull(m5.Keys);
            Assert.AreEqual(m5.Keys[0].Item2.Username, "Bob");
            Assert.AreEqual(m5.Keys[1].Item2.Username, "Joe");
            Assert.AreEqual(m5.Keys[0].Item2.Publickey, "BobsKey");
            Assert.AreEqual(m5.Keys[1].Item2.Publickey, "JoesKey");

            // Setup
            m1         = new RegisterKeyRequest("Bob", new UserKey("Bob", "BobsKey"));
            m1.UserKey = new UserKey("NotBob", "NotBobsKey");

            // Tests
            Assert.AreEqual(m1.UserKey.Username, "NotBob");
            Assert.AreEqual(m1.UserKey.Publickey, "NotBobsKey");

            // Setup
            m1                 = new Acknowledge(ResponseCodes.SUCCESS, "You win!");
            m1.Code            = ResponseCodes.FAIL;
            m1.ResponseMessage = "You lose!";

            // Tests
            Assert.AreEqual(m1.Code, ResponseCodes.FAIL);
            Assert.AreEqual(m1.ResponseMessage, "You lose!");

            // Setup
            List <string> users = new List <string>();

            users.Add("Billy");
            users.Add("Joe");
            users.Add("Bob");
            m1 = new PublicKeysRequest(users);

            // Tests
            Assert.IsNotNull(m1.Users);
            Assert.AreEqual(m1.Users[0], "Billy");
            Assert.AreEqual(m1.Users[1], "Joe");
            Assert.AreEqual(m1.Users[2], "Bob");
            m1.Users.RemoveAt(0);
            Assert.AreEqual(m1.Users[0], "Joe");
            Assert.AreEqual(m1.Users[1], "Bob");

            // Setup
            m1 = new HeartBeat(300);

            // Tests
            Assert.AreEqual(m1.KeepAlive, 300);
            m1.KeepAlive = 600;
            Assert.AreEqual(m1.KeepAlive, 600);

            // Setup
            m1 = new NewMessagesRequest("MyId", "Last message ID");

            // Tests
            Assert.AreEqual(m1.LastMessage, "Last message ID");
            m1.LastMessage = "";
            Assert.AreEqual(m1.LastMessage, "");

            // Setup
            List <EncryptedMessage> list = new List <EncryptedMessage>();
            EncryptedMessage        cm1  = new EncryptedMessage();

            cm1.MessageId = "message id 1";
            cm1.SenderId  = "Bob";
            cm1.Timestamp = 101010101010;
            cm1.PlainText = "Dead men tell no tales";
            cm1.GroupId   = "My special group";
            list.Add(cm1);
            m1 = new NewMessagesResponse(list);

            // Tests
            Assert.AreEqual(m1.Messages[0].SenderId, "Bob");
            Assert.AreEqual(m1.Messages[0].MessageId, "message id 1");
            Assert.AreEqual(m1.Messages[0].Timestamp, 101010101010);
            Assert.AreEqual(m1.Messages[0].PlainText, "Dead men tell no tales");
            Assert.AreEqual(m1.Messages[0].GroupId, "My special group");
            m1.Messages[0].SenderId  = "Joe";
            m1.Messages[0].MessageId = "message id 2";
            m1.Messages[0].Timestamp = 10101;
            m1.Messages[0].PlainText = "Tell tales, dead men do not";
            m1.Messages[0].GroupId   = "My not as special group";
            Assert.AreEqual(m1.Messages[0].SenderId, "Joe");
            Assert.AreEqual(m1.Messages[0].MessageId, "message id 2");
            Assert.AreEqual(m1.Messages[0].Timestamp, 10101);
            Assert.AreEqual(m1.Messages[0].PlainText, "Tell tales, dead men do not");
            Assert.AreEqual(m1.Messages[0].GroupId, "My not as special group");

            // Setup
            Server s1 = new Server();

            s1.ChatServerEndpoint = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 12345);
            s1.ActiveUsers        = 38;
            List <Server> l1 = new List <Server>();

            l1.Add(s1);
            m1 = new ListServersResponse(l1);

            // Tests
            Assert.AreEqual(m1.Servers[0].ChatServerEndpoint.ToString(), "192.168.0.1:12345");
            Assert.AreEqual(m1.Servers[0].ActiveUsers, 38);
            m1.Servers[0].ActiveUsers = 43;
            Assert.AreEqual(m1.Servers[0].ActiveUsers, 43);
        }
Example #8
0
        public void TestMessageSerializations()
        {
            // Test Serialization

            // Setup
            Message expected = new SendMessageRequest("my group id", "Hello World", "Me");
            string  jsontext = expected.JSON();
            Message m        = MessageFromJSONFactory.GetMessage(jsontext);

            // Tests
            Trace.WriteLine(m.MessageId);
            Trace.WriteLine(expected.MessageId);
            Assert.IsNotNull(jsontext);
            Assert.IsNotNull(m);
            Assert.IsNotNull(expected);
            Assert.AreEqual(m.MessageId, expected.MessageId);

            // Setup
            Message m1 = new RegisterServerRequest(new Server());
            Message m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.IsNotNull(m1.Server);
            Assert.IsNotNull(m2.Server);
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(RegisterServerRequest)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(RegisterServerRequest)));

            // Setup
            List <Tuple <string, UserKey> > keys = new List <Tuple <string, UserKey> >();

            keys.Add(new Tuple <string, UserKey>("1", new UserKey("Bob", "BobsKey")));
            keys.Add(new Tuple <string, UserKey>("2", new UserKey("Joe", "JoesKey")));
            m1 = new PublicKeysResponse(keys);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m2.Keys[0].Item2.Publickey, "BobsKey");
            Assert.AreEqual(m2.Keys[1].Item2.Publickey, "JoesKey");
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(PublicKeysResponse)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(PublicKeysResponse)));

            // Setup
            m1 = new RegisterKeyRequest("1", new UserKey("Bob", "BobsKey"));
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());
            Assert.AreEqual(m1.UserKey.Username, m2.UserKey.Username);
            Assert.AreEqual(m1.UserKey.Publickey, m2.UserKey.Publickey);
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.MessageType, m2.MessageType);

            // Setup
            m1 = new Acknowledge(ResponseCodes.SUCCESS, "You win!");
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.Code, ResponseCodes.SUCCESS);
            Assert.AreEqual(m1.ResponseMessage, "You win!");

            // Setup
            List <string> users = new List <string>();

            users.Add("Billy");
            users.Add("Joe");
            users.Add("Bob");
            m1 = new PublicKeysRequest(users);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(PublicKeysRequest)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(PublicKeysRequest)));
            Assert.AreEqual(m1.Users[0], m2.Users[0]);
            Assert.AreEqual(m1.Users[1], m2.Users[1]);
            Assert.AreEqual(m1.Users[2], m2.Users[2]);
            Assert.AreEqual(m1.Users.Count, 3);
            Assert.AreEqual(m1.Users.Count, m2.Users.Count);

            // Setup
            m1 = new HeartBeat(300);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.KeepAlive, 300);
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(HeartBeat)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(HeartBeat)));
            Assert.AreEqual(m1.MessageId, m2.MessageId);

            // Setup
            m1 = new NewMessagesRequest("MyId", "Last message ID");
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.LastMessage, m2.LastMessage);
            Assert.AreEqual(m2.LastMessage, "Last message ID");
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(NewMessagesRequest)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(NewMessagesRequest)));

            // Setup
            List <EncryptedMessage> list = new List <EncryptedMessage>();
            EncryptedMessage        cm1  = new EncryptedMessage();

            cm1.MessageId = "message id 1";
            cm1.SenderId  = "Bob";
            cm1.Timestamp = 101010101010;
            cm1.PlainText = "Dead men tell no tales";
            cm1.GroupId   = "My special group";
            list.Add(cm1);
            m1 = new NewMessagesResponse(list);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(NewMessagesResponse)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(NewMessagesResponse)));
            Assert.AreEqual(m1.Messages[0].MessageId, m2.Messages[0].MessageId);
            Assert.AreEqual(m1.Messages[0].Timestamp, m2.Messages[0].Timestamp);
            Assert.AreEqual(m1.Messages[0].GroupId, m2.Messages[0].GroupId);
            Assert.AreEqual(m1.Messages[0].SenderId, m2.Messages[0].SenderId);
            Assert.IsNull(m2.Messages[0].PlainText); // Make sure message isn't passed in plain text

            // Setup
            Server s1 = new Server();

            s1.ChatServerEndpoint = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 12345);
            s1.ActiveUsers        = 38;
            List <Server> l1 = new List <Server>();

            l1.Add(s1);
            m1 = new ListServersResponse(l1);
            m2 = MessageFromJSONFactory.GetMessage(m1.JSON());

            // Tests
            Assert.AreEqual(m1.MessageType, MessageTypes.ToInt(typeof(ListServersResponse)));
            Assert.AreEqual(m2.MessageType, MessageTypes.ToInt(typeof(ListServersResponse)));
            Assert.AreEqual(m1.MessageId, m2.MessageId);
            Assert.AreEqual(m1.Servers[0].ChatServerEndpoint, m2.Servers[0].ChatServerEndpoint);
            Assert.AreEqual(m1.Servers[0].ChatServerEndpoint, m2.Servers[0].ChatServerEndpoint);
            Assert.AreEqual(m2.Servers[0].ChatServerEndpoint.ToString(), "192.168.0.1:12345");
            Assert.AreEqual(m1.Servers[0].ActiveUsers, m2.Servers[0].ActiveUsers);
            Assert.AreEqual(m2.Servers[0].ActiveUsers, 38);
        }