public BookItem[] AssignedBooks(Valence.Request.Parameters param, ref string message) { var classOrgInfo = new Valence.OrgUnitInfo() { Id = param.ClassOrgId }; var result = new List <BookItem>(); result.AddRange(GetBooksForClass(param, classOrgInfo, ref message)); return(result.ToArray()); }
private List <BookItem> GetBooksForClass( Valence.Request.Parameters param, Valence.OrgUnitInfo course, ref string message) { Uri uri = param.UserContext.CreateAuthenticatedUri( "/d2l/api/" + param.ApiVersion("le") + "/" + course.Id + "/content/isbn/", "GET"); var request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "GET"; var handler = new Valence.Request.ErrorHandler(); var result = new List <BookItem>(); Valence.Request.Perform( request, param.UserContext, delegate(string data) { var serializer = new JavaScriptSerializer(); var books = serializer.Deserialize <Valence.Book[]>(data); if ((books == null) || (books.Length <= 0)) { return; } foreach (Valence.Book b in books) { try { GoogleBook.Volume volume = GoogleBook.Api.Query(b.Isbn); if (volume.TotalItems != 0) { GoogleBook.Item item = volume.items.First(); BookItem book = FromGoogleBookToBookItem(item); result.Add(book); } } catch (ArgumentNullException) {} } }, handler.Process); if (handler.IsError) { message = "Unable to retrieve assigned books. " + handler.Message; } return(result); }
public bool AddBook(Valence.Request.Parameters param, string isbn, ref string message) { Uri uri = param.UserContext.CreateAuthenticatedUri( "/d2l/api/" + param.ApiVersion("le") + "/" + param.ClassOrgId + "/content/isbn/", "POST"); var bookIsbn = new Valence.IsbnAssociation { Isbn = isbn }; var serializer = new JavaScriptSerializer(); String postData = serializer.Serialize(bookIsbn); var request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; request.ContentType = "application/json"; using (var requestWriter = new StreamWriter(request.GetRequestStream())) { requestWriter.Write(postData); } bool result = true; var handler = new Valence.Request.ErrorHandler(); Valence.Request.Perform(request, param.UserContext, delegate(string data) { var responseSerializer = new JavaScriptSerializer(); var bookResult = responseSerializer.Deserialize <Valence.Book>(data); if (bookResult.Isbn != isbn) { result = false; } }, handler.Process); if (handler.IsError) { result = false; message = "Unable to add books to course. " + handler.Message; } return(result); }
public bool RemoveBook(Valence.Request.Parameters param, string isbn, ref string message) { var uri = param.UserContext.CreateAuthenticatedUri( "/d2l/api/" + param.ApiVersion("le") + "/" + param.ClassOrgId + "/content/isbn/" + isbn, "DELETE"); var request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "DELETE"; var handler = new Valence.Request.ErrorHandler(); Valence.Request.Perform(request, param.UserContext, delegate(string data) { }, handler.Process); if (handler.IsError) { message = "Unable to remove books from course. " + handler.Message; } return(!handler.IsError); }