Advertisement
IDNPeterL

DevKit/DevDefined/HttpWebRequest - v2 QBO Bill Filter/Sort

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