def _make_request(self, params, debug=False): self._cleanupParsedProperties() conn = AWSQueryConnection(host=self.DEFAULT_HOST, aws_access_key_id=self.auth_accesskey, aws_secret_access_key=self.auth_secretkey) conn.APIVersion = self.API_VERSION response = conn.make_request(self.action, params=params) body = response.read() if debug: print body if not response.status == 200: raise self.ResponseError(response.status, response.reason, body) h = handler.XmlHandler(self, self) xml.sax.parseString(body, h)
def get_ecs_response(params): """Call Amazon ECS with the given parameters and return the raw XML response""" try: aws_conn = AWSQueryConnection( aws_access_key_id=settings.AWS_ACCESS_KEY_ID, aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY, is_secure=False, host='ecs.amazonaws.com', ) aws_conn.SignatureVersion = '2' base_params = dict( Service='AWSECommerceService', Version='2008-08-19', SignatureVersion=aws_conn.SignatureVersion, AWSAccessKeyId=settings.AWS_ACCESS_KEY_ID, AssociateTag=settings.AWS_ASSOCIATE_TAG, Operation='ItemSearch', IdType='ASIN', ResponseGroup='Small', Timestamp=time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime()) ) if params: base_params.update(params) verb = 'GET' path = '/onca/xml' qs, signature = aws_conn.get_signature(base_params, verb, path) qs = path + '?' + qs + '&Signature=' + urllib.quote(signature) time.sleep(0.5) # throttle response = aws_conn._mexe(verb, qs, None, headers={}) resp = response.read() _log.debug("ECS Response: %s", resp) return resp except Exception, e: _log.debug("AWS ASIN call failed for params: %s", params) _log.debug(e) return u''
def setUp(self): self.connection = AWSQueryConnection('access_key', 'secret_key')
def create_amazon_book_by_asin(self, asin): AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID AWS_ASSOCIATE_TAG = settings.AWS_ASSOCIATE_TAG AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY search_index = 'Book' aws_conn = AWSQueryConnection( aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, is_secure=False, host='ecs.amazonaws.com') aws_conn.SignatureVersion = '2' params = dict( Service='AWSECommerceService', Version='2008-08-19', SignatureVersion=aws_conn.SignatureVersion, AWSAccessKeyId=AWS_ACCESS_KEY_ID, AssociateTag=AWS_ASSOCIATE_TAG, Operation='ItemLookup', ItemId=asin, ResponseGroup='ItemAttributes,Large, Images,Reviews', Timestamp=time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime())) verb = 'GET' path = '/onca/xml' qs, signature = aws_conn.get_signature(params, verb, path) qs = path + '?' + qs + '&Signature=' + urllib.quote(signature) #print "verb:", verb, "qs:", qs response = aws_conn._mexe(verb, qs, None, headers={}) returned_xml = self.raw_xml = myxml = str(response.read()) returned_xml = returned_xml.replace(" xmlns=\"http://webservices.amazon.com/AWSECommerceService/2008-08-19\"", '') doc = ElementTree.fromstring(returned_xml) try: self.title = doc.find('Items/Item/ItemAttributes/Title').text except: self.title = "" #self.author = doc.find('Items/Item/ItemAttributes/Author').text author_list = doc.findall('Items/Item/ItemAttributes/Author') for a in author_list: self.authors.append(a.text) try: self.edition = doc.find('Items/Item/ItemAttributes/Edition').text except: self.edition = "" try: self.list_price = doc.find('Items/Item/ItemAttributes/ListPrice/FormattedPrice').text except AttributeError: self.list_price = "" try: self.sale_price = doc.find('Items/Item/Offers/Offer/OfferListing/Price/FormattedPrice').text except AttributeError: self.sale_price = "" try: self.amount_saved = doc.find('Items/Item/Offers/Offer/OfferListing/AmountSaved/FormattedPrice').text except AttributeError: self.amount_saved = "" try: self.percentage_saved = doc.find('Items/Item/Offers/Offer/OfferListing/PercentageSaved').text except AttributeError: self.percentage_saved = "" try: self.ISBN = doc.find('Items/Item/ItemAttributes/ISBN').text except AttributeError: self.ISBN = "" try: self.ASIN = doc.find('Items/Item/ASIN').text except: self.ASIN = "" try: self.binding = doc.find('Items/Item/ItemAttributes/Binding').text except: self.binding = "" try: self.detail_url = doc.find('Items/Item/DetailPageURL').text except: self.detail_url = "" try: temp_date = doc.find('Items/Item/ItemAttributes/PublicationDate').text except: self.date = "" try: # convert to struct_time, then to datetime obj c = time.strptime(temp_date,"%Y-%m-%d") d = datetime.datetime(*c[:6]) self.publication_date = d except: self.publication_date = "" try: self.publisher = doc.find('Items/Item/ItemAttributes/Publisher').text # this should be a tag so it becomes a link to view more books by publisher except: self.publisher = "" try: self.pages = doc.find('Items/Item/ItemAttributes/NumberOfPages').text except AttributeError: self.page= "" try: self.lrg_image = doc.find('Items/Item/LargeImage/URL').text except AttributeError: self.lrg_img = "" try: self.med_image = doc.find('Items/Item/MediumImage/URL').text except AttributeError: self.med_image= "" try: self.tiny_image = doc.find('Items/Item/ImageSets/ImageSet/TinyImage/URL').text except AttributeError: self.tiny_image = "" editorials = doc.findall('Items/Item/EditorialReviews/EditorialReview') for reviews in editorials: if reviews.find('Source').text == "Product Description": self.description = reviews.find('Content').text else: ed = AmazonEditorial() ed.source = reviews.find('Source').text ed.content = reviews.find('Content').text self.editorial_reviews.append(ed) creators = doc.findall('Items/Item/ItemAttributes/Creator') for creator in creators: cr = AmazonBookCreator() cr.name = creator.text cr.role = creator.attrib['Role'] self.creators.append(cr)
http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=AKIAJGA2X2R3N7QW7JXA&AssociateTag=riot06-20&IdType=ASIN&Keywords=%22Will%20Dailey%22&Operation=ItemSearch&ResponseGroup=ItemIds&SearchIndex=MP3Downloads&Service=AWSECommerceService&SignatureMethod=HmacSHA256&SignatureVersion=2&Sort=-releasedate&Timestamp=2009-11-16T16%3A35%3A19&Version=2008-08-19&Signature=gxD2N19QND8bvLBS9X7HyOTaryEKcKC7VsyZlvGsZsY%3D ''' import time import urllib from boto.connection import AWSQueryConnection import xml.etree.ElementTree as ET from django.conf import settings AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY AWS_ASSOCIATE_TAG = settings.AWS_ASSOCIATE_TAG aws_conn = AWSQueryConnection(aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, is_secure=False, host='ecs.amazonaws.com') aws_conn.SignatureVersion = '2' params = dict(Service='AWSECommerceService', Version='2008-08-19', SignatureVersion=aws_conn.SignatureVersion, AWSAccessKeyId=AWS_ACCESS_KEY_ID, AssociateTag=AWS_ASSOCIATE_TAG, Operation='ItemSearch', IdType='ASIN', SearchIndex='MP3Downloads', Sort='-releasedate', Keywords='"Will Dailey"', ResponseGroup='ItemIds', Timestamp=time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime())) verb = 'GET'