Exemple #1
0
    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)
Exemple #2
0
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')
Exemple #4
0
    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)
            
            
Exemple #5
0
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'