-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsightengine.js
126 lines (103 loc) · 3.98 KB
/
sightengine.js
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
var fetch = require('node-fetch');
const fs = require('fs');
const FormData = require('form-data');
const version = require('./package.json').version;
function makeClient(api_user, api_secret) {
const client = {};
const endpoint = 'https://api.sightengine.com/';
const apiUser = api_user;
const apiSecret = api_secret;
var _models = [];
client.check = (models) => {
_models = models;
return client;
};
client.set_url = (imageUrl) => {
const data = { 'models': _models.join(), 'url': imageUrl, 'api_user': apiUser, 'api_secret': apiSecret };
const querystring = encodeQueryData(data);
var url = endpoint + '1.0/check.json';
return fetch(url + '?' + querystring, { headers: { 'user-agent': 'SE-SDK-NODEJS' + version} }).then((res) => {
return res.json();
}).catch((error) => {
return error;
});
};
client.set_file = (file) => {
var form = new FormData();
var url = endpoint + '1.0/check.json';
form.append('api_user', apiUser);
form.append('api_secret', apiSecret);
form.append('models', _models.join());
form.append('media', fs.createReadStream(file));
return fetch(url, { method: 'POST', body: form, headers: { 'user-agent': 'SE-SDK-NODEJS' + version}}).then(function(res) {
return res.json();
}).catch((error) => {
return error;
});
};
client.set_bytes = (binaryImage, filename) => {
const form = new FormData();
var url = endpoint + '1.0/check.json';
form.append('api_user', apiUser);
form.append('api_secret', apiSecret);
form.append('models', _models.join());
form.append('media', binaryImage, { filename : filename });
return fetch(url, { method: 'POST', body: form, headers: { 'user-agent': 'SE-SDK-NODEJS' + version}}).then(function(res) {
return res.json();
}).catch((error) => {
return error;
});
};
client.video = (video, callback) => {
var url = endpoint + '/1.0/video/check.json';
const data = { 'stream_url': video, 'models': _models.join(), 'callback_url': callback, 'api_user': apiUser, 'api_secret': apiSecret };
const querystring = encodeQueryData(data);
return fetch(url + '?' + querystring, { headers: { 'user-agent': 'SE-SDK-NODEJS' + version} }).then((res) => {
return res.json();
}).catch((error) => {
return error;
});
};
client.video_sync = (video) => {
var url = endpoint + '/1.0/video/check-sync.json';
const data = { 'stream_url': video, 'models': _models.join(), 'api_user': apiUser, 'api_secret': apiSecret };
const querystring = encodeQueryData(data);
return fetch(url + '?' + querystring, { headers: { 'user-agent': 'SE-SDK-NODEJS' + version} }).then((res) => {
return res.json();
}).catch((error) => {
return error;
});
};
client.feedback = (model, modelClass, image) => {
var url = endpoint + '1.0/feedback.json'
if(image.indexOf("http://") == 0 || image.indexOf("https://") == 0) {
const data = { 'model': model, 'class': modelClass, 'url': image, 'api_user': apiUser, 'api_secret': apiSecret };
const querystring = encodeQueryData(data);
return fetch(url + '?' + querystring, { headers: { 'user-agent': 'SE-SDK-NODEJS' + version} }).then((res) => {
return res.json();
}).catch((error) => {
return error;
});
} else {
var form = new FormData();
form.append('api_user', apiUser);
form.append('api_secret', apiSecret);
form.append('class', modelClass);
form.append('model', model);
form.append('media', fs.createReadStream(image));
return fetch(url, { method: 'POST', body: form, headers: { 'user-agent': 'SE-SDK-NODEJS' + version}}).then(function(res) {
return res.json();
}).catch((error) => {
return error;
});
};
}
return client;
}
function encodeQueryData(data) {
var ret = [];
for (var d in data)
ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
return ret.join('&');
}
module.exports = makeClient;