Add support for creating contacts from "interesting" friends on LinkedIn. Completes...
[hermes] / package / src / org / maemo / hermes / engine / linkedin / provider.py
1 import gnome.gconf
2 import gobject, gtk, hildon
3 import time, thread
4 import webbrowser
5 from org.maemo.hermes.engine.provider_oauth import OAuthProvider
6 import org.maemo.hermes.engine.linkedin.service
7 from org.maemo.hermes.engine.linkedin.api import LinkedInApi
8
9 class Provider(OAuthProvider):
10     """LinkedIn provider for Hermes. 
11
12        Copyright (c) Andrew Flegg <andrew@bleb.org> 2010.
13        Released under the Artistic Licence."""
14
15     LI_API_URL = "https://api.linkedin.com"
16
17     REQUEST_TOKEN_URL = LI_API_URL + "/uas/oauth/requestToken"
18     AUTHORIZE_URL = LI_API_URL + "/uas/oauth/authorize"
19     ACCESS_TOKEN_URL = LI_API_URL + "/uas/oauth/accessToken"
20
21
22     # -----------------------------------------------------------------------
23     def __init__(self):
24         OAuthProvider.__init__(self)
25         self._api = LinkedInApi(self.consumer, self.make_api_request)
26
27
28     # -----------------------------------------------------------------------
29     def get_name(self):
30         """Return the display name of this service. An icon, of with the lower-case,
31            all-alphabetic version of this name is expected to be provided."""
32            
33         return 'LinkedIn'
34     
35     
36     # -----------------------------------------------------------------------
37     def get_urls(self):
38         """Return the various URLs needed for OAuth."""
39            
40         return (self.REQUEST_TOKEN_URL, self.ACCESS_TOKEN_URL, self.AUTHORIZE_URL)
41
42
43     # -----------------------------------------------------------------------
44     def additional_prefs(self, dialog):
45         self._checkbox = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
46         self._checkbox.set_label(_('Import new contacts'))
47         self._checkbox.set_active(self._gc.get_bool('/apps/maemo/hermes/linkedin_create_new'))
48         
49         dialog.vbox.add(self._checkbox)
50         dialog.vbox.add(gtk.Label(""))
51
52
53     # -----------------------------------------------------------------------
54     def handle_prefs_response(self, result):
55         self._gc.set_bool('/apps/maemo/hermes/linkedin_create_new', self._checkbox.get_active())
56         self._checkbox = None
57
58     
59     # -----------------------------------------------------------------------
60     def service(self, gui_callback):
61         """Return the service backend."""
62            
63         return org.maemo.hermes.engine.linkedin.service.Service(self.get_id(), self._api, self._gc.get_bool('/apps/maemo/hermes/linkedin_create_new'))
64
65
66     # -----------------------------------------------------------------------
67     def verify_verifier(self, access_token):
68         return self._api.verify_verifier(access_token)