Apachai.Apachai.AuthCallback C# (CSharp) Method

AuthCallback() private method

private AuthCallback ( IManosContext ctx ) : void
ctx IManosContext
return void
        public void AuthCallback(IManosContext ctx)
        {
            if (testInstance) {
                ctx.Response.SetCookie ("apachai:userId", 1.ToString ());
                ctx.Response.SetCookie ("apachai:token", "bar");
                store.SetUserInfos (1, "the_test");
                store.SetExtraUserInfos (1, "http://neteril.org/img/twitter.png", "The Test", "http://neteril.org", "My Foo Bar Life");
                store.SetUserAccessTokens (1, "bar", "bar");
                ctx.Response.Redirect ("/Post");

                return;
            }

            string token = ctx.Request.Data["oauth_token"];
            string tokenVerifier = ctx.Request.Data["oauth_verifier"];

            Log.Info ("Tokens and verifier: {0} and {1}", token, tokenVerifier);

            oauth.AcquireAccessToken (new OAuthToken (token, store.GetTempTokenSecret (token)), tokenVerifier)
                .ContinueWith (resultTask => {
                    var result = resultTask.Result;
                    var userInfos = result.Item2;
                    var tokens = result.Item1;

                    Log.Info ("Access token call return: {0} and {1}", userInfos.ToString (), tokens.ToString ());

                    bool first = false;
                    if ((first = !store.DoWeKnowUser (userInfos.UserId)))
                        store.SetUserInfos (userInfos.UserId, userInfos.UserName);

                    if (first || store.DoesUserNeedInfoUpdate (userInfos.UserId) ) {
                        Task.Factory.StartNew (() => {
                                var twitter = new Twitter (oauth);
                                twitter.Tokens = tokens;

                                var twitterInfos = twitter.GetUserInformations (userInfos.UserId.ToString ());

                                Log.Info ("Got twitter json infos for {0}", userInfos.UserId.ToString ());

                                var retDict = JSON.JsonDecode (twitterInfos) as Dictionary<object, object>;

                                if (retDict == null)
                                    return;

                                var pUrl = retDict["profile_image_url"] as string;
                                pUrl = string.IsNullOrEmpty (pUrl) ? string.Empty : pUrl.Replace ("normal.", "reasonably_small.");
                                var pageUrl = retDict["url"] as string ?? string.Empty;
                                var name = retDict["name"] as string ?? string.Empty;
                                var desc = retDict["description"] as string ?? string.Empty;

                                store.SetExtraUserInfos (userInfos.UserId,
                                                         pUrl,
                                                         name,
                                                         pageUrl,
                                                         desc);
                        });
                    }

                    store.SetUserAccessTokens (userInfos.UserId, tokens.Token, tokens.TokenSecret);

                    ctx.Response.SetCookie ("apachai:userId", userInfos.UserId.ToString (), TimeSpan.FromDays (30));
                    ctx.Response.SetCookie ("apachai:token", tokens.Token, TimeSpan.FromDays (30));

                    ctx.Response.Redirect ("/Post");
              }, ExecuteSync);
        }