Exemplo n.º 1
0
        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));
            };
        }