POC: StackExchange API: $.getStackExchangeQuestions
Test wrapper for getting (default: latest) questions.
by Adam Patridge
HTML
<a id="more-questions" href="#">Get more</a>
<ul id="results"></ul>
<script type="text/x-jquery-tmpl" id="resultTemplate">
{{#each $data}}
<li data-question-id="{{=question_id}}">
<p>{{=title}}</p>
</li>
{{/each}}
</script>
<script type="text/javascript" src="http://dl.dropbox.com/u/6593594/cdn/JSLINQ.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="http://jquery-jsonp.googlecode.com/files/jquery.jsonp-2.1.4.min.js"></script>
<script type="text/javascript" src="https://raw.github.com/BorisMoore/jsrender/master/jsrender.js"></script>
<script type="text/javascript" src="http://dl.dropbox.com/u/6593594/cdn/uri.js"></script>
JavaScript
/***Let JSLint know what the expected global variables are***/
/*global jQuery, $, google, JSLINQ, clearTimeout, setTimeout */
(function ($) {
"use strict";
var apiHost = "api.stackexchange.com";
$.getStackExchangeQuestions = function (options) {
var opts = $.extend({}, $.getStackExchangeQuestions.defaults, options),
url = URI("https://" + apiHost + "/2.0/questions/" + (opts.ids || ""));
// Append all options as querystring parameters.
$.each(opts, function (i, val) {
url.addSearch(i, val);
});
var getNewQuestions = $.ajax({
dataType: "jsonp",
url: url
});
return getNewQuestions;
};
$.getStackExchangeQuestions.defaults = {
pagesize: 50,
site: "stackoverflow",
sort: "creation",
order: "desc"
//min: lastValueForSort,
//key: yourApiKey,
//todate: someTimestamp,
//fromdate: someTimestamp,
//ids: "1;2;3",
//page: x,
};
}(jQuery));
$(function () {
"use strict";
var apiKey = "BFkB32WKyHjbqI9RYU1lKA((",
mostRecentQuestionTime;
$("#more-questions").click(function (e) {
var opts = {
key: apiKey
};
if (mostRecentQuestionTime) {
opts.fromdate = mostRecentQuestionTime;
}
$.getStackExchangeQuestions(opts).done(function (data) {
var currentQuestionIds = JSLINQ($("#results li")).Select(function (li) {
return $(li).data("question-id");
}),
orderedData = JSLINQ(data.items).Where(function (question) {
return !currentQuestionIds.Any(function (id) {
return id === question.question_id;
});
}).OrderByDescending(function (item) {
return item.creation_date;
}),
result =...