more work;

This commit is contained in:
StevanFreeborn
2022-04-19 21:09:55 -05:00
parent 83046b7133
commit 74f477ed48
3 changed files with 612 additions and 178 deletions
+173 -17
View File
@@ -1,4 +1,3 @@
from http import client
import mimetypes
import os
import sys
@@ -20,23 +19,76 @@ onspring = OnspringClient(url, key)
def main():
match sys.argv[1].lower():
case 'connect':
PrintCanConnect(onspring)
case 'getapps':
PrintGetApps(onspring)
case 'getappbyid':
PrintGetAppById(onspring, 195)
case 'getappsbyids':
PrintGetAppsByIds(onspring, [195, 240])
case 'savefile':
PrintSaveFile(
onspring,
'C:\\Users\\sfree\\OneDrive\\Desktop\\Test Attachment.txt',
60,
6989
)
if not len(sys.argv) > 1:
print('No valid command given')
return
command = sys.argv[1].lower()
if command =='connect':
PrintCanConnect(onspring)
if command == 'getapps':
PrintGetApps(onspring)
if command == 'getappbyid':
PrintGetAppById(onspring, 195)
if command == 'getappsbyids':
PrintGetAppsByIds(onspring, [195, 240])
if command == 'savefile':
PrintSaveFile(
onspring,
'C:\\Users\\sfree\\OneDrive\\Desktop\\Test Attachment.txt',
60,
6989
)
if command == 'getrecordsbyappid':
PrintGetRecordsByAppId(onspring, 195)
return
if command == 'getrecordbyid':
PrintGetRecordById(onspring, 195, 5)
return
if command == 'deleterecord':
PrintDeleteRecord(onspring, 195, sys.argv[2])
return
if command == 'getrecordsbyids':
PrintGetRecordsByIds(onspring, 195, [1, 2], [6983, 6984])
return
if command == 'queryrecords':
fieldId = 6983
operator = 'eq'
value = '\'Test Task 5\''
PrintQueryRecords(onspring, 195, f'{fieldId} {operator} {value}')
return
if command == 'addrecord':
fields = [
RecordFieldValue(6983, 'A New Test Task'),
RecordFieldValue(6984, 'This is a test task.')
]
PrintAddOrUpdateRecord(onspring, 195, fields)
return
if command == 'updaterecord':
fields = [
RecordFieldValue(6983, 'Updated'),
RecordFieldValue(6984, 'Updated')
]
PrintAddOrUpdateRecord(onspring, 195, fields, 60)
return
print('No valid command given')
return
#connectivity
@@ -119,6 +171,110 @@ def PrintGetRecordsByAppId(client: OnspringClient, appId: int):
print('----')
def PrintGetRecordById(client: OnspringClient, appId: int, recordId: int, fieldIds: list[int]=[], dataFormat: str=DataFormat.Raw.name):
request = GetRecordByIdRequest(
appId,
recordId,
fieldIds,
dataFormat)
response = client.GetRecordById(request)
print(f'Status Code: {response.statusCode}')
print('----')
print(f'AppId: {response.data.appId}')
print(f'RecordId: {response.data.recordId}')
print('--')
for field in response.data.fields:
print(f'Type: {field.type}')
print(f'FieldId: {field.fieldId}')
print(f'Value: {GetResultValueString(field)}')
print('--')
print('----')
def PrintDeleteRecord(client: OnspringClient, appId: int, recordId: int):
response = client.DeleteRecordById(appId, recordId)
print(f'Status Code: {response.statusCode}')
print(f'Message: {response.message}')
def PrintGetRecordsByIds(client: OnspringClient, appId: int, recordIds: list[int], fieldIds: list[int]=[], dataFormat: str=DataFormat.Raw.name):
request = GetBatchRecordsRequest(
appId,
recordIds,
fieldIds,
dataFormat)
response = client.GetRecordsByIds(request)
print(f'Status Code: {response.statusCode}')
print(f'Count: {response.data.count}')
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('----')
def PrintQueryRecords(client: OnspringClient, appId: int, filter: str, fieldIds: list[int]=[], dataFormat: str=DataFormat.Raw.name, pagingRequest: PagingRequest=PagingRequest(1,50)):
request = QueryRecordsRequest(
appId,
filter,
fieldIds,
dataFormat,
pagingRequest)
response = client.QueryRecords(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('----')
def PrintAddOrUpdateRecord(client: OnspringClient, appId: int, fields: list[RecordFieldValue], recordId: int=None):
record = Record(
appId,
fields,
recordId)
response = client.AddOrUpdateRecord(record)
print(response.status_code)
print(response.text)
print(response.request.body)
# files
def PrintSaveFile(client: OnspringClient, filePath: str, recordId: int, fieldId: int, notes: str=None, modifiedDate: datetime=None):
+40 -7
View File
@@ -1,6 +1,8 @@
import datetime
import uuid
from requests import Response
from Enums import *
from decimal import Decimal
from datetime import datetime
@@ -9,13 +11,12 @@ from Helpers import parseDate
# generic
class ApiResponse:
def __init__(self, statusCode=None, data=None, message=None, headers=None, responseText=None):
def __init__(self, statusCode=None, data=None, message=None, raw=None):
self.statusCode = statusCode
self.isSuccessful = int(statusCode) < 400
self.data = data
self.message = message
self.headers=None
self.responseText = responseText
self.raw = raw
class PagingRequest:
def __init__(self, pageNumber: int, pageSize: int):
@@ -218,7 +219,7 @@ class ScoringGroupListValue:
# record specific
class RecordFieldValue:
def __init__(self, type: str, fieldId: int, value: str):
def __init__(self, fieldId: int, value: str, type: str=None):
self.type = type
self.fieldId = fieldId
self.value = value
@@ -389,7 +390,7 @@ class RecordFieldValue:
return None
class Record:
def __init__(self, appId: int, recordId: int, fields: list[RecordFieldValue]):
def __init__(self, appId: int, fields: list[RecordFieldValue], recordId: int=None):
self.appId = appId
self.recordId = recordId
self.fields = fields
@@ -402,10 +403,42 @@ class GetRecordsByAppRequest:
self.pageSize = pagingRequest.pageSize
self.pageNumber = pagingRequest.pageNumber
class GetRecordsByAppResponse:
class QueryRecordsRequest:
def __init__(self, appId: int, filter: str, fieldIds: list[int]=[], dataFormat: str=DataFormat.Raw.name, pagingRequest: PagingRequest=PagingRequest(1,50)):
self.appId = appId
self.filter = filter
self.fieldIds = fieldIds
self.dataFormat = dataFormat
self.pagingRequest = pagingRequest
class GetRecordsResponse:
def __init__(self, pageNumber: int, pageSize: int, totalPages: int, totalRecords: int, records: list[Record]):
self.pageNumber = pageNumber
self.pageSize = pageSize
self.totalPages = totalPages
self.totalRecords = totalRecords
self.records = records
self.records = records
class GetRecordByIdRequest:
def __init__(self, appId: int, recordId: int, fieldIds: list[int]=[], dataFormat: str=DataFormat.Raw.name):
self.appId = appId
self.recordId = recordId
self.fieldIds = fieldIds
self.dataFormat = dataFormat
class GetBatchRecordsRequest:
def __init__(self, appId: int, recordIds: list[int], fieldIds: list[int]=[], dataFormat: str=DataFormat.Raw.name):
self.appId = appId
self.recordIds = recordIds
self.fieldIds = fieldIds
self.dataFormat = dataFormat
class GetBatchRecordsResponse:
def __init__(self, count: int, records: list[Record]):
self.count = count
self.records = records
class AddOrUpdateRecordResponse:
def __init__(self, id: int, warnings: list[str]=[]):
self.id = id
self.warnings = warnings
+399 -154
View File
@@ -1,3 +1,4 @@
from urllib import response
import requests
import json
import re
@@ -44,15 +45,13 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Invalid paging information',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -81,13 +80,11 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
def GetAppById(self, appId: int):
@@ -103,24 +100,21 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 403:
return ApiResponse(
response.status_code,
message='Client does not have read access to the app',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 404:
return ApiResponse(
response.status_code,
message='App could not be found',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -136,13 +130,11 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
def GetAppsByIds(self, appIds: list):
@@ -169,16 +161,14 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 403:
return ApiResponse(
response.status_code,
message='Client does not have read access to the app',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -204,13 +194,11 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
# field methods
@@ -228,24 +216,21 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 403:
return ApiResponse(
response.status_code,
message='Client does not have read access to the field',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 404:
return ApiResponse(
response.status_code,
message='Field could not be found',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -265,13 +250,11 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
def GetFieldsByIds(self, fieldIds: list):
@@ -298,24 +281,21 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 403:
return ApiResponse(
response.status_code,
message='Client does not have read access to the field(s)',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 404:
return ApiResponse(
response.status_code,
message='Field(s) could not be found',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -345,13 +325,11 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
def GetFieldsByAppId(self, appId: int, pagingRequest=PagingRequest(1, 50)):
@@ -370,16 +348,14 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Invalid paging information',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -412,13 +388,11 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
# file methods
@@ -440,32 +414,28 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Request is invalid based on underlying data',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 403:
return ApiResponse(
response.status_code,
message='Client does not have read access to the file',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 404:
return ApiResponse(
response.status_code,
message='File could not be found',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -488,13 +458,11 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
def DeleteFileById(self, recordId: int, fieldId: int, fileId: int):
@@ -514,16 +482,14 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Request is invalid based on underlying data',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 403 or response.status_code == 404:
@@ -532,29 +498,25 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 500:
return ApiResponse(
response.status_code,
message='File could not be deleted due to internal error',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 204:
return ApiResponse(
response.status_code,
message='File deleted successfully',
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
def GetFileById(self, recordId: int, fieldId: int, fileId: int):
@@ -574,16 +536,14 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Request is invalid based on underlying data',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 403 or response.status_code == 404:
@@ -592,8 +552,7 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -607,7 +566,7 @@ class OnspringClient:
if result:
fileName = re.sub('filename=|\'|;', '', result)
else:
fileName = None
fileName = 'OnspringFile'
file = File(
fileName,
@@ -620,14 +579,12 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
def SaveFile(self, saveFileRequest: SaveFileRequest):
@@ -659,16 +616,14 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Request is invalid based on underlying data',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code in [403,404,500]:
@@ -677,8 +632,7 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 201:
@@ -689,13 +643,11 @@ class OnspringClient:
return ApiResponse(
response.status_code,
data,
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
# list methods
@@ -720,8 +672,7 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code in [403,404]:
@@ -730,8 +681,7 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 201:
@@ -743,8 +693,7 @@ class OnspringClient:
response.status_code,
data,
message='New list value successfully added',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 200:
@@ -756,13 +705,11 @@ class OnspringClient:
response.status_code,
data,
message='Existing list value successfully updated',
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
def DeleteListItem(self, listId: int, itemId: uuid):
@@ -778,8 +725,7 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message='Unauthorized request',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 403:
@@ -788,29 +734,25 @@ class OnspringClient:
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 404:
return ApiResponse(
response.status_code,
message='List/item could not be found',
headers=response.headers,
responseText=response.text)
raw=response)
if response.status_code == 204:
return ApiResponse(
response.status_code,
message='Item deleted successfully',
headers=response.headers,
responseText=response.text)
raw=response)
return ApiResponse(
response.status_code,
headers=response.headers,
responseText=response.text)
raw=response)
# record methods
@@ -818,13 +760,8 @@ class OnspringClient:
endpoint = GetRecordsByAppIdEndpoint(self.baseUrl, getRecordsByAppRequest.appId)
# use request object as key-value pairs for params
params = getRecordsByAppRequest.__dict__
# remove appId from params
del params['appId']
# convert list of fieldIds to string of comma separated values
params['fieldIds'] = ",".join([str(i) for i in params['fieldIds']])
response = requests.request(
@@ -833,6 +770,29 @@ class OnspringClient:
headers=self.headers,
params=params)
if response.status_code == 400:
return ApiResponse(
response.status_code,
message='Invalid paging information/size of the data requested was too large.',
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
raw=response)
if response.status_code == 403:
jsonResponse = dict(response.json())
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
raw=response)
if response.status_code == 200:
jsonResponse = dict(response.json())
@@ -847,17 +807,17 @@ class OnspringClient:
record = Record(
item.get('appId'),
item.get('recordId'),
fields)
fields,
item.get('recordId'))
for field in item.get('fieldData'):
field = dict(field)
field = RecordFieldValue(
field.get('type'),
field.get('fieldId'),
field.get('value'))
field.get('value'),
field.get('type'))
fields.append(field)
@@ -865,7 +825,293 @@ class OnspringClient:
records.append(record)
data = GetRecordsByAppResponse(
data = GetRecordsResponse(
jsonResponse.get('pageNumber'),
jsonResponse.get('pageSize'),
jsonResponse.get('totalPages'),
jsonResponse.get('totalRecords'),
records)
return ApiResponse(
response.status_code,
data,
raw=response)
return ApiResponse(
response.status_code,
raw=response)
def GetRecordById(self, getRecordByIdRequest: GetRecordByIdRequest):
endpoint = GetRecordByIdEndpoint(self.baseUrl, getRecordByIdRequest.appId, getRecordByIdRequest.recordId)
params = getRecordByIdRequest.__dict__
del params['appId']
del params['recordId']
params['fieldIds'] = ",".join([str(i) for i in params['fieldIds']])
response = requests.request(
'GET',
endpoint,
headers=self.headers,
params=params)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
raw=response)
if response.status_code == 403:
jsonResponse = dict(response.json())
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
raw=response)
if response.status_code == 404:
return ApiResponse(
response.status_code,
message='Record could not be found',
raw=response)
if response.status_code == 200:
jsonResponse = dict(response.json())
fields = []
for field in jsonResponse.get('fieldData'):
field = dict(field)
field = RecordFieldValue(
field.get('fieldId'),
field.get('value'),
field.get('type'))
fields.append(field)
data = Record(
jsonResponse.get('appId'),
fields,
jsonResponse.get('recordId'))
return ApiResponse(
response.status_code,
data,
raw=response)
return ApiResponse(
response.status_code,
raw=response)
def DeleteRecordById(self, appId: int, recordId: int):
endpoint = DeleteRecordByIdEndpoint(self.baseUrl, appId, recordId)
response = requests.request(
'DELETE',
endpoint,
headers=self.headers)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
raw=response)
if response.status_code == 403:
jsonResponse = dict(response.json())
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
raw=response)
if response.status_code == 404:
return ApiResponse(
response.status_code,
message='Record could not be found',
raw=response)
if response.status_code == 204:
return ApiResponse(
response.status_code,
message='Record deleted successfully',
raw=response)
return ApiResponse(
response.status_code,
raw=response)
def GetRecordsByIds(self, getBatchRecordsRequest: GetBatchRecordsRequest):
endpoint = GetRecordsByIdsEndpoint(self.baseUrl)
self.headers['Content-Type'] = 'application/json'
requestData = json.dumps(getBatchRecordsRequest.__dict__)
response = requests.request(
'POST',
endpoint,
headers=self.headers,
data=requestData)
if response.status_code == 400:
return ApiResponse(
response.status_code,
message='Batch request is invalid/size of the data requested was too large.',
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
raw=response)
if response.status_code == 403:
jsonResponse = dict(response.json())
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
raw=response)
if response.status_code == 200:
jsonResponse = dict(response.json())
records = []
for item in jsonResponse.get('items'):
item = dict(item)
fields = []
record = Record(
item.get('appId'),
fields,
item.get('recordId'),)
for field in item.get('fieldData'):
field = dict(field)
field = RecordFieldValue(
field.get('fieldId'),
field.get('value'),
field.get('type'))
fields.append(field)
record.fields = fields
records.append(record)
data = GetBatchRecordsResponse(
jsonResponse.get('count'),
records)
return ApiResponse(
response.status_code,
data,
raw=response)
return ApiResponse(
response.status_code,
raw=response)
def QueryRecords(self, queryRecordsRequest: QueryRecordsRequest):
endpoint = QueryRecordsEndpoint(self.baseUrl)
self.headers['Content-Type'] = 'application/json'
requestData = queryRecordsRequest.__dict__
params = requestData.get('pagingRequest').__dict__
del requestData['pagingRequest']
requestData = json.dumps(requestData)
response = requests.request(
'POST',
endpoint,
headers=self.headers,
data=requestData,
params=params)
if response.status_code == 400:
return ApiResponse(
response.status_code,
message='Query request is invalid/size of the data requested was too large.',
raw=response)
if response.status_code == 401:
return ApiResponse(
response.status_code,
message='Unauthorized request',
raw=response)
if response.status_code == 403:
jsonResponse = dict(response.json())
return ApiResponse(
response.status_code,
message=jsonResponse.get('message'),
raw=response)
if response.status_code == 200:
jsonResponse = dict(response.json())
records = []
for item in jsonResponse.get('items'):
item = dict(item)
fields = []
record = Record(
item.get('appId'),
fields,
item.get('recordId'))
for field in item.get('fieldData'):
field = dict(field)
field = RecordFieldValue(
field.get('fieldId'),
field.get('value'),
field.get('type'))
fields.append(field)
record.fields = fields
records.append(record)
data = GetRecordsResponse(
jsonResponse.get('pageNumber'),
jsonResponse.get('pageSize'),
jsonResponse.get('totalPages'),
@@ -877,36 +1123,35 @@ class OnspringClient:
data,
headers=response.headers,
responseText=response.text)
def GetRecordById(self, appId: int, recordId: int):
endpoint = GetRecordByIdEndpoint(self.baseUrl, appId, recordId)
return ApiResponse(
response.status_code,
raw=response)
return
def DeleteRecordById(self, appId: int, recordId: int):
endpoint = DeleteRecordByIdEndpoint(self.baseUrl, appId, recordId)
return
def GetRecordsByIds(self):
endpoint = GetRecordsByIdsEndpoint(self.baseUrl)
return
def QueryRecords(self):
endpoint = GetRecordsByIdsEndpoint(self.baseUrl)
return
def AddOrUpdateRecord(self):
def AddOrUpdateRecord(self, record: Record):
endpoint = AddOrUpdateRecordEndpoint(self.baseUrl)
return
self.headers['Content-Type'] = 'application/json'
dictFields = []
for field in record.fields:
field = field.__dict__
del field['type']
dictFields.append(field)
record.fields = dictFields
requestData = json.dumps(record.__dict__)
response = requests.request(
'PUT',
endpoint,
headers=self.headers,
data=requestData)
return response
def DeleteRecordsByIds(self):