Advertisement
IDNPeterL

DevKit/DevDefined/HttpWebRequest - v2 QBO Invoice Filter

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