internal UserEventArgs() : base() { m_user = new User(); }
/// <summary> /// ctor /// </summary> /// <param name="user"></param> public Request(User user) : this() { this.User = user; this.SpecifiedUser = true; }
/// <summary> /// ctor /// </summary> /// <param name="user"></param> /// <param name="defaultIfNull"></param> public Request(User user, bool defaultIfNull) : this() { this.User = user; this.SpecifiedUser = !defaultIfNull; }
/// <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); } }
/// <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) { ; } } }
/// <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; }
/// <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); }
/// <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; }
/// <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; }
/// <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; }