MicroStrategy ONE

Stellen Sie unter Verwendung eines Workstation-Identitätstokens eine Verbindung mit MicroStrategy her

Die mstrio-py Die Python-Bibliothek bietet a Verbindungsmodul, um eine Sitzung mit dem Intelligence Server zu initiieren. Es unterstützt die Standard- und LDAP-Authentifizierungsmodi.

Um die Sitzung zu starten, müssen Sie die URL zum MicroStrategy-REST-API-Server, die Projekt-ID, den Benutzernamen und das Kennwort einfügen.

Kopieren
from mstrio.connection import Connection

base_url = "https://your-microstrategy-server.com/MicroStrategyLibrary/api"
mstr_username = "Username"
mstr_password = "Password"
project_id = "PROJECT_ID"
conn = Connection(base_url, mstr_username, mstr_password, project_id=project_id)

In Workstation ausgeführte Skripts können geändert werden, um auf die globale Variable zuzugreifen workstationData und verwenden Sie das Identitätstoken der Umgebung, in dem es aktuell gespeichert ist. Wenn Sie die Sitzung auf diese Weise initiieren, müssen Benutzer die URL zum MicroStrategy-REST-API-Server und ihre Anmeldeinformationen nicht mehr in das Skript einfügen.

Kopieren
import requests
from typing import Union
from mstrio.connection import Connection
from requests.cookies import RequestsCookieJar

def get_connection(workstation_data: dict, project_id: str = None,
                   project_name: str = None) -> Union[Connection, None]:
    """Get connection based on data saved in memory of Workstation. It is
    possible to provide 'project_id' or 'project_name' to select project.
    
    When both `project_id` and `project_name` are `None`, project selection
    is cleared. When both `project_id` and `project_name` are provided,
    `project_name` is ignored.
    
    Project can be also selected later by calling function 'select_project'
    on Connection object.
    
    Args:
        workstation_data (object): object which is stored in a 'workstationData'
            variable within Workstation
        project_id (str, optional): id of project to select
        project_name (str, optional): name of project to select
        
    Returns:
        connection to I-Server or None is case of some error
    """
    
    try:
        print('Creating connection from Workstation Data object...', flush=True)
        # get base url from Workstation Data object
        base_url = workstation_data['defaultEnvironment']['url']
        # get headers from Workstation Data object
        headers = workstation_data['defaultEnvironment']['headers']
        # get cookies from Workstation Data object
        cookies = workstation_data['defaultEnvironment']['cookies']
        # prepare cookies for request
        jar = RequestsCookieJar()
        for c in cookies:
            cookie_values = {'domain': '', 'path': '/'}
            cookie_values.update(c)
            jar.set(cookie_values['name'], cookie_values['value'],
                    domain=cookie_values['domain'], path=cookie_values['path'])
    except Exception as e:
        print('Some error occurred while preparing data to get identity token:')
        print(e)
        return None
    # get identity token
    r = requests.post(base_url + 'api/auth/identityToken', headers=headers, cookies=jar)
    if r.ok:
        # create connection to I-Server
        return Connection(base_url, identity_token=r.headers['X-MSTR-IdentityToken'],
                          project_id=project_id, project_name=project_name)
    else:
        print('HTTP %i - %s, Message %s' % (r.status_code, r.reason, r.text), flush=True)
        return None
    
# get connection without selecting project
# conn = get_connection(workstationData)
# select project for connection
# conn.select_project(project_id = mstr_tutorial_id, project_name)
# get connection and select project (you can use id or name of project)

mstr_tutorial_id = 'B7CA92F04B9FAE8D941C3E9B7E0CD754'
mstr_tutorial_name = 'MicroStrategy Tutorial'

conn = get_connection(workstation_data=workstationData, project_id=mstr_tutorial_id)