brynq-sdk-imanage 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,10 @@
1
+ Metadata-Version: 1.0
2
+ Name: brynq_sdk_imanage
3
+ Version: 1.0.2
4
+ Summary: Imanage wrapper from BrynQ
5
+ Home-page: UNKNOWN
6
+ Author: BrynQ
7
+ Author-email: support@brynq.com
8
+ License: BrynQ License
9
+ Description: Imanage wrapper from BrynQ
10
+ Platform: UNKNOWN
@@ -0,0 +1,79 @@
1
+ import requests
2
+ import json
3
+ from typing import List, Union
4
+ from brynq_sdk_brynq import BrynQ
5
+
6
+
7
+ from typing import List, Union
8
+ import requests
9
+
10
+ class IManage(BrynQ):
11
+ def __init__(self, interface_id:str,system_type:str='source', debug: bool = False):
12
+ super().__init__()
13
+ self.debug = debug
14
+ self.credentials = self.interfaces.credentials.get(interface_id=interface_id, system='i-manage', system_type=system_type)
15
+ self.customer_name = self.subdomain.lower()
16
+ self.imanage_url = f'https://cloudimanage.com'
17
+ self.customer_id, self.customer_url = self._get_customer_id_and_url()
18
+
19
+
20
+ def __get_headers(self):
21
+ return {
22
+ 'X-Auth-Token': f'{self.credentials["data"]["access_token"]}'
23
+ }
24
+
25
+ def _get_customer_id_and_url(self):
26
+ headers = self.__get_headers()
27
+ url = f'{self.imanage_url}/api'
28
+ response = requests.get(url, headers=headers)
29
+ response.raise_for_status()
30
+ if self.debug:
31
+ print(response.text)
32
+ data = response.json()
33
+
34
+ # Extract customer_id as before
35
+ customer_id = data['data']['user']['customer_id']
36
+ customer_id = str(customer_id)
37
+
38
+ v2_versions = []
39
+
40
+ # Loop through the versions to find 'v2' versions
41
+ versions = data['data']['versions']
42
+ for version in versions:
43
+ if version['name'] == 'v2':
44
+ version_number = version['version'] # This should be a string like '2.1.1160'
45
+ version_url = version['url']
46
+ v2_versions.append((version_number, version_url))
47
+
48
+ # Sort the v2 versions by their version number in descending order to get the newest version first
49
+ v2_versions.sort(key=lambda x: [int(part) for part in x[0].split('.')], reverse=True)
50
+
51
+ # If there are any v2 versions, select the newest one
52
+ if v2_versions:
53
+ customer_url = v2_versions[0][1] # The URL of the newest v2 version
54
+ else:
55
+ # Raise an exception if no v2 version is found
56
+ raise Exception("No 'v2' version found for the customer.")
57
+
58
+ return customer_id, customer_url
59
+
60
+ def get_all_users(self):
61
+ headers = self.__get_headers()
62
+ limit = 100
63
+ offset = 0
64
+ users = []
65
+ payload = {}
66
+ while True:
67
+ url = f'{self.customer_url}/customers/{self.customer_id}/users?require_role=true&limit={limit}&offset={offset}&total=true'
68
+ response = requests.get(url, headers=headers, data = payload)
69
+ response.raise_for_status()
70
+ if self.debug:
71
+ print(response.text)
72
+ data = response.json()
73
+ users.extend(data['data'])
74
+ if offset >= data['total_count']:
75
+ break
76
+ offset += limit
77
+ return users
78
+
79
+
@@ -0,0 +1,10 @@
1
+ Metadata-Version: 1.0
2
+ Name: brynq-sdk-imanage
3
+ Version: 1.0.2
4
+ Summary: Imanage wrapper from BrynQ
5
+ Home-page: UNKNOWN
6
+ Author: BrynQ
7
+ Author-email: support@brynq.com
8
+ License: BrynQ License
9
+ Description: Imanage wrapper from BrynQ
10
+ Platform: UNKNOWN
@@ -0,0 +1,8 @@
1
+ setup.py
2
+ brynq_sdk_imanage/__init__.py
3
+ brynq_sdk_imanage.egg-info/PKG-INFO
4
+ brynq_sdk_imanage.egg-info/SOURCES.txt
5
+ brynq_sdk_imanage.egg-info/dependency_links.txt
6
+ brynq_sdk_imanage.egg-info/not-zip-safe
7
+ brynq_sdk_imanage.egg-info/requires.txt
8
+ brynq_sdk_imanage.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ brynq-sdk-brynq>=2
2
+ pandas<3.0.0,>=2.2.0
@@ -0,0 +1 @@
1
+ brynq_sdk_imanage
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,17 @@
1
+ from setuptools import setup, find_namespace_packages
2
+
3
+ setup(
4
+ name='brynq_sdk_imanage',
5
+ version='1.0.2',
6
+ description='Imanage wrapper from BrynQ',
7
+ long_description='Imanage wrapper from BrynQ',
8
+ author='BrynQ',
9
+ author_email='support@brynq.com',
10
+ packages=find_namespace_packages(include=['brynq_sdk*']),
11
+ license='BrynQ License',
12
+ install_requires=[
13
+ 'brynq-sdk-brynq>=2',
14
+ 'pandas>=2.2.0,<3.0.0',
15
+ ],
16
+ zip_safe=False,
17
+ )