Пример #1
0
class RequestHandler(object):

    def __init__(self, app):
        self.__app = app
        self.__htmlHandler = HtmlRequestHandler(app)
        self.__opdsHandler = OpdsRequestHandler(app, Jinja2Loader())

    def index_handler(self, user_agent):
        if self.__is_opds_browser(user_agent):
            return self.__opdsHandler.index_handler()
        else:
            return self.__htmlHandler.index_handler()

    def by_title_handler(self, user_agent):
        if self.__is_opds_browser(user_agent):
            return self.__opdsHandler.by_title_handler()

    def first_letter_handler(self, user_agent, first_letter):
        if self.__is_opds_browser(user_agent):
            return self.__opdsHandler.first_letter_handler(first_letter)
        else:
            return self.__htmlHandler.first_letter_handler(first_letter)

    def book_handler(self, user_agent, book_id):
        if self.__is_opds_browser(user_agent):
            return self.__opdsHandler.book_handler(book_id)
        else:
            return self.__htmlHandler.book_handler(book_id)

    def download_handler(self, user_agent, book_id, book_format):
        if self.__is_opds_browser(user_agent):
            return self.__opdsHandler.download_handler(book_id, book_format)

    def search_handler(self, user_agent, search_term):
        if self.__is_opds_browser(user_agent):
            return self.__opdsHandler.search_handler(search_term)
        else:
            return self.__htmlHandler.search_handler(search_term)

    def harvest_handler(self):
        return self.__htmlHandler.harvest_handler()

    def set_html_request_handler(self, handler):
        self.__htmlHandler = handler

    def set_opds_request_handler(self, handler):
        self.__opdsHandler = handler

    @staticmethod
    def __is_opds_browser(user_agent):
        #Stanza iPhone/Aldiko/Moon+ Reader(Android)t.app)
        return user_agent.find("Aldiko") > -1
Пример #2
0
 def initialise_html_request_handler(self):
     self.__h = HtmlRequestHandler(self.app)
     self.__h.set_search_handler(self.__search_handler)
     self.__h.set_book_handler(self.__book_handler)
     self.__h.set_first_letter_handler(self.__first_letter_handler)
     self.__h.set_index_handler(self.__index_handler)
     self.__h.set_download_handler(self.__download_handler)
Пример #3
0
class TestHtmlRequestHandler(RequestHandlerTestBase):

    def setUp(self):
        self.initialise_app_mock()
        self.initialise_search_handler_mock()
        self.initialise_book_handler_mock()
        self.initialise_first_letter_handler_mock()
        self.initialise_index_handler_mock()
        self.initialise_download_handler_mock()
        self.initialise_html_request_handler()

    def initialise_app_mock(self):
        RequestHandlerTestBase.initialise_app_mock(self)
        self.app.harvest_books = Mock(return_value=None)

    def initialise_search_handler_mock(self):
        self.__search_handler = HtmlRequestHandlerSearch(self.app)
        self.__search_handler.handle = Mock()

    def initialise_book_handler_mock(self):
        self.__book_handler = HtmlRequestHandlerBook(self.app)
        self.__book_handler.handle = Mock()

    def initialise_first_letter_handler_mock(self):
        self.__first_letter_handler = HtmlRequestHandlerFirstLetter(self.app)
        self.__first_letter_handler.handle = Mock()

    def initialise_index_handler_mock(self):
        self.__index_handler = HtmlRequestHandlerIndex(self.app)
        self.__index_handler.handle = Mock()

    def initialise_download_handler_mock(self):
        self.__download_handler = HtmlRequestHandlerDownload(self.app)
        self.__download_handler.handle = Mock()

    def initialise_html_request_handler(self):
        self.__h = HtmlRequestHandler(self.app)
        self.__h.set_search_handler(self.__search_handler)
        self.__h.set_book_handler(self.__book_handler)
        self.__h.set_first_letter_handler(self.__first_letter_handler)
        self.__h.set_index_handler(self.__index_handler)
        self.__h.set_download_handler(self.__download_handler)

    def test_search_handler_calls_search_handler_object(self):
        self.__h.search_handler("searchTerm")
        self.assert_called(self.__search_handler.handle)

    def test_harvest_handler_calls_harvest_books(self):
        self.__h.harvest_handler()
        self.assert_called(self.app.harvest_books)

    def test_book_handler_calls_book_handler_object(self):
        self.__h.book_handler("1")
        self.assert_called(self.__book_handler.handle)

    def test_download_handler_calls_download_handler_object(self):
        self.__h.download_handler(None, None)
        self.assert_called(self.__download_handler.handle)

    def test_first_letter_calls_first_letter_handler_object(self):
        self.__h.first_letter_handler("T")
        self.assert_called(self.__first_letter_handler.handle)

    def test_index_calls_index_handler_object(self):
        self.__h.index_handler()
        self.assert_called(self.__index_handler.handle)
Пример #4
0
 def __init__(self, app):
     self.__app = app
     self.__htmlHandler = HtmlRequestHandler(app)
     self.__opdsHandler = OpdsRequestHandler(app, Jinja2Loader())