ReaderController.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const BaseController = require('./BaseController');
  2. const ReaderWorker = require('../core/ReaderWorker');
  3. const readerStorage = require('../core/readerStorage');
  4. const workerState = require('../core/workerState');
  5. class ReaderController extends BaseController {
  6. constructor(config) {
  7. super(config);
  8. this.readerWorker = new ReaderWorker(config);
  9. }
  10. async loadBook(req, res) {
  11. const request = req.body;
  12. let error = '';
  13. try {
  14. if (!request.url)
  15. throw new Error(`key 'url' is empty`);
  16. const workerId = this.readerWorker.loadBookUrl({
  17. url: request.url,
  18. enableSitesFilter: (request.hasOwnProperty('enableSitesFilter') ? request.enableSitesFilter : true)
  19. });
  20. const state = workerState.getState(workerId);
  21. return (state ? state : {});
  22. } catch (e) {
  23. error = e.message;
  24. }
  25. //bad request
  26. res.status(400).send({error});
  27. return false;
  28. }
  29. async storage(req, res) {
  30. const request = req.body;
  31. let error = '';
  32. try {
  33. if (!request.action)
  34. throw new Error(`key 'action' is empty`);
  35. if (!request.items || Array.isArray(request.data))
  36. throw new Error(`key 'items' is empty`);
  37. return await readerStorage.doAction(request);
  38. } catch (e) {
  39. error = e.message;
  40. }
  41. //error
  42. res.status(500).send({error});
  43. return false;
  44. }
  45. async uploadFile(req, res) {
  46. const file = req.file;
  47. let error = '';
  48. try {
  49. const url = await this.readerWorker.saveFile(file);
  50. return {url};
  51. } catch (e) {
  52. error = e.message;
  53. }
  54. //bad request
  55. res.status(400).send({error});
  56. return false;
  57. }
  58. }
  59. module.exports = ReaderController;