-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
127 lines (116 loc) · 2.98 KB
/
Copy pathindex.js
File metadata and controls
127 lines (116 loc) · 2.98 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
var fs = require('fs');
var request = require('request');
var axios = require('axios');
function PushBullet(PB_ACCESS_TOKEN) {
function RequestAPI(path, options) {
options = options || {};
var opt = {
url: "https://api.pushbullet.com/v2" + path,
headers: Object.assign({
"Access-Token": PB_ACCESS_TOKEN
}, options.headers || {})
};
return axios(Object.assign({}, options, opt));
}
function AccessHeader() {
return {
"Access-Token": PB_ACCESS_TOKEN
};
}
function ListDevices(callback) {
RequestAPI("/devices")
.then(function(response) {
callback(null, response.data);
})
.catch(function(err) {
console.error(err);
callback(err);
});
}
function ListContacts(callback) {
RequestAPI("/contacts")
.then(function(response) {
callback(null, response.data);
})
.catch(function(err) {
console.error(err);
callback(err);
});
}
function ListPushes(callback) {
RequestAPI("/pushes", { params: { active: true } })
.then(function(response) {
callback(null, response.data);
})
.catch(function(err) {
console.error(err);
callback(err);
});
}
function Push(params, callback) {
function DoPush(params, callback) {
RequestAPI("/pushes", { method: "POST", data: params })
.then(function(response) {
callback(null, response.data);
})
.catch(function(err) {
console.error(err);
callback(err);
});
}
if (params.type === 'file') {
UploadFile(params, function(err, fileInfo) {
if (err) {
return callback(err);
}
params.file_url = fileInfo.file_url;
delete params.file;
DoPush(params, callback);
});
} else {
DoPush(params, callback);
}
}
function UploadFile(params, callback) {
var uploadParams = {
file_name: params.file_name,
file_type: params.file_type
};
RequestAPI("/upload-request", { method: "POST", data: uploadParams })
.then(function(response) {
var body = response.data;
var awsData = body.data;
awsData.file = fs.createReadStream(params.file);
request({
url: body.upload_url,
method: "POST",
formData: awsData
}, function(err, res) {
if (err) {
callback(err);
} else {
if (res.statusCode === 204) {
callback(null, {
file_type: body.file_type,
file_name: body.file_name,
file_url: body.file_url
});
} else {
callback(res);
}
}
});
})
.catch(function(err) {
console.error(err);
callback(err);
});
}
return {
ListContacts: ListContacts,
ListDevices: ListDevices,
ListPushes: ListPushes,
Push: Push
};
}
module.exports = PushBullet;