From 5b508ca340c83ad2859efd87a98ce32c2795f8a0 Mon Sep 17 00:00:00 2001 From: Roger Philibert Date: Thu, 22 Mar 2012 02:32:47 +0100 Subject: [PATCH] [okc] Initial message posting --- modules/okc/backend.py | 10 ++++------ modules/okc/browser.py | 24 +++++++----------------- modules/okc/pages.py | 7 +++++++ 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/modules/okc/backend.py b/modules/okc/backend.py index 1e2dd27a..011eab13 100644 --- a/modules/okc/backend.py +++ b/modules/okc/backend.py @@ -42,7 +42,6 @@ from .browser import OkCBrowser __all__ = ['OkCBackend'] - def parse_dt(s): now = datetime.datetime.now() if u'–' in s: @@ -62,8 +61,7 @@ def parse_dt(s): d = _parse_dt(s) return local2utc(d) -class OkCBackend(BaseBackend, ICapMessages, ICapContact): - #, ICapMessagesPost, ICapContact): +class OkCBackend(BaseBackend, ICapMessages, ICapContact, ICapMessagesPost): NAME = 'okc' MAINTAINER = 'Roger Philibert' EMAIL = 'roger.philibert@gmail.com' @@ -223,9 +221,9 @@ class OkCBackend(BaseBackend, ICapMessages, ICapContact): # ---- ICapMessagesPost methods --------------------- - #def post_message(self, message): - # with self.browser: - # self.browser.post_mail(message.thread.id, message.content) + def post_message(self, message): + with self.browser: + self.browser.post_mail(message.thread.id, message.content) # ---- ICapContact methods --------------------- diff --git a/modules/okc/browser.py b/modules/okc/browser.py index c8278aa1..6f531d6d 100644 --- a/modules/okc/browser.py +++ b/modules/okc/browser.py @@ -32,7 +32,7 @@ except ImportError: from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword, BrowserUnavailable from weboob.tools.ordereddict import OrderedDict -from .pages import LoginPage, ThreadPage, MessagesPage, ProfilePage, PhotosPage +from .pages import LoginPage, ThreadPage, MessagesPage, PostMessagePage, ProfilePage, PhotosPage __all__ = ['OkCBrowser'] @@ -47,6 +47,7 @@ class OkCBrowser(BaseBrowser): PAGES = OrderedDict(( ('https://%s/login.*' % DOMAIN, LoginPage), ('http://%s/messages' % DOMAIN, ThreadPage), + ('http://%s/messages\?compose=1' % DOMAIN, PostMessagePage), ('http://%s/messages\?.*' % DOMAIN, MessagesPage), ('http://%s/profile/.*/photos' % DOMAIN, PhotosPage), ('http://%s/profile/[^/]*' % DOMAIN, ProfilePage), @@ -151,22 +152,11 @@ class OkCBrowser(BaseBrowser): break return mails - #@check_login - #@url2id - #def post_mail(self, id, content): - # new_content = u'' - # for c in content: - # try: - # new_content += '&%s;' % codepoint2name[ord(c)] - # except KeyError: - # new_content += c - - # content = new_content.replace('\n', '\r\n').encode('Windows-1252', 'replace') - - # try: - # self.api_request('message', 'new', data={'memberId': id, 'message': content}) - # except AuMException, e: - # raise CantSendMessage(unicode(e)) + @check_login + def post_mail(self, id, content): + self.location(self.absurl('/messages?compose=1')) + content = content.replace('\n', '\r\n').encode('Windows-1252', 'replace') + self.page.post_mail(id, content) #@check_login #@url2id diff --git a/modules/okc/pages.py b/modules/okc/pages.py index 10addeb0..57a7e0cd 100644 --- a/modules/okc/pages.py +++ b/modules/okc/pages.py @@ -134,3 +134,10 @@ class PhotosPage(BasePage): def get_photos(self): imgs = self.parser.select(self.document.getroot(), "//div[@class='pic clearfix']//img", method='xpath') return [img.get('src') for img in imgs] + +class PostMessagePage(BasePage): + def post_mail(self, id, content): + self.browser.select_form(name='f2') + self.browser['r1'] = id + self.browser['body'] = content + self.browser.submit()