@@ -0,0 +1,1088 @@
+import foauth.providers%0Afrom foauth import OAuthDenied%0A%0A%0Aclass Elance(foauth.providers.OAuth2):%0A    # General info about the provider%0A    provider_url = 'https://www.elance.com/'%0A    docs_url = 'https://www.elance.com/q/api2'%0A    category = 'Career'%0A%0A    # URLs to interact with the API%0A    authorize_url = 'https://api.elance.com/api2/oauth/authorize'%0A    access_token_url = 'https://api.elance.com/api2/oauth/token'%0A    api_domain = 'api.elance.com'%0A%0A    available_permissions = %5B%0A        (None, 'access and manage your Elance account'),%0A    %5D%0A%0A    bearer_type = foauth.providers.BEARER_URI%0A%0A    def parse_token(self, content):%0A        return super(Elance, self).parse_token(content)%5Bu'data'%5D%0A%0A    def callback(self, data, *args, **kwargs):%0A        if data.get('error') == 'access_denied':%0A            raise OAuthDenied('Denied access to Elance')%0A%0A        return super(Elance, self).callback(data, *args, **kwargs)%0A%0A    def get_user_id(self, key):%0A        r = self.api(key, self.api_domain, u'/api2/profiles/my')%0A        return unicode(r.json()%5Bu'data'%5D%5Bu'providerProfile'%5D%5Bu'userId'%5D)%0A

Add support for Elance