Skip to content

Commit 1ba4832

Browse files
committed
finished provider api
1 parent 57e2f2b commit 1ba4832

1 file changed

Lines changed: 186 additions & 1 deletion

File tree

ThreadFixProApi/Networks/_utils/_provider.py

Lines changed: 186 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,189 @@ def __init__(self, host, api_key, verify_ssl, timeout, headers, user_agent, cert
2121
the private key and the certificate) or as a tuple of both file’s path
2222
:param debug: Prints requests and responses, useful for debugging.
2323
"""
24-
super().__init__(host, api_key, verify_ssl, timeout, headers, user_agent, cert, debug)
24+
super().__init__(host, api_key, verify_ssl, timeout, headers, user_agent, cert, debug)
25+
26+
def create_new_provider_type(self, name):
27+
"""
28+
Creates a new type of provider with provided name
29+
:param name: Name of new provider type
30+
"""
31+
params = { 'name' : name }
32+
return super().request('POST', '/api/provider/types', params=params)
33+
34+
def fetch_all_provider_types(self, page=1, limit=50, href=None):
35+
"""
36+
Fetches all provider types one page at a time of limit
37+
:param page: The page of the provider types to get (optional if you have href)
38+
:param limit: The amount of provider types per page
39+
:param href: The link to the next page in the system from a previous call
40+
"""
41+
# If href (calling another page gives an href tag for next page in line)
42+
if href:
43+
return super().request('GET', '/api/provider' + href)
44+
# First call
45+
return super().request('GET', f'/api/provider/types?_page={page}&_limit={limit}')
46+
47+
def find_provider_type_by_id(self, provider_type_id):
48+
"""
49+
Gets a specific provider type by id.
50+
:param provider_type_id: ID of the provider type to get
51+
"""
52+
return super().request('GET', f'/api/provider/types/{provider_type_id}')
53+
54+
def update_existing_provider_type(self, provider_type_id, name):
55+
"""
56+
Updates an existing provider
57+
:param provider_type_id: ID of the provider type to change
58+
:param name: Name to update to
59+
"""
60+
params = { 'name' : name }
61+
return super().request('PUT', f'/api/provider/types/{provider_type_id}', params=params)
62+
63+
def delete_provider_type(self, provider_type_id):
64+
"""
65+
Deletes a specific provider type
66+
:param provider_type_id: ID of the provider type to delete
67+
"""
68+
return super().request('DELETE', f'/api/provider/types/{provider_type_id}')
69+
70+
def add_provider(self, name, provider_type, authentication_values):
71+
"""
72+
Creates a new provider
73+
:param name: Name of provider
74+
:param provider_type: Type of provider
75+
:param authentication_values: Authentication Values (array of objects)
76+
"""
77+
params = { 'name' : name, 'providerType' : provider_type, 'authenticationValues' : authentication_values}
78+
return super().request('POST', '/api/provider/scanners', params=params)
79+
80+
def get_all_providers(self, page=1, limit=50, href=None):
81+
"""
82+
Fetches all provider one page at a time of limit
83+
:param page: The page of the provider types to get (optional if you have href)
84+
:param limit: The amount of provider types per page
85+
:param href: The link to the next page in the system from a previous call
86+
"""
87+
# If href (calling another page gives an href tag for next page in line)
88+
if href:
89+
return super().request('GET', '/api/provider' + href)
90+
# First call
91+
return super().request('GET', f'/api/provider/scanners?_page={page}&_limit={limit}')
92+
93+
def find_provider_by_id(self, provider_id):
94+
"""
95+
Gets a provider by its ID
96+
:param provider_id: ID of provider to get
97+
"""
98+
return super().request('GET', f'/api/provider/scanners/{provider_id}')
99+
100+
def update_existing_provider(self, provider_id, name, provider_type, authentication_values):
101+
"""
102+
Updates an existing provider
103+
:param provider_id: ID of provider to get
104+
:param name: Name of provider
105+
:param provider_type: Type of provider
106+
:param authentication_values: Authentication Values (array of objects)
107+
"""
108+
params = { 'name' : name, 'providerType' : provider_type, 'authenticationValues' : authentication_values}
109+
return super().request('PUT', f'/api/provider/scanners/{provider_id}', params=params)
110+
111+
def delete_provider_by_id(self, provider_id):
112+
"""
113+
Deletes a provider by its ID
114+
:param provider_id: ID of provider to delete
115+
"""
116+
return super().request('DELETE', f'/api/provider/scanners/{provider_id}')
117+
118+
def add_scheduler(self, provider_id, frequency, schedule_type, name=None, schedule_time=None, cron_expression=None):
119+
"""
120+
Creates a new scheduler for scans
121+
:param provider_id: ID of provider to connect scheduler to
122+
:param frequency: frequency of scans
123+
:param schedule_type: What action occurs on scheduler scan or import
124+
:param name: Name of scheduler
125+
:param schedule_time: Time to do scan or import
126+
:param cron_expression: Cron expression representing when to do scan or import
127+
"""
128+
params = { 'providerId' : provider_id, 'frequency' : frequency, 'scheduleType' : schedule_type }
129+
if name:
130+
params['name'] = name
131+
if schedule_time:
132+
params['scheduleTime'] = schedule_time
133+
if cron_expression:
134+
params['cronExpression'] = cron_expression
135+
return super().request('POST', '/api/provider/schedulers', params=params)
136+
137+
def get_all_scheduled_requests(self, page=1, limit=50, href=None, schedule_type=None):
138+
"""
139+
Fetches all provider one page at a time of limit
140+
:param page: The page of the provider types to get (optional if you have href)
141+
:param limit: The amount of provider types per page
142+
:param href: The link to the next page in the system from a previous call
143+
:param schedule_type: The type of schedule to find
144+
"""
145+
params = {}
146+
if schedule_type:
147+
params['scheduleType'] = schedule_type
148+
# If href (calling another page gives an href tag for next page in line)
149+
if href:
150+
return super().request('GET', '/api/provider' + href, params=params)
151+
# First call
152+
return super().request('GET', f'/api/provider/schedulers?_page={page}&_limit={limit}', params=params)
153+
154+
def find_scheduler_by_id(self, scheduler_id):
155+
"""
156+
Gets a scheduler by its ID
157+
:param scheduler_id: ID of scheduler to get
158+
"""
159+
return super().request('GET', f'/api/provider/schedulers/{scheduler_id}')
160+
161+
def update_existing_scheduler(self, scheduler_id, provider_id, frequency, schedule_type, id=None, dataset_id=None, created_date=None, modified_date=None, name=None,
162+
schedule_time=None, cron_expression=None, day_of_week=None, day_of_month=None, month=None, last_scheduled_run=None, next_scheduled_run=None,
163+
network_ids=None):
164+
"""
165+
Updates an existing scheduler for scans
166+
:param scheduler_id: ID of scheduler to update
167+
:param provider_id: ID of provider to connect scheduler to
168+
:param frequency: frequency of scans
169+
:param schedule_type: What action occurs on scheduler scan or import
170+
:param name: Name of scheduler
171+
:param schedule_time: Time to do scan or import
172+
:param cron_expression: Cron expression representing when to do scan or import
173+
"""
174+
params = { 'providerId' : provider_id, 'frequency' : frequency, 'scheduleType' : schedule_type }
175+
if id:
176+
params['id'] = id
177+
if dataset_id:
178+
params['datasetId'] = dataset_id
179+
if created_date:
180+
params['createdDate'] = created_date
181+
if modified_date:
182+
params['modifiedDate'] = modified_date
183+
if name:
184+
params['name'] = name
185+
if schedule_time:
186+
params['scheduleTime'] = schedule_time
187+
if cron_expression:
188+
params['cronExpression'] = cron_expression
189+
if day_of_week:
190+
params['dayOfTheWeek'] = day_of_week
191+
if day_of_month:
192+
params['dayOfTheMonth'] = day_of_month
193+
if month:
194+
params['month'] = month
195+
if last_scheduled_run:
196+
params['lastScheduledRun'] = last_scheduled_run
197+
if next_scheduled_run:
198+
params['nextScheduledRun'] = next_scheduled_run
199+
if network_ids:
200+
params['networkIds'] = network_ids
201+
return super().request('PUT', f'/api/provider/schedulers/{scheduler_id}', params=params)
202+
203+
204+
def delete_scheduler(self, scheduler_id):
205+
"""
206+
Deletes a scheduler by its ID
207+
:param scheduler_id: ID of scheduler to delete
208+
"""
209+
return super().request('DELETE', f'/api/provider/schedulers/{scheduler_id}')

0 commit comments

Comments
 (0)