예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }