Ejemplo n.º 1
0
    def bookmarklet(self, request):
        """
        Fetches the recipe for the url, saves the recipe, and returns a response to the chrome extension
        """
        u = ICurrentUser(request)

        url = request.args['uri'][0]
        pageSource = yield treq.get(url).addCallback(treq.content)
        items = microdata.get_items(pageSource)
        recipesSaved = []

        for i in items:
            itemTypeArray = [x.string for x in i.itemtype]
            if RECIPE_SCHEMA in itemTypeArray:
                recipe = i
                saveItem = Recipe.fromMicrodata(recipe, u.email)
                Recipe.saveOnlyOnce(saveItem)
                recipesSaved.append({
                    "name": saveItem.name,
                    "urlKey": saveItem.urlKey
                })
                break

        if len(recipesSaved) == 0:
            defer.returnValue(
                ClipResponse(status=RS.error, message=ResponseMsg.noRecipe))

        defer.returnValue(ClipResponse(status=RS.ok, recipes=recipesSaved))
Ejemplo n.º 2
0
    def bookmarklet(self, request): 
        """
        Fetches the recipe for the url, saves the recipe, and returns a response to the chrome extension 
        """
        def returnResponse(status, recipes, message): 
            """
            Return the appropriate data structure to the http response 
            """
            data = {'status': status, 
                    'recipes': recipes, 
                    'message': message} 
            defer.returnValue(json.dumps(data)) 

        userEmail = self.user(request).email
        if not userEmail: 
            returnResponse(status="error", recipes=[], message=ResponseMsg.not_logged_in)

        url = request.args['uri'][0]
        pageSource = yield treq.get(url).addCallback(treq.content)
        
        items = microdata.get_items(pageSource)
        recipeSaved = []

        for i in items: 
            itemTypeArray = [x.string for x in i.itemtype] 
            if RECIPE_SCHEMA in itemTypeArray: 
                recipe = i
                saveItem = Recipe.fromMicrodata(recipe, userEmail)
                Recipe.saveOnlyOnce(saveItem)
                recipeSaved.append({"name": saveItem.name, "urlKey": saveItem.urlKey}) 
                break 
        
        if len(recipeSaved) == 0:
            returnResponse(status="error", recipes=[], message=ResponseMsg.no_recipe) 

        returnResponse(status="ok", recipes=recipeSaved, message=ResponseMsg.blank)