diff --git a/ConsoleSnippets.py b/ConsoleSnippets.py new file mode 100644 index 0000000..aeb8324 --- /dev/null +++ b/ConsoleSnippets.py @@ -0,0 +1,122 @@ +from http import client +import mimetypes +import os + +from OnspringClient import OnspringClient +from configparser import ConfigParser +from Helpers import GetResultValueString + +from Models import * +from Enums import * + +cfg = ConfigParser() +cfg.read('config.ini') + +key = cfg['prod']['key'] +url = cfg['prod']['url'] + +onspring = OnspringClient(url, key) + +def main(): + + # PrintGetApps(onspring) + + PrintGetAppById(onspring, 195) + + # PrintSaveFile( + # onspring, + # 'C:\\Users\\sfree\\OneDrive\\Desktop\\Test Attachment.txt', + # 60, + # 6989 + # ) + + return + +#connectivity + +def PrintCanConnect(client: OnspringClient): + + print(client.CanConnect()) + +# apps + +def PrintGetApps(client: OnspringClient): + + response = client.GetApps() + + print(f'Status Code: {response.statusCode}') + print(f'Page Size: {response.data.pageSize}') + print(f'Page Number: {response.data.pageNumber}') + print(f'Total Pages: {response.data.totalPages}') + print(f'Total Records: {response.data.totalRecords}') + print('----') + + for app in response.data.apps: + print(f'Id: {app.id}') + print(f'Name: {app.name}') + print(f'href: {app.href}') + print('--') + + print('----') + +def PrintGetAppById(client: OnspringClient, appId: int): + + response = client.GetAppById(appId) + + print(f'Status Code: {response.statusCode}') + print(f'id: {response.data.app.id}') + print(f'Name: {response.data.app.name}') + print(f'href: {response.data.app.href}') + +# records + +def PrintGetRecordsByAppId(client: OnspringClient, appId: int): + + request = GetRecordsByAppRequest(appId, dataFormat=DataFormat.Raw.name) + + response = client.GetRecordsByAppId(request) + + print(f'Status Code: {response.statusCode}') + print(f'Page Size: {response.data.pageSize}') + print(f'Page Number: {response.data.pageNumber}') + print(f'Total Pages: {response.data.totalPages}') + print(f'Total Records: {response.data.totalRecords}') + print('----') + + for record in response.data.records: + print(f'AppId: {record.appId}') + print(f'RecordId: {record.recordId}') + print('--') + + for field in record.fields: + print(f'Type: {field.type}') + print(f'FieldId: {field.fieldId}') + print(f'Value: {GetResultValueString(field)}') + print('--') + + print('----') + +# files + +def PrintSaveFile(client: OnspringClient, filePath: str, recordId: int, fieldId: int, notes: str=None, modifiedDate: datetime=None): + + filePath = filePath + fileName = os.path.basename(filePath) + contentType = mimetypes.guess_type(filePath) + + request = SaveFileRequest( + recordId, + fieldId, + fileName, + filePath, + contentType, + notes, + modifiedDate) + + response = client.SaveFile(request) + + print(f'Status Code: {response.statusCode}') + print(f'File Id: {response.data.id}') + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/OnspringClient.py b/OnspringClient.py index 450b3c2..df0e2bc 100644 --- a/OnspringClient.py +++ b/OnspringClient.py @@ -15,7 +15,7 @@ class OnspringClient: # connectivity methods - def canConnect(self): + def CanConnect(self): endpoint = GetPingEndpoint(self.baseUrl) @@ -672,18 +672,19 @@ class OnspringClient: if response.status_code in [403,404,500]: - jsonResponse = response.json() + jsonResponse = dict(response.json()) return ApiResponse( response.status_code, - message=jsonResponse['message'], + message=jsonResponse.get('message'), headers=response.headers, responseText=response.text) if response.status_code == 201: - responseJson = response.json() - data = SaveFileResponse(responseJson['id']) + responseJson = dict(response.json()) + + data = SaveFileResponse(responseJson.get('id')) return ApiResponse( response.status_code, @@ -724,19 +725,19 @@ class OnspringClient: if response.status_code in [403,404]: - jsonResponse = response.json() + jsonResponse = dict(response.json()) return ApiResponse( response.status_code, - message=jsonResponse['message'], + message=jsonResponse.get('message'), headers=response.headers, responseText=response.text) if response.status_code == 201: - responseJson = response.json() + responseJson = dict(response.json()) - data = AddOrUpdateListItemResponse(responseJson['id']) + data = AddOrUpdateListItemResponse(responseJson.get('id')) return ApiResponse( response.status_code, @@ -747,9 +748,9 @@ class OnspringClient: if response.status_code == 200: - responseJson = response.json() + responseJson = dict(response.json()) - data = AddOrUpdateListItemResponse(responseJson['id']) + data = AddOrUpdateListItemResponse(responseJson.get('id')) return ApiResponse( response.status_code, @@ -782,11 +783,11 @@ class OnspringClient: if response.status_code == 403: - jsonResponse = response.json() + jsonResponse = dict(response.json()) return ApiResponse( response.status_code, - message=jsonResponse['message'], + message=jsonResponse.get('message'), headers=response.headers, responseText=response.text) @@ -834,25 +835,29 @@ class OnspringClient: if response.status_code == 200: - jsonResponse = response.json() + jsonResponse = dict(response.json()) records = [] - for item in jsonResponse['items']: + for item in jsonResponse.get('items'): + item = dict(item) + fields = [] record = Record( - item['appId'], - item['recordId'], + item.get('appId'), + item.get('recordId'), fields) - for field in item['fieldData']: + for field in item.get('fieldData'): + + field = dict(field) field = RecordFieldValue( - field['type'], - field['fieldId'], - field['value']) + field.get('type'), + field.get('fieldId'), + field.get('value')) fields.append(field) @@ -861,10 +866,10 @@ class OnspringClient: records.append(record) data = GetRecordsByAppResponse( - jsonResponse['pageNumber'], - jsonResponse['pageSize'], - jsonResponse['totalPages'], - jsonResponse['totalRecords'], + jsonResponse.get('pageNumber'), + jsonResponse.get('pageSize'), + jsonResponse.get('totalPages'), + jsonResponse.get('totalRecords'), records) return ApiResponse( diff --git a/TestSnippets.py b/TestSnippets.py deleted file mode 100644 index 96c81b7..0000000 --- a/TestSnippets.py +++ /dev/null @@ -1,63 +0,0 @@ -from OnspringClient import OnspringClient -from configparser import ConfigParser -from Helpers import GetResultValueString - -from Models import * -from Enums import * - -cfg = ConfigParser() -cfg.read('config.ini') - -key = cfg['prod']['key'] -url = cfg['prod']['url'] - -onspringClient = OnspringClient(url, key) - -def main(): - GetRecordsByAppIdTest() - - - -# apps - -def GetRecordsByAppIdTest(): - - request = GetRecordsByAppRequest(240, dataFormat=DataFormat.Raw.name) - - response = onspringClient.GetRecordsByAppId(request) - - print(f'Status Code: {response.statusCode}') - print(f'Page Size: {response.data.pageSize}') - print(f'Page Number: {response.data.pageNumber}') - print(f'Total Pages: {response.data.totalPages}') - print(f'Total Records: {response.data.totalRecords}') - - for record in response.data.records: - print(f'AppId: {record.appId}') - print(f'RecordId: {record.recordId}') - - for field in record.fields: - print(f'Type: {field.type}') - print(f'FieldId: {field.fieldId}') - print(f'Value: {GetResultValueString(field)}') - -# files - -def SaveFileTest(): - - filePath = 'C:\\Users\\sfree\\OneDrive\\Desktop\\Test Attachment.txt' - - request = SaveFileRequest( - 60, - 6989, - 'Test Attachment.text', - filePath, 'text/plain', - 'Updating record with attachment') - - response = onspringClient.SaveFile(request) - - print(response.statusCode) - print(response.data.id) - -if __name__ == "__main__": - main() \ No newline at end of file