forked from allanca/pivotate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
background.html
80 lines (75 loc) · 2.82 KB
/
background.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<html>
<script src="jquery.js" type="text/javascript"></script>
<script>
var data = {description: "Description"};
var getData = function() { return data; };
var setData = function(obj) { data = obj; };
var popupCallbacks = [];
var getPopupCallback = function() {
if (popupCallbacks.length>0) {
return popupCallbacks.pop();
} else {
return false;
}
};
XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
var bb = new BlobBuilder();
var data = new ArrayBuffer(datastr.length);
var ui8a = new Uint8Array(data, 0);
for (var i=0; i<datastr.length; i++) {
ui8a[i] = (datastr.charCodeAt(i) & 0xff);
}
bb.append(data);
var blob = bb.getBlob();
this.send(blob);
}
var sendData = function(obj, callback) {
$.ajax({
url: 'http://www.pivotaltracker.com/services/v3/projects/' + obj.pivotalprojectid + '/stories',
type: "POST",
dataType: "xml",
headers: {
'X-TrackerToken': obj.pivotalkey
},
data: {
'story': {
'name': obj.title,
'description': obj.description,
'story_type': obj.story_type
}
},
success: function(res) {
var CRLF = "\r\n";
var boundary = "AJAX--------------" + (new Date).getTime();
var request = '--' + boundary + CRLF +
'Content-Disposition: form-data; ' + 'name="Filedata"; ' + 'filename="screenshot.jpg"' + CRLF +
'Content-Type: image/jpeg' + CRLF + CRLF +
atob(obj.imagedata.replace(/data:image\/jpg;base64,/, '')) + CRLF +
'--' + boundary + "--" + CRLF;
var contentType = "multipart/form-data; boundary=" + boundary;
var storyid = $(res).find('id').text();
var url = 'http://www.pivotaltracker.com/services/v3/projects/' + obj.pivotalprojectid + '/stories/' + storyid + '/attachments';
var req = new XMLHttpRequest();
req.open("POST", url, true);
// set headers and mime-type appropriately
req.setRequestHeader("Content-Type", contentType);
req.setRequestHeader("X-TrackerToken", obj.pivotalkey);
req.onreadystatechange = function() {
if (req.readyState==4) {
if (req.status==200) {
popupCallbacks.push(function() {callback('Saved!', true)});
}
else {
popupCallbacks.push(function() {callback('Error posting screenshot!', false)});
}
}
};
req.sendAsBinary(request);
},
error: function() {
popupCallbacks.push(function() {callback('Error posting story!', false)});
}
});
};
</script>
</html>