function peelBackRdf(data, format) { $('body').prepend('<div id="target"><textarea id="code"></textarea></div>'); $('#code').text(data); var cm = CodeMirror.fromTextArea($('#code')[0], { mode: format, readOnly: "nocursor", viewportMargin: Infinity }); $('#target').fold({ directory: "chrome-extension://" + chrome.runtime.id, autoCurl: true }); $('#turn_wrapper').click( function() { if ($('#turn_fold').is(':visible')) { $('#turn_fold').hide(); $('#turn_wrapper').width('100%').height('100%').off(); $('#turn_object').width('100%').height('100%').off(); $('#turn_hideme').width('100%').height('100%').off(); }/* else { $('#turn_fold').show(); $('#turn_wrapper').width('80px').height('80px'); $('#turn_object').width('80px').height('80px'); $('#turn_hideme').width('85px').height('85px'); } */ } ); } $.typedValue.types['http://www.w3.org/2001/XMLSchema#positiveInteger'] = { regex: /^[1-9][0-9]*$/, strip: true, /** @ignore */ value: function (v) { return parseInt(v, 10); } }; function checkRdfXmlLicense(data, format) { var parser = new DOMParser(); doc = parser.parseFromString(data, 'text/xml'); try { var rdf = $.rdf().load(doc); var licenses = rdf .prefix('cc', 'http://creativecommons.org/ns#') .where('?doc cc:license ?license'); licenses = licenses.add( rdf .prefix('dct', 'http://purl.org/dc/terms/') .where('?doc dct:license ?license') ); if (licenses.select().length > 0) { return 'licensed'; } else { return 'unlicensed'; } } catch (e) { console.log(e); return 'error'; } } function fetchRdf(rdfUrl, failfunc) { $.ajax(rdfUrl, { headers: { Accept: acceptFormats.join(', ') }, cache: true, dataType: 'text', error: function(req, textStatus, errorThrown) { failfunc(); }, success: function(data, textStatus, res) { var ct = res.getResponseHeader('Content-Type'); if (ct != null) { var format = null; for (var i = 0; i < acceptFormats.length; i++) { if (ct.slice(0, acceptFormats[i].length) == acceptFormats[i]) { format = acceptFormats[i]; break; } } if (format != null) { peelBackRdf(data, format); chrome.runtime.sendMessage({ method: 'setLicense', type: format, check: checkRdfXmlLicense(data, format) }, function(response) { console.log(response.text); }); } else { failfunc(); } } else { failfunc(); } } }); } var res = document.evaluate("//link[(@rel = 'alternate') or (@rel = 'meta')]", document.head, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null) var rdfUrl = null; var rdfFormat = null; var acceptFormats = ['application/rdf+xml', 'text/turtle']; for (var i=0; i < res.snapshotLength; i++) { if (acceptFormats.indexOf(res.snapshotItem(i).type) > -1) { rdfFormat = res.snapshotItem(i).type; rdfUrl = res.snapshotItem(i).href; // relative break; } } if (rdfUrl == null) { // check to see whether we've been redirected here chrome.runtime.sendMessage({ method: 'isRedirect', url: document.URL }, function(response) { if (response.redirect) { fetchRdf(response.fromUrl, function() { fetchRdf(document.URL); // if failed to fetch prior page as RDF }); } else { // if no redirect, try fetching current page as RDF fetchRdf(document.URL, function() {}); } }); } else { fetchRdf(rdfUrl, function() {}); }