Beispiel #1
0
        /// <summary>
        /// Signs a user up for Scribd.  Doing so will log the
        /// current user profile out and replace it with this one.
        /// </summary>
        /// <param name="userName">Username to associate with your Scribd account</param>
        /// <param name="password">Password to associate with your Scribd account</param>
        /// <param name="email">Your email address</param>
        /// <param name="name">Your real name</param>
        /// <returns>True on success</returns>
        public static bool Signup(string userName, string password, string email, string name)
        {
            UserEventArgs _args = new UserEventArgs();

            if (BeforeSignUp != null)
            {
                _args.Success       = false;
                _args.User.UserName = userName;
                _args.User.Name     = name;
            }

            if (!_args.Cancel)
            {
                using (Request _request = new Request())
                {
                    _request.MethodName = "user.signup";
                    _request.Parameters.Add("username", userName);
                    _request.Parameters.Add("password", password);
                    _request.Parameters.Add("email", email);
                    _request.Parameters.Add("name", name);

                    User cachedUser = Service.Instance.InternalUser;
                    Service.Instance.InternalUser = null;

                    using (Response _response = Service.Instance.PostRequest(_request))
                    {
                        Service.Instance.InternalUser = cachedUser;

                        // Parse response
                        User _result = new User();
                        if (_response != null && _response.HasChildNodes && _response.ErrorList.Count < 1)
                        {
                            XmlNodeList _list = _response.GetElementsByTagName("rsp");
                            if (_list.Count > 0)
                            {
                                foreach (XmlNode _node in _list)
                                {
                                    _result.Name         = _node.SelectSingleNode("name").InnerText.Trim();
                                    _result.SessionKey   = _node.SelectSingleNode("session_key").InnerText.Trim();
                                    _result.UserId       = int.Parse(_node.SelectSingleNode("user_id").InnerText.Trim());
                                    _result.UserName     = _node.SelectSingleNode("username").InnerText.Trim();
                                    _result.m_isLoggedIn = true;

                                    // Notify subscribers of sign-up success.
                                    _args.Success = true;
                                    _args.User    = _result;
                                    if (User.AfterSignUp != null)
                                    {
                                        User.AfterSignUp(null, _args);
                                    }

                                    return(true);
                                }
                            }
                        }
                    }
                }
            }

            _args.Success = false;
            if (User.AfterSignUp != null)
            {
                User.AfterSignUp(null, _args);
            }

            return(false);
        }