public LoginResponse Logout(User userData)
        {
            ResponseDatastore<User> r = base.GetObject<User>(null, new Dictionary<string, string>(1) { { "username", userData.username } });
            if (r != null && r.HttpStatusCode == HttpStatusCode.OK && r.ResponseBody != null)
            {
                User u = r.ResponseBody;
                u.sessionToken = null;
            #warning TODO: can we make the expiration field nullable? or will parse not like a nullable date field?

            #warning will we be able to null out a token without a token?
                ResponseDatastore<ObjectUpdatedResponse> updateResponse = base.UpdateObject(u, null);

                LoginResponse lr = new LoginResponse
                {
                    ResponseValue = updateResponse?.ResponseBody != null,
                    ResponseMessage = updateResponse?.ResponseBody == null ? "Error logging out" : ""
                };
                return lr;
            }//if
            return new LoginResponse
            {
                ResponseMessage = "User does not exist",
                ResponseValue = false
            };
        }
        public LoginResponse Login(User userData)
        {
            try
            {
            #warning TODO:all responses should just use the generic ResponseDataStore<Type>
                RequestLogin rl = new RequestLogin
                {
                    username = userData.username,
                    password = userData.password
                };
                ResponseDatastore<User> response = base.GetResponse<User>(rl, null, DatastoreType.Login);

            #warning TODO:need to find out the response when login fails.
                LoginResponse lr = new LoginResponse
                {
                    User = response?.ResponseBody,
                    ResponseMessage = response?.ResponseBody == null ? "Login failed" : "",
                    ResponseValue = response?.ResponseBody != null
                };
                return lr;
            }//try
            catch (Exception ex)
            {
                ex.Data["User Login Data"] = userData.ToXml() + "";
                return new LoginResponse
                {
                    ResponseMessage = ex.GetBaseException().Message,
                    ResponseValue = false,
                    User = null,
                };
            }
        }