oembed-auto
Version:
make an oEmbed request with a content url
53 lines (48 loc) • 1.97 kB
JavaScript
// Generated by CoffeeScript 1.6.3
(function() {
var oembedList, request;
oembedList = require("./oembedList");
request = require("request");
module.exports = function(str, callback) {
var oembedUrl, pattern, patternMatch, re, url, urlRegEx, urls, _i, _j, _len, _len1, _ref;
urlRegEx = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/;
if ((str != null) && typeof str === "string" && urlRegEx.test(str)) {
urls = Object.keys(oembedList);
for (_i = 0, _len = urls.length; _i < _len; _i++) {
url = urls[_i];
patternMatch = false;
_ref = oembedList[url];
for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
pattern = _ref[_j];
re = new RegExp(pattern);
if (re.test(str)) {
patternMatch = true;
break;
}
}
if (patternMatch) {
oembedUrl = "" + url + "?url=" + (escape(str)) + "&format=json";
break;
}
}
if (oembedUrl != null) {
return request(oembedUrl, function(err, res, body) {
if (err) {
return typeof callback === "function" ? callback(err) : void 0;
} else {
if (res.statusCode === 200) {
body = JSON.parse(unescape(body));
return typeof callback === "function" ? callback(err, body) : void 0;
} else {
return typeof callback === "function" ? callback(new Error("request could not be made. ERROR: " + res.statusCode)) : void 0;
}
}
});
} else {
return typeof callback === "function" ? callback(new Error("given url is not supported by oembed-auto")) : void 0;
}
} else {
return typeof callback === "function" ? callback(new Error("given url is not a valid url")) : void 0;
}
};
}).call(this);