Advertisement
IDNPeterL

DevKit/DevDefined/HttpWebRequest - v2 QBO Customer Filter

Feb 12th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.43 KB | None | 0 0
  1. IEnumerable<Customer> customers = GetQboCustomers(dataService, 1, 100, false);
  2.  
  3. public List<Intuit.Ipp.Data.Qbo.Customer> GetQboCustomers(DataServices dataServices, int startPage, int resultsPerPage, bool includeJobs)
  4. {
  5.     StringBuilder requestXML = new StringBuilder();
  6.     StringBuilder responseXML = new StringBuilder();
  7.  
  8.     var requestBody = String.Format("PageNum={0}&ResultsPerPage={1}", startPage, resultsPerPage);
  9.     if (!includeJobs) { requestBody += "&Filter=IncludeJobs :EQUALS: false"; }
  10.  
  11.     HttpWebRequest httpWebRequest = WebRequest.Create(dataServices.ServiceContext.BaseUrl + "customers/v2/" + dataServices.ServiceContext.RealmId) as HttpWebRequest;
  12.     httpWebRequest.Method = "POST";
  13.     httpWebRequest.ContentType = "application/x-www-form-urlencoded";
  14.     httpWebRequest.Headers.Add("Authorization", GetDevDefinedOAuthHeader(httpWebRequest, requestBody));
  15.     requestXML.Append(requestBody);
  16.     UTF8Encoding encoding = new UTF8Encoding();
  17.     byte[] content = encoding.GetBytes(requestXML.ToString());
  18.     using (var stream = httpWebRequest.GetRequestStream())
  19.     {
  20.         stream.Write(content, 0, content.Length);
  21.     }
  22.     HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
  23.     using (Stream data = httpWebResponse.GetResponseStream())
  24.     {
  25.         Intuit.Ipp.Data.Qbo.SearchResults searchResults = (Intuit.Ipp.Data.Qbo.SearchResults)dataServices.ServiceContext.Serializer.Deserialize<Intuit.Ipp.Data.Qbo.SearchResults>(new StreamReader(data).ReadToEnd());
  26.         return ((Intuit.Ipp.Data.Qbo.Customers)searchResults.CdmCollections).Customer.ToList();
  27.     }
  28.  
  29. }
  30.  
  31. protected string GetDevDefinedOAuthHeader(HttpWebRequest webRequest, string requestBody)
  32. {
  33.  
  34.     OAuthConsumerContext consumerContext = new OAuthConsumerContext
  35.     {
  36.         ConsumerKey = consumerKey,
  37.         ConsumerSecret = consumerSecret,
  38.         SignatureMethod = SignatureMethod.HmacSha1,
  39.         UseHeaderForOAuthParameters = true
  40.  
  41.     };
  42.  
  43.     consumerContext.UseHeaderForOAuthParameters = true;
  44.    
  45.     //URIs not used
  46.     OAuthSession oSession = new OAuthSession(consumerContext, "https://www.example.com",
  47.                             "https://www.example.com",
  48.                             "https://www.example.com");
  49.  
  50.  
  51.     oSession.AccessToken = new TokenBase
  52.     {
  53.         Token = accessToken,
  54.         ConsumerKey = consumerKey,
  55.         TokenSecret = accessTokenSecret
  56.     };
  57.  
  58.     IConsumerRequest consumerRequest = oSession.Request();
  59.     consumerRequest = ConsumerRequestExtensions.ForMethod(consumerRequest, webRequest.Method);
  60.     consumerRequest = ConsumerRequestExtensions.ForUri(consumerRequest, webRequest.RequestUri);
  61.     if (webRequest.Headers.Count > 0)
  62.     {
  63.         ConsumerRequestExtensions.AlterContext(consumerRequest, context => context.Headers = webRequest.Headers);
  64.         if (webRequest.Headers[HttpRequestHeader.ContentType] == "application/x-www-form-urlencoded")
  65.         {
  66.             Dictionary<string, string> formParameters = new Dictionary<string, string>();
  67.             foreach (string formParameter in requestBody.Split('&'))
  68.             {
  69.                 formParameters.Add(formParameter.Split('=')[0], formParameter.Split('=')[1]);
  70.             }
  71.             consumerRequest = consumerRequest.WithFormParameters(formParameters);
  72.         }
  73.     }
  74.  
  75.     consumerRequest = consumerRequest.SignWithToken();
  76.     return consumerRequest.Context.GenerateOAuthParametersForHeader();
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement