add /sync api
parent
6c31561b9b
commit
a4102ad3f0
33
operetta.js
33
operetta.js
|
@ -1,7 +1,6 @@
|
||||||
// TODO: Получать, парсить и хранить тела писем (и, вероятно, вложения) + индексировать тексты
|
// TODO: Получать, парсить и хранить тела писем (и, вероятно, вложения) + индексировать тексты
|
||||||
// TODO: Группировка писем
|
// TODO: Группировка писем
|
||||||
// TODO: Висеть в виде демона и сразу получать новые письма (IDLE)
|
// TODO: Висеть в виде демона и сразу получать новые письма (IDLE)
|
||||||
// TODO: Сделать веб-сервер
|
|
||||||
// TODO: Сделать подписки на новые сообщения по вебсокетам
|
// TODO: Сделать подписки на новые сообщения по вебсокетам
|
||||||
// TODO: Чего я ещё хотел - интеграцию с maillog'ом и серверным спамфильтром
|
// TODO: Чего я ещё хотел - интеграцию с maillog'ом и серверным спамфильтром
|
||||||
|
|
||||||
|
@ -48,7 +47,8 @@ var Syncer = {
|
||||||
selected: {},
|
selected: {},
|
||||||
connections: {},
|
connections: {},
|
||||||
busy: {},
|
busy: {},
|
||||||
queue: {}
|
queue: {},
|
||||||
|
syncInProgress: false
|
||||||
};
|
};
|
||||||
|
|
||||||
Syncer.app = express();
|
Syncer.app = express();
|
||||||
|
@ -139,6 +139,17 @@ Syncer.app.get('/message', genRequest(function*(req, res)
|
||||||
return res.send({ msg: msg });
|
return res.send({ msg: msg });
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
Syncer.app.get('/sync', genRequest(function*(req, res)
|
||||||
|
{
|
||||||
|
var self = Syncer;
|
||||||
|
if (!req.session || !req.session.auth)
|
||||||
|
return res.sendStatus(401);
|
||||||
|
if (self.syncInProgress)
|
||||||
|
return res.send({ error: 'already-running' });
|
||||||
|
Syncer.syncAll();
|
||||||
|
return res.send({ status: 'started' });
|
||||||
|
}));
|
||||||
|
|
||||||
Syncer.getBody = function*(messages, boxId)
|
Syncer.getBody = function*(messages, boxId)
|
||||||
{
|
{
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -356,7 +367,6 @@ Syncer.sync = function*(account)
|
||||||
|
|
||||||
Syncer.deleteMessages = function*(where)
|
Syncer.deleteMessages = function*(where)
|
||||||
{
|
{
|
||||||
console.log(where+'');
|
|
||||||
yield pg.update('threads', { first_msg: null })
|
yield pg.update('threads', { first_msg: null })
|
||||||
.where(pg.sql('first_msg IN ('+pg.select('id').from('messages').where(where)+')'))
|
.where(pg.sql('first_msg IN ('+pg.select('id').from('messages').where(where)+')'))
|
||||||
.run(gen.ef());
|
.run(gen.ef());
|
||||||
|
@ -636,13 +646,20 @@ Syncer.addMessage = function*(msgrow, attrs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Syncer.syncAll = function()
|
||||||
|
{
|
||||||
|
gen.run(function*()
|
||||||
|
{
|
||||||
|
Syncer.syncInProgress = true;
|
||||||
|
for (var i = 0; i < cfg.accounts.length; i++)
|
||||||
|
yield* Syncer.sync(cfg.accounts[i]);
|
||||||
|
Syncer.syncInProgress = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Syncer.app.listen(8057);
|
Syncer.app.listen(8057);
|
||||||
|
|
||||||
gen.run(function*()
|
Syncer.syncAll();
|
||||||
{
|
|
||||||
for (var i = 0; i < cfg.accounts.length; i++)
|
|
||||||
yield* Syncer.sync(cfg.accounts[i]);
|
|
||||||
});
|
|
||||||
|
|
||||||
function genRequest(fn)
|
function genRequest(fn)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue