示例#1
0
 internal UserEventArgs()
     : base()
 {
     m_user = new User();
 }
示例#2
0
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="user"></param>
 public Request(User user)
     : this()
 {
     this.User = user;
     this.SpecifiedUser = true;
 }
示例#3
0
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="user"></param>
 /// <param name="defaultIfNull"></param>
 public Request(User user, bool defaultIfNull)
     : this()
 {
     this.User = user;
     this.SpecifiedUser = !defaultIfNull;
 }
示例#4
0
 /// <summary>
 /// Add this document to the specified collections
 /// </summary>
 /// <param name="user">make the request on the behalf of this user</param>
 /// <param name="collectionIDs">list of collection ids</param>
 public void AddToCollections(User user, ICollection<int> collectionIDs)
 {
     foreach (int cid in collectionIDs)
     {
         AddToCollection(user, cid);
     }
 }
示例#5
0
        /// <summary>
        /// Add this document to the specified collection
        /// </summary>
        /// <param name="user">make the request on the behalf of this user</param>
        /// <param name="collectionId">the collection id</param>
        public void AddToCollection(User user, int collectionId)
        {
            if (collectionId < 1)
            {
                Service.OnErrorOccurred(666, "You must have collectionId indicated.");
                return;
            }

            // Build our request
            using (Request _request = new Request(user, true))
            {
                _request.MethodName = "docs.addToCollection";
            
                _request.Parameters.Add("doc_id", this.DocumentId.ToString());
                _request.Parameters.Add("collection_id", collectionId.ToString());
                
                Response _response = Service.Instance.PostRequest(_request);
                if (_response != null && _response.HasChildNodes && _response.ErrorList.Count < 1)
                {
                    ;
                }
            }
        }
示例#6
0
        /// <summary>
        /// This method retrieves a list of documents for a given user.
        /// </summary>
        /// <param name="user"></param>
        /// <param name="limit">The number of documents to return. You can paginate through the full list using the limit and offset parameters. The maximum limit is 1000. </param>
        /// <param name="offset">The offset into the list of documents. You can paginate through the full list using the limit and offset parameters.</param>
        /// <param name="includeDetails">Additionally retrieves detailed document information.</param>
        /// <returns></returns>
        public static List<Document> GetList(User user, int limit, int offset, bool includeDetails)
        {
            List<Document> _result = new List<Document>();

            // Build the request
            using (Request _request = new Request(user))
            {
                _request.MethodName = "docs.getList";
                
                // Currently the 'use_api_account' parameter isn't working. Since "false == not using the param at all" just
                // comment it out.
                //_request.Parameters.Add("use_api_account", "false");

                _request.Parameters.Add("limit", limit.ToString());
                _request.Parameters.Add("offset", offset.ToString());

                // Get the response
                using (Response _response = Service.Instance.PostRequest(_request))
                {
                    // Parse the response
                    if (_response != null && _response.HasChildNodes && _response.ErrorList.Count < 1)
                    {
                        XmlNodeList _list = _response.GetElementsByTagName("result");
                        if (_list.Count > 0)
                        {
                            foreach (XmlNode _node in _list)
                            {
                                Document _item = new Document();

                                _item.DocumentId = int.Parse(_node.SelectSingleNode("doc_id").InnerText);
                                _item.Title = _node.SelectSingleNode("title").InnerText.Trim();
                                _item.Description = _node.SelectSingleNode("description").InnerText.Trim();
                                _item.AccessKey = _node.SelectSingleNode("access_key").InnerText;

                                switch (_node.SelectSingleNode("conversion_status").InnerText.Trim().ToLower())
                                {
                                    case "displayable": _item.ConversionStatus = ConversionStatusTypes.Displayable; break;
                                    case "done": _item.ConversionStatus = ConversionStatusTypes.Done; break;
                                    case "error": _item.ConversionStatus = ConversionStatusTypes.Error; break;
                                    case "processing": _item.ConversionStatus = ConversionStatusTypes.Processing; break;
                                    case "published": _item.ConversionStatus = ConversionStatusTypes.Published; break;
                                    default: _item.ConversionStatus = ConversionStatusTypes.None_Specified; break;
                                }

                                // We're going to default to public
                                _item.AccessType = AccessTypes.Public;

                                // We've got a password - it's private!
                                if (_node.SelectSingleNode("secret_password") != null)
                                {
                                    _item.AccessType = AccessTypes.Private;
                                    _item.SecretPassword = _node.SelectSingleNode("secret_password").InnerText;
                                }

                                // Get all the properties.
                                Document _temp = Document.Download(_item.DocumentId);

                                _result.Add(_temp);
                            }
                        }
                    }
                }
            }
            return _result;
        }
示例#7
0
 /// <summary>
 /// This method retrieves a list of documents for a given user.
 /// </summary>
 /// <param name="user"></param>
 /// <param name="includeDetails">Additionally retrieves detailed document information.</param>
 /// <returns></returns>
 public static List<Document> GetList(User user, bool includeDetails)
 {
     return GetList(user, 1000, 1, includeDetails);
 }
示例#8
0
        /// <summary>
        /// This method retrieves a list of scribd 'Collections' associated with the user.
        /// </summary>
        /// <param name="user">if null then the current user is assumed</param>
        /// <param name="scope"></param>
        /// <returns></returns>
        public static ICollection<Collection> GetCollections(User user, Scope scope)
        {
            ICollection<Collection> _result = new List<Collection>();

            // Build the request
            using (Request _request = new Request(user, true))
            {
                _request.MethodName = "docs.getCollections";

                if (scope == Scope.Public)
                {
                    _request.Parameters.Add("scope", "public");
                }
                else if (scope == Scope.Private)
                {
                    _request.Parameters.Add("scope", "private");
                }

                // Get the response
                using (Response _response = Service.Instance.PostRequest(_request))
                {
                    // Parse the response
                    if (_response != null && _response.HasChildNodes && _response.ErrorList.Count < 1)
                    {
                        XmlNodeList _list = _response.GetElementsByTagName("result");
                        if (_list.Count > 0)
                        {
                            foreach (XmlNode _node in _list)
                            {
                                // this call to Parse will recurse into any subcategories
                                Collection col = Collection.Parse(_node, null);
                                _result.Add(col);
                            }
                        }
                    }
                }
            }

            return _result;
        }
示例#9
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;
        }
示例#10
0
        /// <summary>
        /// Logs a user into the service.
        /// </summary>
        /// <param name="userName">Username associated with your Scribd account</param>
        /// <param name="password">Password associated with your Scribd account</param>
        /// <param name="verifyOnly">Just verifying credentials, don't change state of 'logged in' user</param>
        /// <param name="newUser">(out) Can be used by called to get the newly created User</param>
        /// <returns>True on success</returns>
        private static bool _Login(string userName, string password, bool verifyOnly, out User newUser)
        {
            UserEventArgs _args = new UserEventArgs();
            if (BeforeLogin != null)
            {
                _args.Success = false;
                _args.User.UserName = userName;
            }

            newUser = null;

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

                    using (Response _response = Service.Instance.PostRequest(_request))
                    {
                        // 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;

                                    newUser = _result;

                                    _args.Success = true;
                                    _args.User = _result;

                                    if (!verifyOnly)
                                    {
                                        Service.Instance.InternalUser = _result;
                                        Service.Instance.InternalUser.OnLoggedIn(_args);
                                    }

                                    return true;
                                }
                            }
                        }
                    }
                }
            }

            if (!verifyOnly)
            {
                // ??? It seems wrong to leave any previous 'logged in' user in tact. Code setting 'logged_in' flag to false.
                // but that flag doesn't do anything. Seems like clearing the Service.InternalUser is the right thing to do.
            Service.Instance.InternalUser.m_isLoggedIn = false;
            }

            _args.Success = false;

            // Notify subscribers of failure.
            Service.Instance.InternalUser.OnLoginFailed(_args);

            return false;
        }