From aad15b88baaa593bb450971e2a5d751f52145295 Mon Sep 17 00:00:00 2001 From: Nathan Leniz Date: Fri, 6 Mar 2015 17:25:28 +0900 Subject: [PATCH] fudging around with interpreting opengraph info in resources.js --- app.js | 5 +++++ controllers/resources.js | 31 +++++++++++++++++++++++++++---- package.json | 1 + 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/app.js b/app.js index 3219020e64..ecce6a19e6 100644 --- a/app.js +++ b/app.js @@ -349,6 +349,11 @@ app.post( storyController.upvote ); +app.post( + '/stories/getURLMetaData', + resourcesController.getMetaData +); + /** * Challenge related routes */ diff --git a/controllers/resources.js b/controllers/resources.js index 54d566daf6..05d97b0939 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -8,7 +8,8 @@ var User = require('../models/User'), coursewares = require('../seed_data/coursewares.json'); Client = require('node-rest-client').Client, client = new Client(), - debug = require('debug')('freecc:cntr:bonfires'); + debug = require('debug')('freecc:cntr:bonfires'), + cheerio = require('cheerio'); /** * GET / @@ -119,13 +120,13 @@ module.exports = { }); }, trelloCalls: function(req, res) { - client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello, res2) { + client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello) { trello = trello ? (JSON.parse(trello)).length : "Can't connect to to Trello"; res.send({"trello": trello}); }); }, bloggerCalls: function(req, res) { - client.get('https://www.googleapis.com/blogger/v3/blogs/2421288658305323950/posts?key=' + secrets.blogger.key, function (blog, res5) { + client.get('https://www.googleapis.com/blogger/v3/blogs/2421288658305323950/posts?key=' + secrets.blogger.key, function (blog) { var blog = blog.length > 100 ? JSON.parse(blog) : ""; res.send({ blog1Title: blog ? blog["items"][0]["title"] : "Can't connect to Blogger", @@ -251,8 +252,30 @@ module.exports = { }, whichEnvironment: function() { return process.env.NODE_ENV; - } + }, + getMetaData: function(req, res, next) { + var url = req.body.data.url; + var result = {}; + client.get(url, function(siteInfo) { + var $ = cheerio.load(siteInfo); + + var meta = $('meta'); + $(meta, this).each(function () { + var prop = $(this).attr("property"), key, value; + if (prop && prop.substring(0, ns.length) === ns) { + key = prop.substring(ns.length); + value = $(this).attr("content"); + console.log("Found OGP data %s=%s", key, value); + result[key] = result[key] || []; + result[key].push(value); + } + }); + + res.json(JSON.stringify(result)); + + }); + } }; diff --git a/package.json b/package.json index 2e0986284d..94bd29bcd1 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "method-override": "^2.3.0", "moment": "^2.8.4", "mongoose": "^3.8.19", + "mongoose-text-search": "0.0.2", "morgan": "^1.5.0", "newrelic": "^1.13.3", "node": "0.0.0",