mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-03 19:07:00 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const Logger = require('../Logger')
 | 
						|
const { isNullOrNaN } = require('../utils/index')
 | 
						|
 | 
						|
class EBookController {
 | 
						|
  constructor() { }
 | 
						|
 | 
						|
  async getEbookInfo(req, res) {
 | 
						|
    const isDev = req.query.dev == 1
 | 
						|
    const json = await this.eBookManager.getBookInfo(req.libraryItem, req.user, isDev)
 | 
						|
    res.json(json)
 | 
						|
  }
 | 
						|
 | 
						|
  async getEbookPage(req, res) {
 | 
						|
    if (isNullOrNaN(req.params.page)) {
 | 
						|
      return res.status(400).send('Invalid page params')
 | 
						|
    }
 | 
						|
    const isDev = req.query.dev == 1
 | 
						|
    const pageIndex = Number(req.params.page)
 | 
						|
    const page = await this.eBookManager.getBookPage(req.libraryItem, req.user, pageIndex, isDev)
 | 
						|
    if (!page) {
 | 
						|
      return res.status(500).send('Failed to get page')
 | 
						|
    }
 | 
						|
 | 
						|
    res.send(page)
 | 
						|
  }
 | 
						|
 | 
						|
  async getEbookResource(req, res) {
 | 
						|
    if (!req.query.path) {
 | 
						|
      return res.status(400).send('Invalid query path')
 | 
						|
    }
 | 
						|
    const isDev = req.query.dev == 1
 | 
						|
    this.eBookManager.getBookResource(req.libraryItem, req.user, req.query.path, isDev, res)
 | 
						|
  }
 | 
						|
 | 
						|
  middleware(req, res, next) {
 | 
						|
    const item = this.db.libraryItems.find(li => li.id === req.params.id)
 | 
						|
    if (!item || !item.media) return res.sendStatus(404)
 | 
						|
 | 
						|
    // Check user can access this library item
 | 
						|
    if (!req.user.checkCanAccessLibraryItem(item)) {
 | 
						|
      return res.sendStatus(403)
 | 
						|
    }
 | 
						|
 | 
						|
    if (!item.isBook || !item.media.ebookFile) {
 | 
						|
      return res.status(400).send('Invalid ebook library item')
 | 
						|
    }
 | 
						|
 | 
						|
    req.libraryItem = item
 | 
						|
    next()
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = new EBookController() |