public void Should_update_users_status()
        {
            var url = string.Format("https://{0}/v2", EndpointHost);

            var client = new RestClient(url);
            var request = new RestRequest("/user/" + RestSharp.Contrib.HttpUtility.UrlEncode(Email), Method.PUT);
            request.AddQueryParameter("auth_token", Token);

            var user = new HipChatUser()
            {
                name = "",
                email = Email,
                presence = new Presence()
                {
                    status = "blah",
                    show = "away"
                },
                mention_name = ""
            };

            request.AddJsonBody(user);

            request.RequestFormat = DataFormat.Json;
            request.AddHeader("Content-type", "application/json");
            request.AddHeader("Accept", "application/json");
            var response = client.Execute(request);
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
        }
예제 #2
0
        public bool UpdateUserStatus(string token, HipChatUser user)
        {
            if (user == null || user.presence == null || string.IsNullOrWhiteSpace(user.name)
                || string.IsNullOrWhiteSpace(user.email) || string.IsNullOrWhiteSpace(user.mention_name))
            {
                throw new ArgumentException("user");
            }

            var encodedEmail = RestSharp.Contrib.HttpUtility.UrlEncode(user.email);
            var resourceUrl = string.Format("user/{0}", encodedEmail);

            var client = new RestClient(EndpointHost);
            var request = new RestRequest(resourceUrl, Method.PUT);
            request.AddQueryParameter("auth_token", token);

            request.AddJsonBody(user);

            request.RequestFormat = DataFormat.Json;
            request.AddHeader("Content-type", "application/json");
            request.AddHeader("Accept", "application/json");

            IRestResponse response;
            try
            {
                response = client.Execute(request);
            }
            catch (Exception)
            {
                return false;
            }

            if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
            {
                return true;
            }

            return false;
        }