-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
61 lines (51 loc) · 1.82 KB
/
server.js
File metadata and controls
61 lines (51 loc) · 1.82 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
const express = require('express');
const { getHistoricalRates } = require('dukascopy-node');
const app = express();
const port = 3000;
app.use(express.json());
app.post('/historical', async (req, res) => {
const { instrument, from, to, timeframe, priceType, format, utcOffset, volumes, volumeUnits, flats, cache, cachePath, retries, retryOnEmpty, noFailAfterRetries, retryPause, debug, silent, inline, fileName, dateFormat, timeZone } = req.body;
if (!instrument || !from || !to) {
return res.status(400).json({ error: 'Missing required parameters: instrument, from, or to' });
}
try {
const options = {
instrument: instrument.toLowerCase(),
dates: {
from: new Date(from),
to: new Date(to),
},
timeframe: timeframe || 'd1',
priceType: priceType || 'bid',
utcOffset: utcOffset || 0,
volumes: volumes || false,
volumeUnits: volumeUnits || 'millions',
flats: flats || false,
cache: cache || false,
cachePath: cachePath || './.dukascopy-cache',
retries: retries || 0,
retryOnEmpty: retryOnEmpty || false,
noFailAfterRetries: noFailAfterRetries || false,
retryPause: retryPause || 500,
debug: debug || false,
silent: silent || false,
inline: inline || false,
fileName: fileName || '',
dateFormat: dateFormat || '',
timeZone: timeZone || ''
};
const data = await getHistoricalRates(options);
res.json(data);
} catch (err) {
console.error('Download error:', err);
console.error('Request body:', req.body);
console.error('Error stack:', err.stack);
res.status(500).json({ error: err.message });
}
});
app.get('/', (req, res) => {
res.send('Dukascopy Loader API is running!');
});
app.listen(port, '0.0.0.0', () => {
console.log(`Server is running on port ${port}`);
});