forked from PipedreamHQ/pipedream
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathonesignal_rest_api.app.mjs
More file actions
86 lines (80 loc) · 1.86 KB
/
Copy pathonesignal_rest_api.app.mjs
File metadata and controls
86 lines (80 loc) · 1.86 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
import { axios } from "@pipedream/platform";
export default {
type: "app",
app: "onesignal_rest_api",
propDefinitions: {
deviceId: {
label: "Device",
description: "ID of a device",
type: "string",
async options() {
const devices = await this.getDevices();
return devices.map((device) => ({
label: device?.identifier ?? device.id,
value: device.id,
}));
},
},
},
methods: {
_accessAppId() {
return this.$auth.app_id;
},
_accessApiKey() {
return this.$auth.rest_api_key;
},
_apiUrl() {
return "https://api.onesignal.com";
},
async _makeRequest(path, options = {}, $ = this) {
const config = {
...options,
url: `${this._apiUrl()}/${path}`,
headers: {
Authorization: `Key ${this._accessApiKey()}`,
},
params: {
...options.params,
app_id: this._accessAppId(),
},
data: options.data,
};
return axios($, config);
},
async sendNotification({
data, $,
}) {
return this._makeRequest("notifications", {
method: "post",
data,
}, $);
},
async exportDevicesToCSV({
data, $,
}) {
const response = await this._makeRequest("players/csv_export", {
method: "post",
data,
}, $);
return response?.csv_file_url;
},
async getDevices({ $ } = {}) {
const response = await this._makeRequest("players", {}, $);
return response?.players ?? [];
},
async getDevice({
deviceId, $,
} = {}) {
const response = await this._makeRequest(`players/${deviceId}`, {}, $);
return response;
},
async addDevice({
data, $,
}) {
return this._makeRequest("players", {
method: "post",
data,
}, $);
},
},
};