putEntry method
Implementation
Future<String> putEntry(int userId, int ts, String? testPassword,
String? database, String signature, String? jsonString) async {
print(
"////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////" +
C_THIS_NAME +
"REQUEST");
print("PARAMS:user_id=$userId||ts=$ts||testPassword=$testPassword||database=$database||sig=$signature");
print("jsonString=$jsonString");
List<RemoteDto> remoteDtoList = [];
try {
await validateRequest(testPassword, database);
await validateServer();
isEmailFresh(userId);
await validateUser(userId);
localWardenType = localUserDto!.warden;
remoteWardenType = remoteUserDto.warden;
// ------------------------------------------------------------ Validation Complete
print(
"--------------------------------------------------------------------------------------------------------------------------------" +
C_THIS_NAME +
"VALIDATION");
SignedRequestHelper2 signedRequestHelper = SignedRequestHelper2(
remoteUserStoreDto!.email!, remoteUserDto.pass_key!);
Map<String, String> params = Map();
params["ts"] = ts.toString();
if (testMode) {
if (database != null) params["database"] = database;
params["test_pass"] = AbstractEntries.C_TEST_PASSWORD;
}
params["user_id"] = remoteUserDto.id.toString();
String generateSignature = SignedRequestHelper2.percentDecodeRfc3986(
signedRequestHelper.getHmac(params));
if (signature == generateSignature) {
// Authenticated
if (abstractFieldWarden == null) {
abstractFieldWarden = AbstractFieldWarden(
localWardenType, remoteWardenType, smd, smdSys, transaction);
}
remoteWaterLineFieldDtoList =
jsonTools.processRemoteWaterLineFieldDtoListJson(jsonString);
RemoteDto remoteDto;
RemoteWaterLineFieldDto remoteWaterLineFieldDto;
Iterator<RemoteDto> iter = remoteWaterLineFieldDtoList.iterator;
WaterLineFieldDto? returnWaterLineFieldDto;
while (iter.moveNext()) {
print(
"--------------------------------------------------------------------------------------------------------------------------------" +
C_THIS_NAME);
remoteDto = iter.current;
remoteWaterLineFieldDto = remoteDto as RemoteWaterLineFieldDto;
print("rwlfdto=$remoteWaterLineFieldDto");
await abstractFieldWarden!
.init(remoteWaterLineFieldDto.getWaterLineFieldDto());
try {
returnWaterLineFieldDto = await abstractFieldWarden!.write();
remoteDtoList.add(RemoteWaterLineFieldDto(
returnWaterLineFieldDto!, smdSys,
waterLineDto: WaterLineDto.sep(
0, null, null, WaterLineFieldDto.C_TABLE_ID, smdSys)));
} on SqlException catch (e) {
if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND ||
e.sqlExceptionEnum == SqlExceptionEnum.FAILED_UPDATE ||
e.sqlExceptionEnum == SqlExceptionEnum.FAILED_SELECT)
print("WS $e");
}
}
} else {
// Authentication Failed
throw RemoteStatusException(RemoteStatus.AUTHENTICATION_FAILED);
}
} on RemoteStatusException catch (e) {
return JsonRemoteDtoConversion.getJsonFromRemoteState(RemoteStatusDto.sep(
smdSys,
status: e.remoteStatus,
message: e.cause))
.toString();
} finally {
await endTransaction();
}
return JsonRemoteDtoTools.getJsonStringFromRemoteDtoList(
remoteDtoList, defaults);
}