Hopefully testing and fixes for forwarding numbers for GrandCentral
[gc-dialer] / tests / gc_samples / generate_gc_samples.py
1 #!/usr/bin/env python
2
3 import os
4 import urllib
5 import urllib2
6 import traceback
7 import warnings
8
9 import sys
10 sys.path.append("../../src")
11
12 import browser_emu
13 import gc_backend
14
15 webpages = [
16         ("forward", gc_backend.GCDialer._forwardselectURL),
17         ("login", gc_backend.GCDialer._loginURL),
18         ("setforward", gc_backend.GCDialer._setforwardURL),
19         ("clicktocall", gc_backend.GCDialer._clicktocallURL),
20         ("recent", gc_backend.GCDialer._inboxallURL),
21         ("contacts", gc_backend.GCDialer._contactsURL),
22         ("contactdetails", gc_backend.GCDialer._contactDetailURL),
23 ]
24
25
26 # Create Browser
27 browser = browser_emu.MozillaEmulator(1)
28 cookieFile = os.path.join(".", ".gc_cookies.txt")
29 browser.cookies.filename = cookieFile
30
31 # Get Pages
32 for name, url in webpages:
33         try:
34                 page = browser.download(url)
35         except StandardError, e:
36                 print e.message
37                 continue
38         with open("not_loggedin_%s.txt" % name, "w") as f:
39                 f.write(page)
40
41 # Login
42 username = sys.argv[1]
43 password = sys.argv[2]
44
45 loginPostData = urllib.urlencode({
46         'Email' : username,
47         'Passwd' : password,
48         'service': "grandcentral",
49         "ltmpl": "mobile",
50         "btmpl": "mobile",
51         "PersistentCookie": "yes",
52 })
53
54 try:
55         loginSuccessOrFailurePage = browser.download(gc_backend.GCDialer._loginURL, loginPostData)
56 except urllib2.URLError, e:
57         warnings.warn(traceback.format_exc())
58         raise RuntimeError("%s is not accesible" % gc_backend.GCDialer._loginURL)
59
60 forwardPage = browser.download(gc_backend.GCDialer._forwardselectURL)
61
62 tokenGroup = gc_backend.GCDialer._accessTokenRe.search(forwardPage)
63 if tokenGroup is None:
64         print forwardPage
65         raise RuntimeError("Could not extract authentication token from GrandCentral")
66 token = tokenGroup.group(1)
67
68 # Get Pages
69 for name, url in webpages:
70         try:
71                 page = browser.download(url)
72         except StandardError, e:
73                 warnings.warn(traceback.format_exc())
74                 continue
75         print "Writing to file"
76         with open("loggedin_%s.txt" % name, "w") as f:
77                 f.write(page)