Navigation Menu

Skip to content

Commit

Permalink
support Open Graph Protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
naoya committed Oct 19, 2011
1 parent 0707044 commit 14b7ec5
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 46 deletions.
10 changes: 7 additions & 3 deletions background.coffee
@@ -1,5 +1,6 @@
chrome.browserAction.onClicked.addListener (tab) ->
chrome.tabs.executeScript null, file: "content_script.js"
chrome.tabs.executeScript null, file: "jquery-1.6.4.min.js", ->
chrome.tabs.executeScript null, file: "content_script.js"

chrome.extension.onConnect.addListener (port) ->
port.onMessage.addListener (info) ->
Expand All @@ -11,8 +12,11 @@ chrome.extension.onConnect.addListener (port) ->
param[decodeURIComponent kv[0]] = decodeURIComponent kv[1]
ll = param['ll'] || param['sll']
[lat, lng] = ll.split ','
socket.emit 'fireEvent:openMap',
socket.emit 'fireEvent:openMap'
latitude: lat
longitude: lng
else
socket.emit 'fireEvent:openUrl', url: info.url
socket.emit 'fireEvent:openUrl'
title: info.title
url: info.url
image: info.image
56 changes: 30 additions & 26 deletions background.js
@@ -1,31 +1,35 @@
(function() {
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.browserAction.onClicked.addListener(function(tab) {
return chrome.tabs.executeScript(null, {
file: "jquery-1.6.4.min.js"
}, function() {
return chrome.tabs.executeScript(null, {
file: "content_script.js"
});
});
chrome.extension.onConnect.addListener(function(port) {
return port.onMessage.addListener(function(info) {
var lat, ll, lng, param, socket, _ref;
socket = io.connect('http://localhost:3000');
if (info.isMap) {
param = {};
info.url.split('&').forEach(function(q) {
var kv;
kv = q.split('=', 2);
return param[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);
});
ll = param['ll'] || param['sll'];
_ref = ll.split(','), lat = _ref[0], lng = _ref[1];
return socket.emit('fireEvent:openMap', {
latitude: lat,
longitude: lng
});
} else {
return socket.emit('fireEvent:openUrl', {
url: info.url
});
}
});
});
chrome.extension.onConnect.addListener(function(port) {
return port.onMessage.addListener(function(info) {
var lat, ll, lng, param, socket, _ref;
socket = io.connect('http://localhost:3000');
if (info.isMap) {
param = {};
info.url.split('&').forEach(function(q) {
var kv;
kv = q.split('=', 2);
return param[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);
});
ll = param['ll'] || param['sll'];
_ref = ll.split(','), lat = _ref[0], lng = _ref[1];
return socket.emit('fireEvent:openMap', {
latitude: lat,
longitude: lng
});
} else {
return socket.emit('fireEvent:openUrl', {
title: info.title,
url: info.url,
image: info.image
});
}
});
}).call(this);
});
12 changes: 11 additions & 1 deletion content_script.coffee
Expand Up @@ -3,11 +3,21 @@ pageInfo =
title: document.title
selection: window.getSelection().toString()
isMap: false
image: null

## Google Maps
if pageInfo.url.match /^http[s]?:\/\/maps\.google\./
link = document.getElementById('link')
if link and link.href
pageInfo.url = link.href
pageInfo.isMap = true

chrome.extension.connect().postMessage pageInfo
## Open Graph Protocol
og = {}
$('meta[property^="og:"]').each () ->
og[ $(@).attr('property').match(/og:(.+)$/)[1] ] = $(@).attr 'content'

if og.image
pageInfo.image = og.image

chrome.extension.connect().postMessage pageInfo
38 changes: 22 additions & 16 deletions content_script.js
@@ -1,17 +1,23 @@
(function() {
var link, pageInfo;
pageInfo = {
url: document.location.href,
title: document.title,
selection: window.getSelection().toString(),
isMap: false
};
if (pageInfo.url.match(/^http[s]?:\/\/maps\.google\./)) {
link = document.getElementById('link');
if (link && link.href) {
pageInfo.url = link.href;
pageInfo.isMap = true;
}
var link, og, pageInfo;
pageInfo = {
url: document.location.href,
title: document.title,
selection: window.getSelection().toString(),
isMap: false,
image: null
};
if (pageInfo.url.match(/^http[s]?:\/\/maps\.google\./)) {
link = document.getElementById('link');
if (link && link.href) {
pageInfo.url = link.href;
pageInfo.isMap = true;
}
chrome.extension.connect().postMessage(pageInfo);
}).call(this);
}
og = {};
$('meta[property^="og:"]').each(function() {
return og[$(this).attr('property').match(/og:(.+)$/)[1]] = $(this).attr('content');
});
if (og.image) {
pageInfo.image = og.image;
}
chrome.extension.connect().postMessage(pageInfo);
4 changes: 4 additions & 0 deletions jquery-1.6.4.min.js

Large diffs are not rendered by default.

0 comments on commit 14b7ec5

Please sign in to comment.