12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import base64
- import requests
- import pandas as pd
- import jinja2
- class ca_webscraper:
- webservice = "http://192.168.2.64:9300/bi/v1/"
- credentials = '{"parameters":[{"name":"CAMNamespace","value":"CognosEx"},{"name":"h_CAM_action","value":"logonAs"},{"name":"CAMUsername","value":"Global1"},{"name":"CAMPassword","value":"Cognos#11"}]}'
- caf = ""
- cam = ""
- def generate_token(self, message_base64):
- version = "V1".encode("utf-8")
- header_len = 4
- msg = base64.b64decode(message_base64)[1:]
- chunks = []
- while len(msg) >= header_len:
- chunk_len = int.from_bytes(msg[:header_len], byteorder="little")
- msg = msg[header_len:]
- chunks.append(msg[:chunk_len])
- msg = msg[chunk_len:]
- return base64.b64encode(version + chunks[-1]).decode("utf-8")
- def login(self):
- self.session = requests.Session()
-
- headers = {'content-type': "application/json"}
- r = self.session.post(self.webservice + "login", data=self.credentials, headers=headers)
- self.caf = r.json()['cafContextId']
- self.cam = self.generate_token(r.cookies["usersessionid"])
- return r.status_code
- def report_list(self):
- r = self.session.get(self.webservice + "users/_tilde_/mrus")
- df = pd.DataFrame(r.json()[0]['list'])
- df['report'] = df['formatedPath'].replace(">", "+") + " + " + df['defaultName'].replace("/", "-")
- self.reports = df
- return self.reports
- def export(self, report, format="PDF"):
- prompt = "false" if (format == "PDF") else "true"
- env = jinja2.Environment(
- loader=jinja2.PackageLoader('pytasks', 'templates'),
- autoescape=jinja2.select_autoescape(['html', 'xml'])
- )
-
- template = env.get_template('get-report.xml')
- soap = template.render({"caf": self.caf, "cam": self.cam,
- "report": report, "format": format,
- "prompt": prompt, "tracking": ""})
- with open("logs/F.01.request.xml", "w") as f:
- f.write(soap)
- return soap
- def admin(self):
- r = self.session.get(self.webservice + "disp?m_p_owner=&changed_m_p_owner=0&changed_genprop=0&so.select=&so.return.m=portal%2Fproperties_general.xts&so.defaultLocation=&so.defaultObject=&ro_name=false&origDefLang=de&m_email=&m_defaultName=&m_t_default_name_de=CARLO_F_Belege&m_t_default_description_de=&m_t_default_screenTip_de=&ifrmcmd=save&m_p_disabled=false&m_p_hidden=false&icon_radio=standard&m_transloc=de&pty_activeLang=de&pty_deactivLang=&pty_del=&pty_add=&pty_name=CARLO_F_Belege&pty_scrt=&pty_desc=&m_new_class=&b_action=xts.run&sharedPagesChanged=&from_tool=true&backURL=%2Fbi%2Fv1%2Fdisp%3Fb_action%3Dxts.run%26m%3Dportal%2Flegacy_tools%2Ftools_directory.xts%26m_pathID%3Di339AF66BADEC411E943590402582B75B%26m_path%3DCAMID%28%2522%253a%2522%29%252fdataSource%255b%2540name%253d%2527CARLO_F_Belege%2527%255d%26tool_tab%3Dd&m_selectedPage=&m_classSubtype=&m_obj=CAMID%28%22%3A%22%29%2FdataSource%5B%40name%3D%27CARLO_F_Belege%27%5D%2FdataSourceConnection%5B%40name%3D%27CARLO_F_Belege%27%5D&b_report_type=&encoding=UTF-8&m=portal%2Fproperties_connection.xts&m_class=dataSourceConnection&m_name=CARLO_F_Belege&ui.cafcontextid=CAFW000000a0Q0FGQTYwMDAwMDAwMDlBaFFBQUFERWpZV1g4bEExbmlJd29ualF1cEgwWVVTeGtnY0FBQUJUU0VFdE1qVTJJQUFBQUxha3gqeHQ5TXN3Ukw2dGhjMTJVRzN1NVhaMWVzNU5FLXRvWXI1VzlwYTE0NDI0NzN8cHM_&m_path=CAMID%28%22%3A%22%29%2FdataSource%5B%40name%3D%27CARLO_F_Belege%27%5D&cmd=&m_location=&reportLocation=&ps_nav_op=maintain&ps_nav_stack=&ps_nav_source=portal%2Fproperties_general.xts")
- print(r.cookies.keys())
- if __name__ == '__main__':
- caws = ca_webscraper()
- caws.login()
- caws.admin()
|