Skip to main content
Glama
cycodehq
by cycodehq
get_api_client.py2.99 kB
from typing import TYPE_CHECKING, Optional, Union import click from cycode.cli.user_settings.credentials_manager import CredentialsManager from cycode.cyclient.client_creator import create_import_sbom_client, create_report_client, create_scan_client if TYPE_CHECKING: import typer from cycode.cyclient.import_sbom_client import ImportSbomClient from cycode.cyclient.report_client import ReportClient from cycode.cyclient.scan_client import ScanClient def _get_cycode_client( create_client_func: callable, client_id: Optional[str], client_secret: Optional[str], hide_response_log: bool, id_token: Optional[str] = None, ) -> Union['ScanClient', 'ReportClient']: if client_id and id_token: return create_client_func(client_id, None, hide_response_log, id_token) if not client_id or not id_token: oidc_client_id, oidc_id_token = _get_configured_oidc_credentials() if oidc_client_id and oidc_id_token: return create_client_func(oidc_client_id, None, hide_response_log, oidc_id_token) if oidc_id_token and not oidc_client_id: raise click.ClickException('Cycode client id needed for OIDC authentication.') if not client_id or not client_secret: client_id, client_secret = _get_configured_credentials() if not client_id: raise click.ClickException('Cycode client id needed.') if not client_secret: raise click.ClickException('Cycode client secret is needed.') return create_client_func(client_id, client_secret, hide_response_log, None) def get_scan_cycode_client(ctx: 'typer.Context') -> 'ScanClient': client_id = ctx.obj.get('client_id') client_secret = ctx.obj.get('client_secret') id_token = ctx.obj.get('id_token') hide_response_log = not ctx.obj.get('show_secret', False) return _get_cycode_client(create_scan_client, client_id, client_secret, hide_response_log, id_token) def get_report_cycode_client(ctx: 'typer.Context', hide_response_log: bool = True) -> 'ReportClient': client_id = ctx.obj.get('client_id') client_secret = ctx.obj.get('client_secret') id_token = ctx.obj.get('id_token') return _get_cycode_client(create_report_client, client_id, client_secret, hide_response_log, id_token) def get_import_sbom_cycode_client(ctx: 'typer.Context', hide_response_log: bool = True) -> 'ImportSbomClient': client_id = ctx.obj.get('client_id') client_secret = ctx.obj.get('client_secret') id_token = ctx.obj.get('id_token') return _get_cycode_client(create_import_sbom_client, client_id, client_secret, hide_response_log, id_token) def _get_configured_credentials() -> tuple[str, str]: credentials_manager = CredentialsManager() return credentials_manager.get_credentials() def _get_configured_oidc_credentials() -> tuple[Optional[str], Optional[str]]: credentials_manager = CredentialsManager() return credentials_manager.get_oidc_credentials()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cycodehq/cycode-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server