private T Fetch <T>(OrderAmazonSettings amazonSettings, IDictionary <string, string> request) where T : class { request["Service"] = amazonSettings.Service; request["AssociateTag"] = amazonSettings.AssociateTag; request["Version"] = amazonSettings.Version; SignedRequestHelper helper = new SignedRequestHelper(amazonSettings.AWSAccessKeyID, amazonSettings.AWSSecretKey, amazonSettings.Endpoint); string requestUrl = helper.Sign(request); string _awsNamespace = string.Format("http://webservices.amazon.com/{0}/{1}", "AWSECommerceService", "2013-08-01"); try { HttpWebRequest webRequest = (System.Net.HttpWebRequest)HttpWebRequest.Create(requestUrl); webRequest.UserAgent = "Chrome/56.0.2924.87"; webRequest.AllowWriteStreamBuffering = true; webRequest.Timeout = 20000; using (WebResponse response = webRequest.GetResponseAsync().Result) { using (StreamReader xmlReader = new StreamReader(response.GetResponseStream())) { XmlSerializer serializer = new XmlSerializer(typeof(T), _awsNamespace); T result = (T)serializer.Deserialize(xmlReader); if (result != null) { return(result); } } } } catch (Exception ex) { var logger = EngineContext.Current.Resolve <ILogger>(); logger.Error(ex.Message, ex); } return(null); }
public CartCreateResponse CartCreate(OrderAmazonSettings amazonSettings, List <Item> items, string responseGroup = "Cart") { if (responseGroup == "") { responseGroup = responseCartCreate; } IDictionary <string, string> request = new Dictionary <string, string>(); request["Operation"] = "CartCreate"; int i = 1; foreach (var item in items) { if (!String.IsNullOrEmpty(item.OfferListingId) && !String.IsNullOrWhiteSpace(item.OfferListingId)) { request["Item." + i + ".OfferListingId"] = item.OfferListingId; } else { request["Item." + i + ".ASIN"] = item.ASIN; } request["Item." + i + ".Quantity"] = item.Quantity.ToString(); i++; } request["ResponseGroup"] = HttpUtility.UrlDecode(responseGroup); return(Fetch <CartCreateResponse>(amazonSettings, request)); }
public CartClearResponse CartClear(OrderAmazonSettings amazonSettings, string cartId, string hmac, string responseGroup = "Cart") { if (responseGroup == "") { responseGroup = responseCartCreate; } IDictionary <string, string> request = new Dictionary <string, string>(); request["Operation"] = "CartClear"; request["CartId"] = cartId; request["HMAC"] = hmac; request["ResponseGroup"] = HttpUtility.UrlDecode(responseGroup); return(Fetch <CartClearResponse>(amazonSettings, request)); }