Alexa-news-stentiment-evalu.../f-ask/samples/purchase/model.py

80 lines
2.4 KiB
Python
Raw Normal View History

2019-04-12 19:32:29 +00:00
import requests
from flask import json
from flask_ask import logger
class Product():
'''
Object model for inSkillProducts and methods to access products.
{"inSkillProducts":[
{"productId":"amzn1.adg.product.your_product_id",
"referenceName":"product_name",
"type":"ENTITLEMENT",
"name":"product name",
"summary":"This product has helped many people.",
"entitled":"NOT_ENTITLED",
"purchasable":"NOT_PURCHASABLE"}],
"nextToken":null,
"truncated":false}
'''
def __init__(self, apiAccessToken):
self.token = apiAccessToken
self.product_list = self.query()
def query(self):
# Information required to invoke the API is available in the session
apiEndpoint = "https://api.amazonalexa.com"
apiPath = "/v1/users/~current/skills/~current/inSkillProducts"
token = "bearer " + self.token
language = "en-US" #self.event.request.locale
url = apiEndpoint + apiPath
headers = {
"Content-Type" : 'application/json',
"Accept-Language" : language,
"Authorization" : token
}
#Call the API
res = requests.get(url, headers=headers)
logger.info('PRODUCTS:' + '*' * 80)
logger.info(res.status_code)
logger.info(res.text)
if res.status_code == 200:
data = json.loads(res.text)
return data['inSkillProducts']
else:
return None
def list(self):
""" return list of purchasable and not entitled products"""
mylist = []
for prod in self.product_list:
if self.purchasable(prod) and not self.entitled(prod):
mylist.append(prod)
return mylist
def purchasable(self, product):
""" return True if purchasable product"""
return 'PURCHASABLE' == product['purchasable']
def entitled(self, product):
""" return True if entitled product"""
return 'ENTITLED' == product['entitled']
def productId(self, name):
print(self.product_list)
for prod in self.product_list:
if name == prod['name'].lower():
return prod['productId']
return None
def productName(self, id):
for prod in self.product_list:
if id == prod['productId']:
return prod['name']
return None