0
|
1 var Bugzilla = {
|
|
2 BASE_URL: "https://api-dev.bugzilla.mozilla.org/latest",
|
|
3 BASE_UI_URL: "https://bugzilla.mozilla.org",
|
|
4 DEFAULT_OPTIONS: {
|
|
5 method: "GET"
|
|
6 },
|
|
7 getShowBugURL: function Bugzilla_getShowBugURL(id) {
|
|
8 return this.BASE_UI_URL + "/show_bug.cgi?id=" + id;
|
|
9 },
|
|
10 queryString: function Bugzilla_queryString(data) {
|
|
11 var parts = [];
|
|
12 for (name in data) {
|
|
13 var values = data[name];
|
|
14 if (!values.forEach)
|
|
15 values = [values];
|
|
16 values.forEach(
|
|
17 function(value) {
|
|
18 parts.push(encodeURI(name) + "=" + encodeURI(value));
|
|
19 });
|
|
20 }
|
|
21 return parts.join("&");
|
|
22 },
|
|
23 ajax: function Bugzilla_ajax(options) {
|
|
24 var newOptions = {__proto__: this.DEFAULT_OPTIONS};
|
|
25 for (name in options)
|
|
26 newOptions[name] = options[name];
|
|
27 options = newOptions;
|
|
28
|
|
29 function onLoad() {
|
|
30 options.success(JSON.parse(xhr.responseText));
|
|
31 }
|
|
32
|
|
33 var xhr = new XMLHttpRequest();
|
|
34 var url = this.BASE_URL + options.url;
|
|
35
|
|
36 if (options.data)
|
|
37 url = url + "?" + this.queryString(options.data);
|
|
38 xhr.open(options.method, url);
|
|
39 xhr.setRequestHeader("Accept", "application/json");
|
|
40 xhr.setRequestHeader("Content-Type", "application/json");
|
|
41 xhr.addEventListener("load", onLoad, false);
|
|
42 xhr.send(null);
|
|
43 return xhr;
|
|
44 },
|
|
45 getBug: function Bugzilla_getBug(id, cb) {
|
|
46 this.ajax({url: "/bug/" + id,
|
|
47 success: cb});
|
|
48 },
|
|
49 search: function Bugzilla_search(query, cb) {
|
|
50 this.ajax({url: "/bug",
|
|
51 data: query,
|
|
52 success: cb});
|
|
53 }
|
|
54 };
|