28 lines
		
	
	
		
			1020 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			1020 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| """OAuth Base views"""
 | |
| from typing import Optional, Type
 | |
| 
 | |
| from django.http.request import HttpRequest
 | |
| 
 | |
| from passbook.sources.oauth.clients.base import BaseOAuthClient
 | |
| from passbook.sources.oauth.clients.oauth1 import OAuthClient
 | |
| from passbook.sources.oauth.clients.oauth2 import OAuth2Client
 | |
| from passbook.sources.oauth.models import OAuthSource
 | |
| 
 | |
| 
 | |
| # pylint: disable=too-few-public-methods
 | |
| class OAuthClientMixin:
 | |
|     "Mixin for getting OAuth client for a source."
 | |
| 
 | |
|     request: HttpRequest  # Set by View class
 | |
| 
 | |
|     client_class: Optional[Type[BaseOAuthClient]] = None
 | |
| 
 | |
|     def get_client(self, source: OAuthSource, **kwargs) -> BaseOAuthClient:
 | |
|         "Get instance of the OAuth client for this source."
 | |
|         if self.client_class is not None:
 | |
|             # pylint: disable=not-callable
 | |
|             return self.client_class(source, self.request, **kwargs)
 | |
|         if source.request_token_url:
 | |
|             return OAuthClient(source, self.request, **kwargs)
 | |
|         return OAuth2Client(source, self.request, **kwargs)
 | 
