Skip to content

Commit 1d14bce

Browse files
Code Optimized
1 parent 1c4eb48 commit 1d14bce

File tree

4 files changed

+57
-80
lines changed

4 files changed

+57
-80
lines changed

.talismanrc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,11 @@ fileignoreconfig:
2727
checksum: 7c278a3b24fdcf01a30561326fbdadf45dffd52edcbbe421d192c360dc4be1e1
2828
- filename: contentstack_management/stack/stack.py
2929
checksum: 480b855afcc96875ce49f4da6cb433e0ba10183e1b73297c2d1c66565602ff0b
30+
version: ""
31+
32+
fileignoreconfig:
33+
- filename: contentstack_management/core/client.py
34+
checksum: 253a6e6a0234745cd5d194f6023d207acfb0259a8751d77c67fb8275a723d551
35+
- filename: contentstack_management/user_session/user_session.py
36+
checksum: 8f8353a3f658cd894fce7bee1d0211a612b18a639d1f8006548e89a5f5e32a17
3037
version: ""

contentstack_management/core/client.py

Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from ..organizations.organizations import Organization
99
from ..users.user import User
1010
from ..stack.stack import Stack
11+
import http.cookiejar
1112

1213
from ..user_session.user_session import UserSession
1314

@@ -110,53 +111,26 @@ def _call_request(self, method, url_path, headers=None, params=None, data=None,
110111
else:
111112
return None
112113

113-
114-
115114
def login(self, email=None, password=None):
116-
if email is None or email == '':
117-
raise PermissionError(
118-
'You are not permitted to the stack without valid email id')
119-
120-
if password is None or password == '':
121-
raise PermissionError(
122-
'You are not permitted to the stack without valid password')
123-
124-
url = "user-session"
125-
data = {
126-
"user": {
127-
"email": email,
128-
"password": password
129-
130-
}
131-
}
132-
data = json.dumps(data)
133115
self.api_client = ApiClient(
134116
host=self.host, endpoint=self.endpoint, authtoken=self.authtoken,
135117
headers=self.headers, authorization=self.authorization,
136118
timeout=self.timeout, failure_retry=self.failure_retry, exceptions=self.exceptions, errors=self.errors,
137119
max_requests=self.max_requests, retry_on_error=self.retry_on_error
138120
)
139-
140-
response = UserSession(url = url,headers = self.headers, data = data, api_client=self.api_client, endpoint=self.endpoint).login()
141-
if response.status_code == 200:
142-
self.auth_token = self.get_authtoken(response.json())
143-
return response
144-
return response.status_code
145-
146-
147-
def logout(self):
148-
url = "user-session"
149-
self.headers['authtoken'] = self.auth_token
150-
response = UserSession(url = url,headers = self.headers, api_client = self.api_client, endpoint=self.endpoint).logout()
121+
response = UserSession(username=email, password= password, api_client=self.api_client).login()
122+
self.auth_token = self.get_authtoken(response.json()) if response.status_code == 200 else self.authtoken
151123
return response
152-
124+
125+
def logout(self):
126+
return UserSession(api_client = self.api_client).logout()
127+
153128
def get_authtoken(self, response):
154-
return response['user']['authtoken']
129+
return response['user']['authtoken']
155130

156131
def user(self):
157132
return User(self.endpoint, self.auth_token, self.headers,self.api_client)
158133

159-
160134
def organizations(self, organization_uid = None):
161135
return Organization(self.endpoint, self.auth_token, self.headers,self.api_client, organization_uid)
162136

contentstack_management/user_session/user_session.py

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
import http.cookiejar
33
import urllib.request
44
import contentstack_management
5+
import json
6+
import http.cookies as cookies
7+
from http.server import BaseHTTPRequestHandler, HTTPServer
58

69

710
class UserSession:
@@ -12,51 +15,44 @@ class UserSession:
1215
methods each correspond to the CRUD
1316
operations that can be performed on the API """
1417

15-
def __init__(self, url = None, headers=None, data=None, api_client=None, endpoint=None):
16-
self.data = data
17-
self.url = url
18-
self.headers = headers
18+
def __init__(self, username=None, password = None, api_client=None):
19+
self.headers = api_client.headers
1920
self.api_client = api_client
20-
self.endpoint= endpoint
21+
self.endpoint= api_client.endpoint
22+
self.email = username
23+
self.password = password
24+
self.authtoken = api_client.authtoken
25+
2126

2227

2328

2429
def login(self):
25-
response = self.api_client._call_request('POST', self.url, headers=self.headers, params=None, data=self.data, json_data=None)
26-
if response.status_code == 200:
27-
response_dict = response.json()
28-
token = response_dict['user']['authtoken']
29-
if token:
30-
# Create a CookieJar
31-
cookie_jar = http.cookiejar.CookieJar()
32-
# Set a cookie
33-
cookie = cookie_jar.set_cookie(http.cookiejar.Cookie(
34-
version=0,
35-
name='auth_token',
36-
value=token,
37-
port=None,
38-
port_specified=False,
39-
domain=self.endpoint,
40-
domain_specified=True,
41-
domain_initial_dot=False,
42-
path='/',
43-
path_specified=True,
44-
secure=False,
45-
expires=None,
46-
discard=False,
47-
comment=None,
48-
comment_url=None,
49-
rest=None,
50-
rfc2109=False,
51-
))
52-
return response
30+
if self.email is None or self.email == '':
31+
raise PermissionError(
32+
'You are not permitted to the stack without valid email id')
33+
34+
if self.password is None or self.password == '':
35+
raise PermissionError(
36+
'You are not permitted to the stack without valid password')
37+
38+
url = "user-session"
39+
data = {
40+
"user": {
41+
"email": self.email,
42+
"password": self.password
5343

44+
}
45+
}
46+
data = json.dumps(data)
47+
response = self.api_client.post(url, headers = self.headers, data = data, json_data=None)
48+
self.auth_token = self.get_authtoken(response.json()) if response.status_code == 200 else self.authtoken
5449
return response
5550

56-
def logout(self):
57-
58-
response = self.api_client._call_request('DELETE', self.url, headers=self.headers, params=None, data=self.data, json_data=None)
59-
if response.status_code == 200:
60-
return response.json()
51+
def logout(self):
52+
url = "user-session"
53+
self.headers['authtoken']=self.auth_token
54+
response = self.api_client.delete(url, headers=self.headers, params=None, json_data=None)
6155
return response
6256

57+
def get_authtoken(self, response):
58+
return response['user']['authtoken']

tests/test_organizations.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,51 @@ def setUp(self):
1616
def test_organization_get(self):
1717
response = self.client.organizations().get()
1818
self.assertEqual(response.status_code, 200)
19-
self.assertEqual(response.request.url, "https://api.contentstack.io/v3/organizations")
19+
self.assertEqual(response.request.url, f"{self.client.endpoint}/organizations")
2020
self.assertEqual(response.request.method, "GET")
2121

2222

2323
def test_get_organization(self):
2424
response = self.client.organizations(config.organization.org_uid).get()
2525
self.assertEqual(response.status_code, 200)
26-
self.assertEqual(response.request.url, f"https://api.contentstack.io/v3/organizations/{config.organization.org_uid}")
26+
self.assertEqual(response.request.url, f"{self.client.endpoint}/organizations/{config.organization.org_uid}")
2727
self.assertEqual(response.request.method, "GET")
2828

2929
def test_get_organizations(self):
3030
response = self.client.organizations().get()
3131
self.assertEqual(response.status_code, 200)
32-
self.assertEqual(response.request.url, f"https://api.contentstack.io/v3/organizations")
32+
self.assertEqual(response.request.url, f"{self.client.endpoint}/organizations")
3333
self.assertEqual(response.request.method, "GET")
3434

3535
def test_get_organization_roles(self):
3636
response = self.client.organizations(config.organization.org_uid).get_organization_roles()
3737
self.assertEqual(response.status_code, 200)
38-
self.assertEqual(response.request.url, f"https://api.contentstack.io/v3/organizations/{config.organization.org_uid}/roles")
38+
self.assertEqual(response.request.url, f"{self.client.endpoint}/organizations/{config.organization.org_uid}/roles")
3939
self.assertEqual(response.request.method, "GET")
4040

4141
def test_organization_add_users(self):
4242
response = self.client.organizations(config.organization.org_uid).organization_add_users()
4343
self.assertEqual(response.status_code, 200)
44-
self.assertEqual(response.request.url, f"https://api.contentstack.io/v3/organizations/{config.organization.org_uid}/share")
44+
self.assertEqual(response.request.url, f"{self.client.endpoint}/organizations/{config.organization.org_uid}/share")
4545
self.assertEqual(response.request.method, "GET")
4646

4747
def test_transfer_organizations_ownership(self):
4848
data = {"transfer_to": "abc@sample.com"}
4949
response= self.client.organizations(config.organization.org_uid).transfer_organizations_ownership(json.dumps(data))
5050
self.assertEqual(response.status_code, 400)
51-
self.assertEqual(response.request.url, f"https://api.contentstack.io/v3/organizations/{config.organization.org_uid}/transfer-ownership")
51+
self.assertEqual(response.request.url, f"{self.client.endpoint}/organizations/{config.organization.org_uid}/transfer-ownership")
5252
self.assertEqual(response.request.method, "POST")
5353

5454
def test_organization_stacks(self):
5555
response = self.client.organizations(config.organization.org_uid).organization_stacks()
5656
self.assertEqual(response.status_code, 200)
57-
self.assertEqual(response.request.url, f"https://api.contentstack.io/v3/organizations/{config.organization.org_uid}/stacks")
57+
self.assertEqual(response.request.url, f"{self.client.endpoint}/organizations/{config.organization.org_uid}/stacks")
5858
self.assertEqual(response.request.method, "GET")
5959

6060
def test_organization_logs(self):
6161
response = self.client.organizations(config.organization.org_uid).organization_logs()
6262
self.assertEqual(response.status_code, 200)
63-
self.assertEqual(response.request.url, f"https://api.contentstack.io/v3/organizations/{config.organization.org_uid}/logs")
63+
self.assertEqual(response.request.url, f"{self.client.endpoint}/organizations/{config.organization.org_uid}/logs")
6464
self.assertEqual(response.request.method, "GET")
6565

6666

0 commit comments

Comments
 (0)