public static RestRequest DelegateWith(RestClient client, RestRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (!request.Method.HasValue) { throw new ArgumentException("Request must specify a web method."); } var method = request.Method.Value; var credentials = (OAuthCredentials)request.Credentials; var url = request.BuildEndpoint(client).ToString(); var workflow = new OAuthWorkflow(credentials); var uri = new Uri(client.Authority); var realm = uri.Host; var enableTrace = client.TraceEnabled || request.TraceEnabled; var info = workflow.BuildProtectedResourceInfo(method, request.GetAllHeaders(), url); var query = credentials.GetQueryFor(url, request, info, method, enableTrace); ((OAuthWebQuery)query).Realm = realm; var auth = query.GetAuthorizationContent(); var echo = new RestRequest(); echo.AddHeader("X-Auth-Service-Provider", url); echo.AddHeader("X-Verify-Credentials-Authorization", auth); return(echo); }
public static RestRequest DelegateWith(RestClient client, RestRequest request) { if(request == null) { throw new ArgumentNullException("request"); } if(!request.Method.HasValue) { throw new ArgumentException("Request must specify a web method."); } var method = request.Method.Value; var credentials = (OAuthCredentials)request.Credentials; var url = request.BuildEndpoint(client).ToString(); var workflow = new OAuthWorkflow(credentials); var uri = new Uri(client.Authority); var realm = uri.Host; var enableTrace = client.TraceEnabled || request.TraceEnabled; var info = workflow.BuildProtectedResourceInfo(method, request.GetAllHeaders(), url); var query = credentials.GetQueryFor(url, request, info, method, enableTrace); ((OAuthWebQuery) query).Realm = realm; var auth = query.GetAuthorizationContent(); var echo = new RestRequest(); echo.AddHeader("X-Auth-Service-Provider", url); echo.AddHeader("X-Verify-Credentials-Authorization", auth); return echo; }
internal static OAuthWebQuery RefreshAccessTokenQuery() { var oauth = new OAuthWorkflow { AccessTokenUrl = AppSettings.AccessTokenUri, ConsumerKey = AppSettings.consumerKey, ConsumerSecret = AppSettings.consumerKeySecret, ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader, SignatureMethod = OAuthSignatureMethod.HmacSha1, Token = MainUtil.GetKeyValue<string>("AccessToken"), TokenSecret = MainUtil.GetKeyValue<string>("AccessTokenSecret"), SessionHandle = MainUtil.GetKeyValue<string>("SessionHandle"), Version = AppSettings.oAuthVersion // }; var info = oauth.BuildAccessTokenInfo(WebMethod.Post); ////replace signature //info.Signature = AppSettings.consumerKeySecret + "&" + oauth.TokenSecret; //info.Signature = HttpUtility.UrlEncode(info.Signature); ////replace signature info.Token = HttpUtility.UrlEncode(info.Token); var sessionParameter = new WebPair("oauth_session_handle", MainUtil.GetKeyValue<string>("SessionHandle")); var objOAuthWebQuery = new OAuthWebQuery(info, false); objOAuthWebQuery.HasElevatedPermissions = true; objOAuthWebQuery.SilverlightUserAgentHeader = "Hammock"; objOAuthWebQuery.Parameters.Add(sessionParameter); return objOAuthWebQuery; }
internal static OAuthWebQuery GetAccessTokenQuery(string requestToken, string RequestTokenSecret, string oAuthVerificationPin) { var oauth = new OAuthWorkflow { AccessTokenUrl = AppSettings.AccessTokenUri, ConsumerKey = AppSettings.consumerKey, ConsumerSecret = AppSettings.consumerKeySecret, ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader, SignatureMethod = OAuthSignatureMethod.HmacSha1, Token = HttpUtility.UrlEncode(requestToken), TokenSecret = RequestTokenSecret, Verifier = oAuthVerificationPin, Version = AppSettings.oAuthVersion // }; var info = oauth.BuildAccessTokenInfo(WebMethod.Post); ////replace signature //info.Signature = AppSettings.consumerKeySecret + "&" + oauth.TokenSecret; //info.Signature = HttpUtility.UrlEncode(info.Signature); ////replace signature var objOAuthWebQuery = new OAuthWebQuery(info, false); objOAuthWebQuery.HasElevatedPermissions = true; objOAuthWebQuery.SilverlightUserAgentHeader = "Hammock"; return objOAuthWebQuery; }
public virtual WebQuery GetQueryFor(string url, WebParameterCollection parameters, IWebQueryInfo info, WebMethod method, bool enableTrace) { OAuthWebQueryInfo oauth; var workflow = new OAuthWorkflow { ConsumerKey = ConsumerKey, ConsumerSecret = ConsumerSecret, ParameterHandling = ParameterHandling, SignatureMethod = SignatureMethod, SignatureTreatment = SignatureTreatment, CallbackUrl = CallbackUrl, ClientPassword = ClientPassword, ClientUsername = ClientUsername, Verifier = Verifier, Token = Token, TokenSecret = TokenSecret, Version = Version ?? "1.0", SessionHandle = SessionHandle }; switch (Type) { case OAuthType.RequestToken: workflow.RequestTokenUrl = url; oauth = workflow.BuildRequestTokenInfo(method, parameters); break; case OAuthType.AccessToken: workflow.AccessTokenUrl = url; oauth = workflow.BuildAccessTokenInfo(method, parameters); break; case OAuthType.ClientAuthentication: method = WebMethod.Post; workflow.AccessTokenUrl = url; oauth = workflow.BuildClientAuthAccessTokenInfo(method, parameters); break; case OAuthType.ProtectedResource: oauth = workflow.BuildProtectedResourceInfo(method, parameters, url); oauth.FirstUse = true; break; default: throw new ArgumentOutOfRangeException(); } return(new OAuthWebQuery(oauth, enableTrace)); }
internal static OAuthWebQuery GetRequestTokenQuery() { var oauth = new OAuthWorkflow { ConsumerKey = AppSettings.consumerKey, ConsumerSecret = AppSettings.consumerKeySecret, SignatureMethod = OAuthSignatureMethod.HmacSha1, ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader, RequestTokenUrl = AppSettings.RequestTokenUri, Version = AppSettings.oAuthVersion, CallbackUrl = AppSettings.CallbackUri }; var info = oauth.BuildRequestTokenInfo(WebMethod.Get); var objOAuthWebQuery = new OAuthWebQuery(info, false); objOAuthWebQuery.HasElevatedPermissions = true; objOAuthWebQuery.SilverlightUserAgentHeader = "Hammock"; return objOAuthWebQuery; }
//internal static OAuthWebQuery GetAccessTokenQuery(string requestToken, string RequestTokenSecret, string oAuthVerificationPin) internal static OAuthWebQuery GetAccessTokenQuery(string requestToken, string RequestTokenSecret) { var oauth = new OAuthWorkflow { AccessTokenUrl = DailyBurnSettings.AccessTokenUri, ConsumerKey = DailyBurnSettings.consumerKey, ConsumerSecret = DailyBurnSettings.consumerKeySecret, ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader, SignatureMethod = OAuthSignatureMethod.HmacSha1, Token = requestToken, Version = DailyBurnSettings.oAuthVersion }; var info = oauth.BuildAccessTokenInfo(WebMethod.Get); var objOAuthWebQuery = new OAuthWebQuery(info); objOAuthWebQuery.HasElevatedPermissions = true; objOAuthWebQuery.SilverlightUserAgentHeader = "Hammock"; objOAuthWebQuery.SilverlightMethodHeader = "GET"; return objOAuthWebQuery; }
internal static OAuthWebQuery GetAccessTokenQuery(string requestToken, string RequestTokenSecret, string oAuthVerificationPin) { var oauth = new OAuthWorkflow { AccessTokenUrl = AppSettings.TwitterAccessTokenUri, ConsumerKey = AppSettings.TwitterConsumerKey, ConsumerSecret = AppSettings.TwitterConsumerKeySecret, ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader, SignatureMethod = OAuthSignatureMethod.HmacSha1, Token = requestToken, Verifier = oAuthVerificationPin, Version = AppSettings.TwitterOAuthVersion }; var info = oauth.BuildAccessTokenInfo(WebMethod.Post); var objOAuthWebQuery = new OAuthWebQuery(info, AppSettings.InDebug); objOAuthWebQuery.HasElevatedPermissions = true; objOAuthWebQuery.SilverlightUserAgentHeader = "Hammock"; objOAuthWebQuery.Method = WebMethod.Get; //objOAuthWebQuery.SilverlightMethodHeader = "GET"; return objOAuthWebQuery; }
public static void Authenticate(WebBrowser wb) { m_browser = wb; var oauth = new OAuthWorkflow { ConsumerKey = TwitterSettings.ConsumerKey, ConsumerSecret = TwitterSettings.ConsumerKeySecret, SignatureMethod = OAuthSignatureMethod.HmacSha1, ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader, RequestTokenUrl = TwitterSettings.RequestTokenUri, Version = TwitterSettings.OAuthVersion, CallbackUrl = TwitterSettings.CallbackUri }; var info = oauth.BuildRequestTokenInfo(WebMethod.Get); var objOAuthWebQuery = new OAuthWebQuery(info); objOAuthWebQuery.HasElevatedPermissions = true; objOAuthWebQuery.SilverlightUserAgentHeader = "Hammock"; objOAuthWebQuery.SilverlightMethodHeader = "GET"; objOAuthWebQuery.QueryResponse += new EventHandler<WebQueryResponseEventArgs>(objOAuthWebQuery_QueryResponse); objOAuthWebQuery.RequestAsync(TwitterSettings.RequestTokenUri, null); }
public virtual RestRequest PrepareEchoRequest(string realm = "http://api.twitter.com") { var args = new FunctionArguments { ConsumerKey = _consumerKey, ConsumerSecret = _consumerSecret, Token = _token, TokenSecret = _tokenSecret }; var request = _protectedResourceQuery.Invoke(args); request.Method = WebMethod.Get; request.Path = string.Concat("account/verify_credentials", FormatAsString); var credentials = (OAuthCredentials)request.Credentials; var url = request.BuildEndpoint(_client); var workflow = new OAuthWorkflow(credentials); var method = request.Method.HasValue ? request.Method.Value : WebMethod.Get; var info = workflow.BuildProtectedResourceInfo(method, request.GetAllHeaders(), url); var query = credentials.GetQueryFor(url, request, info, method, TraceEnabled); ((OAuthWebQuery)query).Realm = realm; var auth = query.GetAuthorizationContent(); var echo = new RestRequest(); echo.AddHeader("X-Auth-Service-Provider", url); echo.AddHeader("X-Verify-Credentials-Authorization", auth); return echo; }
private void RecalculateProtectedResourceSignature(string url) { if(!_recalculate) { _recalculate = true; return; // <-- More efficient for unrecycled queries } var info = (OAuthWebQueryInfo) Info; if(!info.ClientUsername.IsNullOrBlank() || !info.ClientPassword.IsNullOrBlank()) { // Not a protected resource request return; } if(!string.IsNullOrEmpty(info.Verifier)) { // This is an access token request return; } var oauth = new OAuthWorkflow { ConsumerKey = info.ConsumerKey, ConsumerSecret = info.ConsumerSecret, Token = info.Token, TokenSecret = info.TokenSecret, ClientUsername = info.ClientUsername, ClientPassword = info.ClientPassword, SignatureMethod = info.SignatureMethod.FromRequestValue(), ParameterHandling = ParameterHandling, CallbackUrl = info.Callback, Verifier = info.Verifier }; // [DC]: Add any non-oauth parameters back into the signature hash var parameters = new WebParameterCollection(); var nonAuthParameters = Parameters.Where(p => !p.Name.StartsWith("oauth_")); parameters.AddRange(nonAuthParameters); // [DC]: Don't escape parameters again when calcing the signature Info = oauth.BuildProtectedResourceInfo(Method, parameters, url); // [DC]: Add any non-oauth parameters back into parameter bag Parameters = ParseInfoParameters(); Parameters.AddRange(nonAuthParameters); }
public virtual WebQuery GetQueryFor(string url, WebParameterCollection parameters, IWebQueryInfo info, WebMethod method, bool enableTrace) { OAuthWebQueryInfo oauth; var workflow = new OAuthWorkflow { ConsumerKey = ConsumerKey, ConsumerSecret = ConsumerSecret, ParameterHandling = ParameterHandling, SignatureMethod = SignatureMethod, SignatureTreatment = SignatureTreatment, CallbackUrl = CallbackUrl, ClientPassword = ClientPassword, ClientUsername = ClientUsername, Verifier = Verifier, Token = Token, TokenSecret = TokenSecret, Version = Version ?? "1.0", SessionHandle = SessionHandle }; switch (Type) { case OAuthType.RequestToken: workflow.RequestTokenUrl = url; oauth = workflow.BuildRequestTokenInfo(method, parameters); break; case OAuthType.AccessToken: workflow.AccessTokenUrl = url; oauth = workflow.BuildAccessTokenInfo(method, parameters); break; case OAuthType.ClientAuthentication: method = WebMethod.Post; workflow.AccessTokenUrl = url; oauth = workflow.BuildClientAuthAccessTokenInfo(method, parameters); break; case OAuthType.ProtectedResource: oauth = workflow.BuildProtectedResourceInfo(method, parameters, url); oauth.FirstUse = true; break; default: throw new ArgumentOutOfRangeException(); } return new OAuthWebQuery(oauth, enableTrace); }