UNPKG

oembed-auto

Version:

make an oEmbed request with a content url

53 lines (48 loc) 1.97 kB
// 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);