Skip to content

Digit client py #699

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: digit-client-py
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
accelerators/digit_client/digit_client/services/__pycache__
accelerators/digit_client/digit_client/models/__pycache__
accelerators/digit_client/digit_client/__pycache__
accelerators/authenticate/__pycache__
accelerators/digit_client/dist
accelerators/digit_client/tests/__pycache__
accelerators/digit_client/digit_client/__pycache__
accelerators/digit_client/build
accelerators/digit_client/build/lib
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
if current_dir not in sys.path:
sys.path.insert(0, current_dir)

from .auth import DigitAuth
from auth import DigitAuth

def get_user_choice():
print("\n=== DIGIT Client Authentication ===")
Expand Down
155 changes: 105 additions & 50 deletions accelerators/digit_client/build/lib/digit_client/__init__.py
Original file line number Diff line number Diff line change
@@ -1,52 +1,107 @@
# __init__.py for digit_client package
import os
import sys
from pathlib import Path
"""
DIGIT Client Library for Python
"""

# Store auth file in the package directory instead of home
PACKAGE_DIR = os.path.dirname(os.path.abspath(__file__))
AUTH_FILE = os.path.join(PACKAGE_DIR, '.digit_client_auth')
__version__ = "0.1.0"

def check_auth():
"""Check if authentication has been done"""
try:
return os.path.exists(AUTH_FILE)
except Exception:
return False

def perform_auth():
"""Perform authentication"""
try:
# Ensure we import from the correct path
# sys.path.insert(0, os.path.dirname(PACKAGE_DIR))
from digit_client.pre_install import main as auth_main

success, access_token = auth_main()
if success and access_token:
# Create auth file after successful authentication
try:
# with open(AUTH_FILE, 'w') as f:
# f.write(access_token)
return True
except Exception as e:
print(f"Failed to create auth file: {e}")
return False
return False
except Exception as e:
print(f"Authentication error: {e}")
return False

print("Initializing DIGIT Client...")
# Check authentication on import
if not check_auth():
print("\nAuthentication required for DIGIT Client")
if not perform_auth():
print("Authentication failed. Package cannot be used.")
sys.exit(1)
print("Authentication successful!")

# Only import DigitAuth after successful authentication
from .auth import DigitAuth

__version__ = '0.1'
__all__ = ['DigitAuth']
from .api_client import APIClient
from .config import Config
from .services import AuthenticationService, UserService, MDMSService, MDMSV2Service, AuthorizeService, WorkflowV2Service
from .request_config import RequestConfig, RequestInfo, RequestInfoBuilder
from .models.citizen_user import CitizenUser, Role, CitizenUserBuilder
from .models.search_models import UserSearchModel, UserSearchModelBuilder
from .models.user import User,UserBuilder
from .models.auth import AuthenticationRequest, AuthenticationRequestBuilder
from .models.mdms import (
MdmsCriteriaReq,
MdmsCriteriaReqBuilder,
MdmsCriteria,
MdmsCriteriaBuilder,
ModuleDetail,
ModuleDetailBuilder,
MasterDetail,
MasterDetailBuilder
)
from .models.mdms_v2 import (
SchemaDefinition,
SchemaDefinitionBuilder,
SchemaDefCriteria,
SchemaDefCriteriaBuilder,
AuditDetails,
AuditDetailsBuilder,
Mdms,
MdmsBuilder,
MdmsCriteriaV2,
MdmsCriteriaV2Builder,
)
from .models.workflow import (
Document,
DocumentBuilder,
WorkflowAction,
WorkflowActionBuilder,
State,
StateBuilder,
ProcessInstance,
ProcessInstanceBuilder,
ProcessInstanceSearchCriteria,
ProcessInstanceSearchCriteriaBuilder,
)
from .models.AuthorizationRequest import AuthorizationRequest, AuthorizationRequestBuilder, Role, RoleBuilder
from .models.ActionRequest import ActionRequest, ActionBuilder, ActionRequestBuilder, Action
__all__ = [
'APIClient',
'Config',
'AuthenticationService',
'UserService',
'MDMSService',
'MDMSV2Service',
'AuthorizeService',
'WorkflowV2Service',
'RequestConfig',
'RequestInfo',
'RequestInfoBuilder',
'CitizenUser',
'Role',
'UserSearchModel',
'UserSearchModelBuilder',
'User',
'UserBuilder',
'CitizenUserBuilder',
'AuthenticationRequest',
'AuthenticationRequestBuilder',
'MdmsCriteriaReq',
'MdmsCriteriaReqBuilder',
'MdmsCriteria',
'MdmsCriteriaBuilder',
'ModuleDetail',
'ModuleDetailBuilder',
'MasterDetail',
'MasterDetailBuilder',
'SchemaDefinition',
'SchemaDefinitionBuilder',
'SchemaDefCriteria',
'SchemaDefCriteriaBuilder',
'AuditDetails',
'AuditDetailsBuilder',
'Mdms',
'MdmsBuilder',
'MdmsCriteriaV2',
'MdmsCriteriaV2Builder',
'AuthorizationRequest',
'AuthorizationRequestBuilder',
'Role',
'RoleBuilder',
'ActionRequest',
'ActionBuilder',
'ActionRequestBuilder',
'WorkflowAction',
'WorkflowActionBuilder',
'Document',
'DocumentBuilder',
'State',
'StateBuilder',
'ProcessInstance',
'ProcessInstanceBuilder',
'ProcessInstanceSearchCriteria',
'ProcessInstanceSearchCriteriaBuilder',
]
33 changes: 30 additions & 3 deletions accelerators/digit_client/build/lib/digit_client/api_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,36 @@ def get(self, endpoint, params=None):
response = requests.get(f"{self.base_url}/{endpoint}", headers=headers, params=params)
return response.json()

