/modules/freemobile/module.py
https://github.com/laurentb/weboob · Python · 93 lines · 57 code · 19 blank · 17 comment · 5 complexity · c27e588461ee0c8f422d6d5cfb9e3502 MD5 · raw file
- # -*- coding: utf-8 -*-
- # Copyright(C) 2012-2014 Florent Fourcot
- #
- # This file is part of a weboob module.
- #
- # This weboob module is free software: you can redistribute it and/or modify
- # it under the terms of the GNU Lesser General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- #
- # This weboob module is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU Lesser General Public License for more details.
- #
- # You should have received a copy of the GNU Lesser General Public License
- # along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
- from weboob.capabilities.bill import DocumentTypes, CapDocument, Subscription, Bill, SubscriptionNotFound, DocumentNotFound
- from weboob.capabilities.profile import CapProfile
- from weboob.capabilities.messages import CantSendMessage, CapMessages, CapMessagesPost
- from weboob.capabilities.base import find_object
- from weboob.tools.backend import Module, BackendConfig
- from weboob.tools.value import ValueBackendPassword
- from .browser import Freemobile
- __all__ = ['FreeMobileModule']
- class FreeMobileModule(Module, CapDocument, CapMessages, CapMessagesPost, CapProfile):
- NAME = 'freemobile'
- MAINTAINER = u'Florent Fourcot'
- EMAIL = 'weboob@flo.fourcot.fr'
- VERSION = '2.1'
- LICENSE = 'LGPLv3+'
- DESCRIPTION = 'Free Mobile website'
- CONFIG = BackendConfig(ValueBackendPassword('login',
- label='Account ID',
- masked=False,
- regexp='^(\d{8}|)$'),
- ValueBackendPassword('password',
- label='Password')
- )
- BROWSER = Freemobile
- accepted_document_types = (DocumentTypes.BILL,)
- def create_default_browser(self):
- return self.create_browser(self.config['login'].get(),
- self.config['password'].get())
- def iter_subscription(self):
- return self.browser.get_subscription_list()
- def get_subscription(self, _id):
- return find_object(self.iter_subscription(), id=_id, error=SubscriptionNotFound)
- def iter_documents_history(self, subscription):
- if not isinstance(subscription, Subscription):
- subscription = self.get_subscription(subscription)
- return self.browser.get_history(subscription)
- def get_document(self, _id):
- subid = _id.split('.')[0]
- subscription = self.get_subscription(subid)
- return find_object(self.iter_documents(subscription), id=_id, error=DocumentNotFound)
- def iter_documents(self, subscription):
- if not isinstance(subscription, Subscription):
- subscription = self.get_subscription(subscription)
- return self.browser.iter_documents(subscription)
- def get_details(self, subscription):
- if not isinstance(subscription, Subscription):
- subscription = self.get_subscription(subscription)
- return self.browser.get_details(subscription)
- def download_document(self, bill):
- if not isinstance(bill, Bill):
- bill = self.get_document(bill)
- return self.browser.open(bill.url).content
- def post_message(self, message):
- if not message.content.strip():
- raise CantSendMessage(u'Message content is empty.')
- return self.browser.post_message(message)
- def get_profile(self):
- return self.browser.get_profile()