-import org.maemo.hermes.engine.provider
+import gnome.gconf
+import gobject, gtk, hildon
+import time, thread
+import webbrowser
+from org.maemo.hermes.engine.provider_oauth import OAuthProvider
import org.maemo.hermes.engine.linkedin.service
+from org.maemo.hermes.engine.linkedin.api import LinkedInApi
-class Provider(org.maemo.hermes.engine.provider.Provider):
+class Provider(OAuthProvider):
"""LinkedIn provider for Hermes.
Copyright (c) Andrew Flegg <andrew@bleb.org> 2010.
Released under the Artistic Licence."""
+ LI_API_URL = "https://api.linkedin.com"
+
+ REQUEST_TOKEN_URL = LI_API_URL + "/uas/oauth/requestToken"
+ AUTHORIZE_URL = LI_API_URL + "/uas/oauth/authorize"
+ ACCESS_TOKEN_URL = LI_API_URL + "/uas/oauth/accessToken"
+
+
+ # -----------------------------------------------------------------------
+ def __init__(self):
+ OAuthProvider.__init__(self)
+ self._api = LinkedInApi(self.consumer, self.make_api_request)
+
+
# -----------------------------------------------------------------------
def get_name(self):
"""Return the display name of this service. An icon, of with the lower-case,
# -----------------------------------------------------------------------
- def has_preferences(self):
- """Whether or not this provider has any preferences. If it does not,
- open_preferences must NOT be called; as the behaviour is undetermined."""
+ def get_urls(self):
+ """Return the various URLs needed for OAuth."""
- return True
-
-
+ return (self.REQUEST_TOKEN_URL, self.ACCESS_TOKEN_URL, self.AUTHORIZE_URL)
+
+
# -----------------------------------------------------------------------
- def open_preferences(self, parent):
- """Open the preferences for this provider as a child of the 'parent' widget."""
+ def additional_prefs(self, dialog):
+ self._checkbox = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
+ self._checkbox.set_label(_('Import new contacts'))
+ self._checkbox.set_active(self._gc.get_bool('/apps/maemo/hermes/linkedin_create_new'))
+
+ dialog.vbox.add(self._checkbox)
+ dialog.vbox.add(gtk.Label(""))
- print "Err, open preferences. OK. Err, right. Hmm."
- # FIXME: do auth:
- # get request token
- # get auth token
- # open browser to have user allow data access
- # user inputs the 5 char
+
+ # -----------------------------------------------------------------------
+ def handle_prefs_response(self, result):
+ self._gc.set_bool('/apps/maemo/hermes/linkedin_create_new', self._checkbox.get_active())
+ self._checkbox = None
# -----------------------------------------------------------------------
def service(self, gui_callback):
"""Return the service backend."""
- return org.maemo.hermes.engine.linkedin.service.Service()
+ return org.maemo.hermes.engine.linkedin.service.Service(self.get_id(), self._api, self._gc.get_bool('/apps/maemo/hermes/linkedin_create_new'))
+
+
+ # -----------------------------------------------------------------------
+ def verify_verifier(self, access_token):
+ return self._api.verify_verifier(access_token)