Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
weboob
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
178
Issues
178
List
Boards
Labels
Milestones
Merge Requests
49
Merge Requests
49
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
weboob
weboob
Commits
4fda0965
Commit
4fda0965
authored
Jul 05, 2020
by
Vincent A
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[bouygues] implement CapMessagesPost
parent
58bd6532
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
2 deletions
+34
-2
modules/bouygues/browser.py
modules/bouygues/browser.py
+10
-0
modules/bouygues/module.py
modules/bouygues/module.py
+9
-2
modules/bouygues/pages.py
modules/bouygues/pages.py
+15
-0
No files found.
modules/bouygues/browser.py
View file @
4fda0965
...
...
@@ -30,6 +30,7 @@ from weboob.tools.compat import urlparse, parse_qsl
from
.pages
import
(
LoginPage
,
ForgottenPasswordPage
,
AppConfigPage
,
SubscriberPage
,
SubscriptionPage
,
SubscriptionDetail
,
DocumentPage
,
DocumentDownloadPage
,
DocumentFilePage
,
SendSMSPage
,
)
...
...
@@ -57,6 +58,9 @@ class BouyguesBrowser(LoginBrowser):
documents_page
=
URL
(
r'/comptes-facturation/(?P<id_account>\d+)/factures(\?|$)'
,
DocumentPage
)
document_download_page
=
URL
(
r'/comptes-facturation/(?P<id_account>\d+)/factures/.*(\?|$)'
,
DocumentDownloadPage
)
send_sms
=
URL
(
r'https://www.secure.bbox.bouyguestelecom.fr/services/SMSIHD/sendSMS.phtml'
,
SendSMSPage
)
confirm_sms
=
URL
(
r'https://www.secure.bbox.bouyguestelecom.fr/services/SMSIHD/resultSendSMS.phtml'
)
def
__init__
(
self
,
username
,
password
,
lastname
,
*
args
,
**
kwargs
):
super
(
BouyguesBrowser
,
self
)
.
__init__
(
username
,
password
,
*
args
,
**
kwargs
)
self
.
lastname
=
lastname
...
...
@@ -130,3 +134,9 @@ class BouyguesBrowser(LoginBrowser):
def
download_document
(
self
,
document
):
if
document
.
url
:
return
self
.
location
(
document
.
url
,
headers
=
self
.
headers
)
.
content
@
need_login
def
post_message
(
self
,
receivers
,
content
):
self
.
send_sms
.
go
()
self
.
page
.
post_message
(
receivers
,
content
)
self
.
confirm_sms
.
open
()
# no params: stateful?!
modules/bouygues/module.py
View file @
4fda0965
...
...
@@ -19,10 +19,10 @@
from
__future__
import
unicode_literals
from
weboob.tools.backend
import
Module
,
BackendConfig
from
weboob.capabilities.base
import
find_object
from
weboob.capabilities.bill
import
CapDocument
,
Document
,
SubscriptionNotFound
,
Subscription
,
DocumentNotFound
from
weboob.capabilities.messages
import
CapMessagesPost
from
weboob.tools.value
import
Value
,
ValueBackendPassword
from
.browser
import
BouyguesBrowser
...
...
@@ -31,7 +31,7 @@ from .browser import BouyguesBrowser
__all__
=
[
'BouyguesModule'
]
class
BouyguesModule
(
Module
,
CapDocument
):
class
BouyguesModule
(
Module
,
CapDocument
,
CapMessagesPost
):
NAME
=
'bouygues'
DESCRIPTION
=
'Bouygues Télécom'
MAINTAINER
=
'Florian Duguet'
...
...
@@ -66,3 +66,10 @@ class BouyguesModule(Module, CapDocument):
if
not
isinstance
(
document
,
Document
):
document
=
self
.
get_document
(
document
)
return
self
.
browser
.
download_document
(
document
)
def
post_message
(
self
,
message
):
receivers
=
message
.
receivers
if
not
receivers
:
assert
message
.
thread
receivers
=
[
message
.
thread
.
id
]
self
.
browser
.
post_message
(
receivers
,
message
.
content
)
modules/bouygues/pages.py
View file @
4fda0965
...
...
@@ -144,3 +144,18 @@ class DocumentFilePage(LoggedPage, RawPage):
# since url of this file is almost the same than url of DocumentDownloadPage (which is a JsonPage)
# we have to define it to avoid mismatching
pass
class
SendSMSPage
(
LoggedPage
,
HTMLPage
):
def
post_message
(
self
,
receivers
,
content
):
form
=
self
.
get_form
(
name
=
'formSMS'
)
quota_text
=
CleanText
(
'.//strong'
)(
form
.
el
)
quota
=
int
(
re
.
search
(
r'(\d+) SMS gratuit'
,
quota_text
)[
1
])
self
.
logger
.
info
(
'quota:
%
d messages left'
,
quota
)
if
not
quota
:
raise
Exception
(
'quota exceeded'
)
form
[
'fieldMsisdn'
]
=
';'
.
join
(
receivers
)
form
[
'fieldMessage'
]
=
content
form
.
submit
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment