public TweetModule(ITwitterUserTracker userTracker) : base("/tweet") { this.RequiresAuthentication(); this.Get["/"] = _ => this.View["Status"]; this.Post["/", true] = async(_, __) => { var twitterApi = userTracker.GetAuthenticatedTwitterClientForUser(this.GetCurrentUser().TwitterUserId); var tweet = await twitterApi.PostTweet(this.Request.Form.Content); this.ViewBag.Message = "Tweet Sent"; // should be post-redirect-get return(this.View["Status", tweet]); }; this.Post["/delete/{id:long}", true] = async(_, __) => { var twitterApi = userTracker.GetAuthenticatedTwitterClientForUser(this.GetCurrentUser().TwitterUserId); await twitterApi.DeleteTweet(_.id); return(Response.AsRedirect("/tweet?message=Tweet%20Deleted")); }; }
public AuthModule(ITwitterAuthenticatedClient twitterApi, ITwitterUserTracker userTracker) : base("/auth") { this.Get["/signin", true] = async(_, __) => { var callbackurl = new UriBuilder( Request.Url.Scheme, Request.Url.HostName, Request.Url.Port ?? 80, "/auth/callback"); ViewBag.AuthUrl = await twitterApi.GetAuthorizationUri(callbackurl.ToString()); return(View["SignIn"]); }; this.Get["/callback", true] = async(_, __) => { await twitterApi.Authenticate((string)Request.Query.oauth_token, (string)Request.Query.oauth_verifier); Guid sessionId = Guid.NewGuid(); userTracker.Register(sessionId, twitterApi); return(this.LoginAndRedirect(sessionId)); }; }