ReaderController.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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(request.url);
  17. const state = workerState.getState(workerId);
  18. return (state ? state : {});
  19. } catch (e) {
  20. error = e.message;
  21. }
  22. //bad request
  23. res.status(400).send({error});
  24. return false;
  25. }
  26. async storage(req, res) {
  27. const request = req.body;
  28. let error = '';
  29. try {
  30. if (!request.action)
  31. throw new Error(`key 'action' is empty`);
  32. if (!request.items || Array.isArray(request.data))
  33. throw new Error(`key 'items' is empty`);
  34. return await readerStorage.doAction(request);
  35. } catch (e) {
  36. error = e.message;
  37. }
  38. //bad request
  39. res.status(400).send({error});
  40. return false;
  41. }
  42. async uploadFile(req, res) {
  43. const file = req.file;
  44. let error = '';
  45. try {
  46. const url = await this.readerWorker.saveFile(file);
  47. return {url};
  48. } catch (e) {
  49. error = e.message;
  50. }
  51. //bad request
  52. res.status(400).send({error});
  53. return false;
  54. }
  55. }
  56. module.exports = ReaderController;