// GET: Home public ActionResult Index() { if (!new SessionStateCredentialStore().HasAllCredentials()) return RedirectToAction("Begin", "OAuth"); var TweetVM = new LoadUserViewModel { Text = "", size = 300, Response = "" }; return View(TweetVM); }
public async Task<ActionResult> TweetAsync(LoadUserViewModel user) { if (!ModelState.IsValid) { return View(user); } //load OAuth credentials var auth = new MvcAuthorizer { CredentialStore = new SessionStateCredentialStore() }; var ctx = new TwitterContext(auth); Friendship friendship; long cursor = -1; List<string> urls = new List<string>(); List<int> counts = new List<int>(); // load profile picture urls and tweets count using linq2twitter try { if (user.size < 24 || user.size > 2000) throw new Exception("Size out of bounds. Min size: 24, Max size: 2000"); do { friendship = await (from friend in ctx.Friendship where friend.Type == FriendshipType.FriendsList && friend.ScreenName == user.Text.Trim() && friend.Cursor == cursor select friend).SingleOrDefaultAsync(); if (friendship != null && friendship.Users != null && friendship.CursorMovement != null) { cursor = friendship.CursorMovement.Next; friendship.Users.ForEach(friend => { urls.Add(friend.ProfileImageUrl.Replace("normal","bigger")); counts.Add(friend.StatusesCount); } ); } } while (cursor != 0); // generate image collage from urls ViewBag.ImageData = ImageProcessing(urls, user.size, counts, user.Resize); // genrate status response var responseTweetVM = new LoadUserViewModel { Text = user.Text, size = user.size, Response = "Collage loaded" }; return View(responseTweetVM); } catch (Exception ex) { ViewBag.errors = ex.Message.Replace("page", "user"); } return View(); }