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));
        }