def post(self, endpoint, json_data):
headers = {'Authorization': f'Bearer {self.auth_token}'}
response = requests.post(f"{self.base_url}/{endpoint}", headers=headers, json=json_data)
def post(self, endpoint, json_data=None, data=None, additional_headers=None, params=None):
"""
Make a POST request

Args:
endpoint (str): API endpoint
json_data (dict, optional): JSON data to send
data (dict, optional): Form data to send
additional_headers (dict, optional): Additional headers to include
params (dict, optional): Query parameters to include in the URL

Returns:
dict: Response JSON
"""
# headers = {'Authorization': f'Bearer {self.auth_token}'}
headers = {'Content-Type': 'application/json'}
if additional_headers:
headers.update(additional_headers)
print(headers)
print(json_data)
print(data)
print(params)

response = requests.post(
f"{self.base_url}/{endpoint}",
headers=headers,
json=json_data if json_data is not None else None,
data=data if data is not None else None,
params=params if params is not None else None
)
return response.json()

# Add more HTTP methods as needed
14 changes: 12 additions & 2 deletions accelerators/digit_client/build/lib/digit_client/config.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
class Config:
API_ENDPOINT = "https://example.com/api" # Set your API endpoint
AUTH_TOKEN = "your_auth_token" # Set your authentication token
API_ENDPOINT = "https://sandbox.digit.org" # Sandbox API endpoint
AUTH_TOKEN = None # Will be set during runtime

@classmethod
def set_auth_token(cls, token: str):
"""Set the authentication token for API requests"""
cls.AUTH_TOKEN = token

@classmethod
def set_api_endpoint(cls, endpoint: str):
"""Set the API endpoint (useful for switching between environments)"""
cls.API_ENDPOINT = endpoint
Original file line number Diff line number Diff line change
@@ -1 +1,66 @@
# __init__.py for models package
# __init__.py for models package
from .user import User, UserBuilder
from .AuthorizationRequest import Role, RoleBuilder, AuthorizationRequest, AuthorizationRequestBuilder
from .ActionRequest import ActionRequest, ActionBuilder, ActionRequestBuilder, Action
from .citizen_user import CitizenUser, CitizenUserBuilder
from .mdms import MdmsCriteria, MdmsCriteriaBuilder, MdmsCriteriaReq, MdmsCriteriaReqBuilder, MasterDetailBuilder, ModuleDetailBuilder, ModuleDetail, MasterDetail
from .search_models import UserSearchModel, UserSearchModelBuilder
from .mdms_v2 import (
SchemaDefinition,
SchemaDefinitionBuilder,
SchemaDefCriteria,
SchemaDefCriteriaBuilder,
AuditDetails,
AuditDetailsBuilder,
Mdms,
MdmsBuilder,
MdmsCriteriaV2,
MdmsCriteriaV2Builder,
)
from .workflow import Document, DocumentBuilder, WorkflowAction, WorkflowActionBuilder, State, StateBuilder, ProcessInstance, ProcessInstanceBuilder, ProcessInstanceSearchCriteria, ProcessInstanceSearchCriteriaBuilder


__all__ = ['Role',
'RoleBuilder',
'AuthorizationRequest',
'AuthorizationRequestBuilder',
'ActionRequest',
'ActionBuilder',
'ActionRequestBuilder',
'Action',
'User',
'UserBuilder',
'CitizenUser',
'CitizenUserBuilder',
'MdmsCriteria',
'MdmsCriteriaBuilder',
'UserSearchModel',
'UserSearchModelBuilder',
'AuditDetails',
'SchemaDefinition',
'SchemaDefinitionRequest',
'SchemaDefCriteria',
'Mdms',
'MdmsCriteriaV2',
'MdmsBuilder',
'MdmsCriteriaV2Builder',
'SchemaDefinitionBuilder',
'SchemaDefinitionRequestBuilder',
'SchemaDefCriteriaBuilder',
'AuditDetailsBuilder',
'MasterDetail',
'MasterDetailBuilder',
'ModuleDetail',
'ModuleDetailBuilder',
'MdmsCriteriaReq',
'MdmsCriteriaReqBuilder',
'Document',
'DocumentBuilder',
'WorkflowAction',
'WorkflowActionBuilder',
'State',
'StateBuilder',
'ProcessInstance',
'ProcessInstanceBuilder',
'ProcessInstanceSearchCriteria',
'ProcessInstanceSearchCriteriaBuilder']
Loading