Last active
December 15, 2015 23:10
-
-
Save IntuitDeveloperRelations/5338762 to your computer and use it in GitHub Desktop.
DevDefined / IPP .NET DevKit v2 - Platform - Call Reconnect API #DotNetDevKitV2 #Reconnect #IPP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Documentation: http://docs.developer.intuit.com/0025_Intuit_Anywhere/0060_Reference/3002_Reconnect_API | |
public string CallReconnectAPI(DataServices dataServices) | |
{ | |
HttpWebRequest httpWebRequest = WebRequest.Create("https://appcenter.intuit.com/api/v1/Connection/Reconnect") as HttpWebRequest; | |
httpWebRequest.Method = "GET"; | |
httpWebRequest.Headers.Add("Authorization", GetDevDefinedOAuthHeader(dataServices,httpWebRequest, "")); | |
UTF8Encoding encoding = new UTF8Encoding(); | |
HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; | |
using (Stream data = httpWebResponse.GetResponseStream()) | |
{ | |
return new StreamReader(data).ReadToEnd(); | |
} | |
} | |
private string GetDevDefinedOAuthHeader(DataServices dataServices, HttpWebRequest webRequest, string requestBody) | |
{ | |
OAuthRequestValidator oauthValidator = (OAuthRequestValidator)dataServices.ServiceContext.RequestValidator; | |
OAuthConsumerContext consumerContext = new OAuthConsumerContext | |
{ | |
ConsumerKey = oauthValidator.ConsumerKey, | |
SignatureMethod = SignatureMethod.HmacSha1, | |
ConsumerSecret = oauthValidator.ConsumerSecret, | |
UseHeaderForOAuthParameters = true | |
}; | |
//We already have OAuth tokens, so OAuth URIs below are not used - set to example.com | |
OAuthSession oSession = new OAuthSession(consumerContext, "https://www.example.com", | |
"https://www.example.com", | |
"https://www.example.com"); | |
oSession.AccessToken = new TokenBase | |
{ | |
Token = oauthValidator.AccessToken, | |
ConsumerKey = oauthValidator.ConsumerKey, | |
TokenSecret = oauthValidator.AccessTokenSecret | |
}; | |
IConsumerRequest consumerRequest = oSession.Request(); | |
consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method); | |
consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri); | |
if (webRequest.Headers.Count > 0) | |
{ | |
ConsumerRequestExtensions.AlterContext(consumerRequest, context => context.Headers = webRequest.Headers); | |
if (requestBody.Length > 0 && webRequest.Headers[HttpRequestHeader.ContentType] == "application/x-www-form-urlencoded") | |
{ | |
Dictionary<string, string> formParameters = new Dictionary<string, string>(); | |
foreach (string formParameter in requestBody.Split('&')) | |
{ | |
formParameters.Add(formParameter.Split('=')[0], formParameter.Split('=')[1]); | |
} | |
consumerRequest = consumerRequest.WithFormParameters(formParameters); | |
} | |
} | |
consumerRequest = consumerRequest.SignWithToken(); | |
return consumerRequest.Context.GenerateOAuthParametersForHeader(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks, example helped me a lot. But few things: link to documentation is not valid anymore. It was not clear where do you get
DataServices dataServices