def use_project(self, project_id): """Creates an instance of [ProjectClient](#projectclient), providing session authentication. Parameters: * `project_id` - project identifier. Returns: Instance of [ProjectClient](#projectclient) with session authentication. Example: ```python client = Client('deform.io') session_client = client.auth( 'session', client.user.login('*****@*****.**', 'password') ) session_client.use_project('some-project-id') ``` """ return ProjectClient( base_uri=get_base_uri(project=project_id, host=self.host, port=self.port, secure=self.secure, api_base_path=self.api_base_path), auth_header=self.auth_header, requests_session=self.requests_session, request_defaults=self.request_defaults, )
def setUp(self): super(DeformBaseURITestCaseMixin, self).setUp() self.DEFORM_BASE_URI = get_base_uri( host=self.CONFIG['DEFORM']['HOST'], api_base_path=self.CONFIG['DEFORM']['API_BASE_PATH'], port=self.CONFIG['DEFORM']['PORT'], secure=self.CONFIG['DEFORM']['SECURE'], )
def test_me(self): response = self.deform_session_auth_client.use_project('some-project') assert_that(response, instance_of(ProjectClient)) assert_that( response.base_uri, equal_to(get_base_uri( project='some-project', host=self.deform_session_auth_client.host, port=self.deform_session_auth_client.port, secure=self.deform_session_auth_client.secure, api_base_path=self.deform_session_auth_client.api_base_path )) ) assert_that( response.auth_header, equal_to(self.deform_session_auth_client.auth_header) )
def test_me(self): api_base_path = self.CONFIG['DEFORM']['API_BASE_PATH'] experiments = [ { 'kwargs': { 'host': 'deform.io', 'api_base_path': api_base_path }, 'expected': uri_join('https://deform.io/', api_base_path) }, { 'kwargs': { 'host': 'deform.io', 'project': 'mysquare', 'api_base_path': api_base_path }, 'expected': uri_join( 'https://mysquare.deform.io/', api_base_path ) }, { 'kwargs': { 'host': 'deform.io', 'port': 123, 'api_base_path': api_base_path }, 'expected': uri_join('https://deform.io:123/', api_base_path) }, { 'kwargs': { 'host': 'deform.io', 'secure': False, 'api_base_path': api_base_path }, 'expected': uri_join('http://deform.io/', api_base_path) }, ] for exp in experiments: assert_that( get_base_uri(**exp['kwargs']), equal_to(exp['expected']) )
def __init__(self, host, port=None, secure=True, requests_session=None, request_defaults=None, api_base_path='/api/'): self.host = host self.port = port self.secure = secure self.requests_session = requests_session or requests.Session() self.request_defaults = request_defaults self.api_base_path = api_base_path self.user = NonAuthUserResource(base_uri=get_base_uri( host=self.host, port=self.port, secure=self.secure, api_base_path=self.api_base_path), auth_header=None, requests_session=self.requests_session, request_defaults=self.request_defaults)
def __init__(self, auth_header, host, port, secure, requests_session, request_defaults, api_base_path): self.host = host self.port = port self.secure = secure self.requests_session = requests_session self.request_defaults = request_defaults self.auth_header = auth_header self.api_base_path = api_base_path self.base_uri = get_base_uri(host=self.host, port=self.port, secure=self.secure, api_base_path=self.api_base_path) resource_kwargs = { 'base_uri': self.base_uri, 'auth_header': auth_header, 'requests_session': requests_session, 'request_defaults': request_defaults } self.user = SessionUserResource(**resource_kwargs) self.projects = ProjectListResource(**resource_kwargs) self.project = ProjectOneResource(**resource_kwargs)
def auth(self, auth_type, auth_key, project_id=None): """Creates authenticated client. Parameters: * `auth_type` - Authentication type. Use `session` for auth by session key. Use `token` for auth by token. * `auth_key` - Authentication `session key` or `token`. * `project_id` - Project identifier. Must be provided for `token` authentication. Default is `None`. Returns: * Instance of [SessionAuthClient](#sessionauthclient) if `auth_type` is `session`. * Instance of [ProjectClient](#projectclient) if `auth_type` is `token` Raises: * ValueError: if `project_id` parameter was not provided Examples: For auth with `session` you should obtain session key by [Client.user.login](#clientuserlogin) providing your account's email and password: ```python client = Client(host='deform.io') session_client = client.auth( 'session', client.user.login( email='*****@*****.**', password='******' ), ) print session_client <pydeform.client.SessionAuthClient object at 0x10c585650> ``` Authentication with `token` example: ```python client = Client(host='deform.io') token_client = client.auth( 'token', auth_key='token-value', project_id='some-project', ) print token_client <pydeform.client.ProjectClient object at 0x11c585650> ``` """ if auth_type == 'session': return SessionAuthClient( auth_header=get_session_http_auth_header(auth_key), host=self.host, port=self.port, secure=self.secure, requests_session=self.requests_session, request_defaults=self.request_defaults, api_base_path=self.api_base_path, ) elif auth_type == 'token': if not project_id: msg = 'You should provide project_id for token authentication' raise ValueError(msg) return ProjectClient( base_uri=get_base_uri(project=project_id, host=self.host, port=self.port, secure=self.secure, api_base_path=self.api_base_path), auth_header=get_token_http_auth_header(auth_key), requests_session=self.requests_session, request_defaults=self.request_defaults, )