Sample codes in Python
The following are the sample codes in Python to download the BI view.
def download(view_name, field_list, page_number, page_size, output_type, client_id, all_pages,
from_page, to_page, from_date, to_date, retry_interval,
retry_attempt, use_token, output, max_pages, directory):
"""Download bi view"""
if page_number is not None:
from_page = page_number
to_page = page_number
o_start = time.time()
request_id = use_token
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["Page Number",
"Duration", "Attempt", "Response Code"]
end_point_host = "https://my-tenant.revprooncloud.com/api"
for pg in range(from_page, to_page + 1):
from os import system, name
p_start = time.time()
import requests
token, _ = get_token()
if request_id is not None:
headers = {'Token': token,
'continuation-token': request_id}
else:
headers = {'Token': token}
params = []
params.append(make_query_param("clientId", client_id))
params.append(make_query_param("fromDate", from_date))
params.append(make_query_param("toDate", to_date))
params.append(make_query_param("pagenum", pg))
params.append(make_query_param("pageSize", page_size))
params.append(make_query_param("outputType", output_type))
if max_pages is not None:
params.append(make_query_param("max_pages", max_pages))
query_string = ""
for a in params:
query_string = query_string + a + "&"
url = end_point_host + \
'/integration/v2/biviews/{0}?{1}'.format(view_name, query_string)
import jsonpickle
field = []
if field_list is not None:
field = field_list.split(",")
post_response = requests.get(url, data=jsonpickle.encode(field), headers=headers)
attempt = 1
if post_response.status_code != 200:
if "Page still not yet cached" in post_response.text:
for _ in range(1, retry_attempt):
attempt = attempt + 1
time.sleep(retry_interval)
post_response = requests.get(
end_point_host + '/integration/v2/biviews/{0}?{1}'.format(view_name, query_string), headers=headers)
if post_response.status_code == 200:
break
if post_response.status_code != 400:
print("Stopping.")
break
if request_id is None:
if 'continuation_token' in post_response.headers:
request_id = post_response.headers.get('continuation_token')
print("Continuation Token: {0}".format(request_id))
else:
print('No Token found!')
p_end = time.time()
elapsed = round(p_end - p_start)
if output == "file" and directory is not None:
write_to_file(directory, pg, post_response.text)
x.add_row([pg, elapsed, attempt, post_response.status_code])
print(x)
print("Continuation Token: {0}".format(request_id))
if post_response.status_code != 200:
print("Stopping. Code: {0}".format(post_response.status_code))
break
o_end = time.time()
elapsed = round(o_end - o_start)
x.add_row(["Total", elapsed, '', ''])
print(x)
print("Continuation Token: {0}".format(request_id))
