Skip to content

Instantly share code, notes, and snippets.

@IntuitDeveloperRelations
Last active December 15, 2015 23:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save IntuitDeveloperRelations/5338762 to your computer and use it in GitHub Desktop.
Save IntuitDeveloperRelations/5338762 to your computer and use it in GitHub Desktop.
DevDefined / IPP .NET DevKit v2 - Platform - Call Reconnect API #DotNetDevKitV2 #Reconnect #IPP
//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();
}
@vadim-kovalyov
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment