def parse_cart(cls, node): """ Returns an instance of :class:`amazonproduct.contrib.Cart` based on information extracted from ``node``. """ cart = Cart() # TODO This is probably not the safest way to get <Cart> root = node.Cart cart.cart_id = root.CartId.pyval cart.hmac = root.HMAC.pyval def parse_item(item_node): item = Item() item.item_id = item_node.CartItemId.pyval item.asin = item_node.ASIN.pyval item.seller = item_node.SellerNickname.pyval item.quantity = item_node.Quantity.pyval item.title = item_node.Title.pyval item.product_group = item_node.ProductGroup.pyval item.price = (item_node.Price.Amount.pyval, item_node.Price.CurrencyCode.pyval) item.total = (item_node.ItemTotal.Amount.pyval, item_node.ItemTotal.CurrencyCode.pyval) return item try: for item_node in root.CartItems.CartItem: cart.items.append(parse_item(item_node)) cart.url = root.PurchaseURL.pyval cart.subtotal = (root.SubTotal.Amount, root.SubTotal.CurrencyCode) except AttributeError: cart.url = None cart.subtotal = None return cart
def parse_cart(cls, node): """ Returns an instance of :class:`amazonproduct.contrib.Cart` based on information extracted from ``node``. """ _nspace = extract_nspace(node) _xpath = lambda path: path.replace('{}', _nspace) root = node.find(_xpath('.//{}Cart')) cart = Cart() cart.cart_id = root.findtext(_xpath('./{}CartId')) cart.hmac = root.findtext(_xpath('./{}HMAC')) cart.url = root.findtext(_xpath('./{}PurchaseURL')) def parse_item(item_node): item = Item() item.item_id = item_node.findtext(_xpath('./{}CartItemId')) item.asin = item_node.findtext(_xpath('./{}ASIN')) item.seller = item_node.findtext(_xpath('./{}SellerNickname')) item.quantity = int(item_node.findtext(_xpath('./{}Quantity'))) item.title = item_node.findtext(_xpath('./{}Title')) item.product_group = item_node.findtext(_xpath('./{}ProductGroup')) item.price = ( int(item_node.findtext(_xpath('./{}Price/{}Amount'))), item_node.findtext(_xpath('./{}Price/{}CurrencyCode'))) item.total = ( int(item_node.findtext(_xpath('./{}ItemTotal/{}Amount'))), item_node.findtext(_xpath('./{}ItemTotal/{}CurrencyCode'))) return item try: for item_node in root.findall(_xpath('./{}CartItems/{}CartItem')): cart.items.append(parse_item(item_node)) cart.subtotal = (node.SubTotal.Amount, node.SubTotal.CurrencyCode) except AttributeError: cart.subtotal = (None, None) return cart
def parse_cart(cls, node): """ Returns an instance of :class:`amazonproduct.contrib.Cart` based on information extracted from ``node``. """ nspace = {'aws': node.nsmap.get(None, '')} root = node.find('.//aws:Cart', namespaces=nspace) _extract = lambda node, xpath: node.findtext(xpath, namespaces=nspace) cart = Cart() cart.cart_id = _extract(root, './aws:CartId') cart.hmac = _extract(root, './aws:HMAC') cart.url = _extract(root, './aws:PurchaseURL') def parse_item(item_node): item = Item() item.item_id = _extract(item_node, './aws:CartItemId') item.asin = _extract(item_node, './aws:ASIN') item.seller = _extract(item_node, './aws:SellerNickname') item.quantity = int(_extract(item_node, './aws:Quantity')) item.title = _extract(item_node, './aws:Title') item.product_group = _extract(item_node, './aws:ProductGroup') item.price = (int(_extract(item_node, './aws:Price/aws:Amount')), _extract(item_node, './aws:Price/aws:CurrencyCode')) item.total = (int(_extract(item_node, './aws:ItemTotal/aws:Amount')), _extract(item_node, './aws:ItemTotal/aws:CurrencyCode')) return item try: for item_node in root.findall('./aws:CartItems/aws:CartItem', namespaces=nspace): cart.items.append(parse_item(item_node)) cart.subtotal = (node.SubTotal.Amount, node.SubTotal.CurrencyCode) except AttributeError: cart.subtotal = (None, None) return cart
def parse_cart(cls, node): """ Returns an instance of :class:`amazonproduct.contrib.Cart` based on information extracted from ``node``. """ nspace = {'aws': node.nsmap.get(None, '')} root = node.find('.//aws:Cart', namespaces=nspace) _extract = lambda node, xpath: node.findtext(xpath, namespaces=nspace) cart = Cart() cart.cart_id = _extract(root, './aws:CartId') cart.hmac = _extract(root, './aws:HMAC') cart.url = _extract(root, './aws:PurchaseURL') def parse_item(item_node): item = Item() item.item_id = _extract(item_node, './aws:CartItemId') item.asin = _extract(item_node, './aws:ASIN') item.seller = _extract(item_node, './aws:SellerNickname') item.quantity = int(_extract(item_node, './aws:Quantity')) item.title = _extract(item_node, './aws:Title') item.product_group = _extract(item_node, './aws:ProductGroup') item.price = ( int(_extract(item_node, './aws:Price/aws:Amount')), _extract(item_node, './aws:Price/aws:CurrencyCode')) item.total = ( int(_extract(item_node, './aws:ItemTotal/aws:Amount')), _extract(item_node, './aws:ItemTotal/aws:CurrencyCode')) return item try: for item_node in root.findall('./aws:CartItems/aws:CartItem', namespaces=nspace): cart.items.append(parse_item(item_node)) cart.subtotal = (node.SubTotal.Amount, node.SubTotal.CurrencyCode) except AttributeError: cart.subtotal = (None, None) return cart
def parse_cart(cls, node): """ Returns an instance of :class:`amazonproduct.contrib.Cart` based on information extracted from ``node``. """ cart = Cart() # TODO This is probably not the safest way to get <Cart> root = node.Cart cart.cart_id = root.CartId.pyval cart.hmac = root.HMAC.pyval def parse_item(item_node): item = Item() item.item_id = item_node.CartItemId.pyval item.asin = item_node.ASIN.pyval item.seller = item_node.SellerNickname.pyval item.quantity = item_node.Quantity.pyval item.title = item_node.Title.pyval item.product_group = item_node.ProductGroup.pyval item.price = ( item_node.Price.Amount.pyval, item_node.Price.CurrencyCode.pyval) item.total = ( item_node.ItemTotal.Amount.pyval, item_node.ItemTotal.CurrencyCode.pyval) return item try: for item_node in root.CartItems.CartItem: cart.items.append(parse_item(item_node)) cart.url = root.PurchaseURL.pyval cart.subtotal = (root.SubTotal.Amount, root.SubTotal.CurrencyCode) except AttributeError: cart.url = None cart.subtotal = None return cart