static object GetInitiator( NancyContext context, IConfiguration configuration) { context.Ensure("context"); configuration.Ensure("configuration"); var returnUrl = context.Request.Query["return-url"].Value as string; if (!String.IsNullOrEmpty(returnUrl)) context.SetReturnUrl(returnUrl); var callbackUri = fn.MakeAbsoluteUri(Paths.TwitterAuthReceiver()); var oAuthRequest = OAuthRequest.ForRequestToken( configuration.TwitterAuthConsumerKey, configuration.TwitterAuthConsumerSecret, callbackUri.ToString()); oAuthRequest.RequestUrl = Constants.TwitterAuth.RequestTokenUrl; var response = fn.SendGet( new Uri(oAuthRequest.RequestUrl), addHeader => addHeader("Authorization", oAuthRequest.GetAuthorizationHeader())); var @params = fn.ParseQueryString(response); var token = @params[Constants.TwitterAuth.OAuthTokenParamName]; if (String.IsNullOrEmpty(token)) throw new InvalidOperationException(Strings.OAuthTokenMissing()); context.WriteSession(Constants.TwitterAuth.SessionKey, token); return context.Redirect(string.Format( CultureInfo.InvariantCulture, Constants.TwitterAuth.AuthenticatehUrlFormat, token)); }