Skip to content
Merged
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
34 changes: 18 additions & 16 deletions CORE/Source/Basic/uRESTDWBasic.pas
Original file line number Diff line number Diff line change
Expand Up @@ -7244,6 +7244,7 @@ procedure TRESTDWBasicReceptor.SetAuthenticator(
vErrorMessage,
vStrAcceptedRoutes : String;
vDWRoutes : TRESTDWRoutes;
vEvent : TRESTDWEvent;
Begin
Result := False;
vRejected := False;
Expand Down Expand Up @@ -7288,40 +7289,41 @@ procedure TRESTDWBasicReceptor.SetAuthenticator(
Break;
End;
End;
If (TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes.RouteIsActive(RequestType)) Or
(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes.RouteIsActive(rtAll)) Then
vEvent := TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler];
If (vEvent.Routes.RouteIsActive(RequestType)) Or
(vEvent.Routes.RouteIsActive(rtAll)) Then
Begin
vResult := '';
TRESTDWServerEvents(ServerMethodsClass.Components[i]).CreateDWParams(Pooler, Params);
IF TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes.RouteNeedAuthorization(RequestType) Or
TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes.RouteNeedAuthorization(rtAll) Then
IF vEvent.Routes.RouteNeedAuthorization(RequestType) Or
vEvent.Routes.RouteNeedAuthorization(rtAll) Then
Begin
If Assigned(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnAuthRequest) Then
TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnAuthRequest(Params, vRejected, vErrorMessage, ErrorCode, RequestHeader);
If Assigned(vEvent.OnAuthRequest) Then
vEvent.OnAuthRequest(Params, vRejected, vErrorMessage, ErrorCode, RequestHeader);
End
Else
Vrejected := False;
If Not vRejected Then
Begin
TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].CompareParams(Params);
vEvent.CompareParams(Params);
Try
If RequestType <> rtOption Then
Begin
vResultA := TStringList.Create;
Try
If Assigned(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnBeforeExecute) Then
TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnBeforeExecute(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler]);
If Assigned(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnReplyEventByType) Then
TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnReplyEventByType(Params, vResultA, RequestType, ErrorCode, RequestHeader)
Else If Assigned(TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnReplyEvent) Then
TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].OnReplyEvent(Params, vResultA);
If Assigned(vEvent.OnBeforeExecute) Then
vEvent.OnBeforeExecute(vEvent);
If Assigned(vEvent.OnReplyEventByType) Then
vEvent.OnReplyEventByType(Params, vResultA, RequestType, ErrorCode, RequestHeader)
Else If Assigned(vEvent.OnReplyEvent) Then
vEvent.OnReplyEvent(Params, vResultA);
Finally
vResult := vResultA.Text;
vResultA.Free;
End;
End;
DataMode := TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].DataMode;
ContentType := TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].defaultcontenttype;
DataMode := vEvent.DataMode;
ContentType := vEvent.defaultcontenttype;
If Trim(ContentType) = '' Then
ContentType := cDefaultContentType;
Except
Expand Down Expand Up @@ -7357,7 +7359,7 @@ procedure TRESTDWBasicReceptor.SetAuthenticator(
Else
Begin
vStrAcceptedRoutes := '';
vDWRoutes := TRESTDWServerEvents(ServerMethodsClass.Components[i]).Events.EventByName[Pooler].Routes;
vDWRoutes := vEvent.Routes;
If vDWRoutes.RouteIsActive(rtGet) Then
Begin
If vStrAcceptedRoutes <> '' Then
Expand Down
4 changes: 2 additions & 2 deletions CORE/Source/Basic/uRESTDWBasicDB.pas
Original file line number Diff line number Diff line change
Expand Up @@ -8565,9 +8565,9 @@ procedure TRESTDWClientSQL.CloseCursor;
vActive := False;
If Not vActive Then
SetActiveDB(True);
If vActive Then
Inherited Open;
End;
If vActive Then
Inherited Open;
Finally
vInBlockEvents := False;
End;
Expand Down
8 changes: 6 additions & 2 deletions CORE/Source/Basic/uRESTDWDesignReg.pas
Original file line number Diff line number Diff line change
Expand Up @@ -787,9 +787,13 @@ procedure TRESTDWContextRulesEditor.ExecuteVerb(Index: Integer);
Begin
{$IFDEF FPC}
// RegFields(DefaultFieldClasses);
RegField(TExtendedField);
RegField(TRESTDWNumericField);
RegField(TStringFieldRESTDW);
// RegField(TRESTDWSQLTimeStampOffsetField);
{$ELSE}
// RegisterFields([TExtendedField]);
RegisterFields([TRESTDWNumericField]);
RegisterFields([TStringFieldRESTDW]);
// RegisterFields(DefaultFieldClasses);
{$ENDIF}
{$IFDEF FPC}
{$I RESTDataWareComponents_LAMW.lrs}
Expand Down
10 changes: 5 additions & 5 deletions CORE/Source/Basic/uRESTDWParams.pas
Original file line number Diff line number Diff line change
Expand Up @@ -6683,14 +6683,14 @@ procedure TRESTDWJSONParam.SetParamContentType(const bValue: String);

Procedure TRESTDWParams.SetCriptOptions(Use : Boolean;
Key : String);
Var
I : Integer;
//Var
// I : Integer;
Begin
For I := 0 To Count -1 Do
Begin
// For I := 0 To Count -1 Do
// Begin
// Items[I].CriptOptions.Use := Use;
// Items[I].CriptOptions.Key := Key;
End;
// End;
End;

end.
67 changes: 43 additions & 24 deletions CORE/Source/Basic/uRESTDWServerEvents.pas
Original file line number Diff line number Diff line change
Expand Up @@ -557,8 +557,9 @@ function TRESTDWEventList.GetRec(Index: Integer): TRESTDWEvent;

function TRESTDWEventList.GetRecName(Index: String): TRESTDWEvent;
Var
I : Integer;
X, Z : Integer;
aIndex : String;
vExit : Boolean;
Begin
Result := Nil;
aIndex := Index;
Expand All @@ -568,13 +569,29 @@ function TRESTDWEventList.GetRecName(Index: String): TRESTDWEvent;
(aIndex[Length(aIndex) - FinalStrPos] = '/') Then
DeleteStr(aIndex, Length(aIndex) - FinalStrPos, 1);
End;
For I := 0 To Self.Count - 1 Do
X := 0;
Z := Self.Count;
vExit := Z = 0;
If Not vExit Then
Begin
If (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[I]).EventName)) Or
(Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[I]).BaseURL + TRESTDWEvent(Items[I]).EventName)) Then
While (X <> Z) Do
Begin
Result := TRESTDWEvent(Self.Items[I]);
Break;
// For I := 0 To Self.Count - 1 Do
If (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[X]).EventName)) Or
(Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[X]).BaseURL + TRESTDWEvent(Items[X]).EventName)) Then
Begin
Result := TRESTDWEvent(Self.Items[X]);
Break;
End;
Dec(Z);
If (Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[Z]).EventName)) Or
(Uppercase(aIndex) = Uppercase(TRESTDWEvent(Items[Z]).BaseURL + TRESTDWEvent(Items[Z]).EventName)) Then
Begin
Result := TRESTDWEvent(Self.Items[Z]);
Break;
End;
If Z <> X Then
Inc(X);
End;
End;
End;
Expand Down Expand Up @@ -651,51 +668,53 @@ procedure TRESTDWEventList.PutRecName(Index: String; Item: TRESTDWEvent);
dwParam : TRESTDWJSONParam;
I : Integer;
vFound : Boolean;
vEvent : TRESTDWEvent;
Begin
vParamNameS := '';
If vEventList.EventByName[EventName] <> Nil Then
vEvent := vEventList.EventByName[EventName];
If vEvent <> Nil Then
Begin
If Not Assigned(DWParams) Then
DWParams := TRESTDWParams.Create;
DWParams.DataMode := vEventList.EventByName[EventName].DataMode;
For I := 0 To vEventList.EventByName[EventName].vDWParams.Count -1 Do
DWParams.DataMode := vEvent.DataMode;
For I := 0 To vEvent.vDWParams.Count -1 Do
Begin
vParamNameS := '';
vFound := (DWParams.ItemsString[vEventList.EventByName[EventName].vDWParams.Items[I].ParamName] <> Nil);
vFound := (DWParams.ItemsString[vEvent.vDWParams.Items[I].ParamName] <> Nil);
If vFound Then
vParamNameS := vEventList.EventByName[EventName].vDWParams.Items[I].ParamName
vParamNameS := vEvent.vDWParams.Items[I].ParamName
Else
Begin
vFound := (DWParams.ItemsString[vEventList.EventByName[EventName].vDWParams.Items[I].Alias] <> Nil);
vFound := (DWParams.ItemsString[vEvent.vDWParams.Items[I].Alias] <> Nil);
If vFound Then
vParamNameS := vEventList.EventByName[EventName].vDWParams.Items[I].Alias;
vParamNameS := vEvent.vDWParams.Items[I].Alias;
End;
If Not(vFound) Then
Begin
dwParam := TRESTDWJSONParam.Create(DWParams.Encoding);
dwParam.Alias := vEventList.EventByName[EventName].vDWParams.Items[I].Alias;
dwParam.ParamName := vEventList.EventByName[EventName].vDWParams.Items[I].ParamName;
dwParam.ObjectDirection := vEventList.EventByName[EventName].vDWParams.Items[I].ObjectDirection;
dwParam.ObjectValue := vEventList.EventByName[EventName].vDWParams.Items[I].ObjectValue;
dwParam.Encoded := vEventList.EventByName[EventName].vDWParams.Items[I].Encoded;
dwParam.Alias := vEvent.vDWParams.Items[I].Alias;
dwParam.ParamName := vEvent.vDWParams.Items[I].ParamName;
dwParam.ObjectDirection := vEvent.vDWParams.Items[I].ObjectDirection;
dwParam.ObjectValue := vEvent.vDWParams.Items[I].ObjectValue;
dwParam.Encoded := vEvent.vDWParams.Items[I].Encoded;
dwParam.DataMode := DWParams.DataMode;
If (vEventList.EventByName[EventName].vDWParams.Items[I].DefaultValue <> '') And
If (vEvent.vDWParams.Items[I].DefaultValue <> '') And
(Trim(dwParam.AsString) = '') Then
dwParam.Value := vEventList.EventByName[EventName].vDWParams.Items[I].DefaultValue;
dwParam.Value := vEvent.vDWParams.Items[I].DefaultValue;
DWParams.Add(dwParam);
End
Else
Begin
If (DWParams.ItemsString[vParamNameS].ParamName = '') Or
((DWParams.ItemsString[vParamNameS].ParamName <> '') And
(Lowercase(DWParams.ItemsString[vParamNameS].ParamName) <>
Lowercase(vEventList.EventByName[EventName].vDWParams.Items[I].ParamName))) Then
Lowercase(vEvent.vDWParams.Items[I].ParamName))) Then
Begin
DWParams.ItemsString[vParamNameS].Alias := vEventList.EventByName[EventName].vDWParams.Items[I].Alias;
DWParams.ItemsString[vParamNameS].ParamName := vEventList.EventByName[EventName].vDWParams.Items[I].ParamName;
DWParams.ItemsString[vParamNameS].Alias := vEvent.vDWParams.Items[I].Alias;
DWParams.ItemsString[vParamNameS].ParamName := vEvent.vDWParams.Items[I].ParamName;
End;
If DWParams.ItemsString[vParamNameS].Alias = '' Then
DWParams.ItemsString[vParamNameS].Alias := vEventList.EventByName[EventName].vDWParams.Items[I].Alias;
DWParams.ItemsString[vParamNameS].Alias := vEvent.vDWParams.Items[I].Alias;
End;
End;
End
Expand Down
31 changes: 20 additions & 11 deletions CORE/Source/Basic/uRESTDWStorageBin.pas
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ interface
FFieldSize,
FFieldPrecision : Array of Integer;
FFieldTypes,
FFieldAttrs : Array of Byte;
FFieldAttrs : TFieldAttrs;
FFieldExists : Array of Boolean;
Procedure SaveRecordToStream (ADataset : TDataset;
Var AStream : TStream);
Expand Down Expand Up @@ -382,6 +382,7 @@ interface
FFieldExists[I] := (ADataSet.FindField(FFieldNames[I]) <> nil); // or (vNoFields);
// create fieldsDefs like fields persistent
// If ((vNoFields) Or (Not FFieldExists[I])) Then
ADataSet.FieldAttrs := FFieldAttrs;
CreateFieldDefs(ADataSet, I);
End;
ADataSet.Open;
Expand Down Expand Up @@ -481,9 +482,9 @@ interface
Begin
vLength := Dataset.GetCalcFieldLen(aField.DataType, aField.Size);
{$IFDEF FPC}
FillChar(PData^, vLength -1, #0);
FillChar(PData^, vLength, #0);
{$ELSE}
FillChar(pData^, vLength -1, 0);
FillChar(pData^, vLength, 0);
{$ENDIF}
End
Else If (vDWFieldType In [dwftLongWord,
Expand Down Expand Up @@ -610,11 +611,13 @@ interface
dwftVarBytes,
dwftFixedChar,
dwftString : Begin
SetLength(vString, 0);
stream.Read(vInt64, SizeOf(vInt64));
vString := '';
If vInt64 > 0 Then
Begin
SetLength(vString, vInt64);
// FillChar(Pointer(@vString)^, vInt64, 0);
{$IFDEF FPC}
stream.Read(Pointer(vString)^, vInt64);
If EncodeStrs Then
Expand All @@ -627,7 +630,10 @@ interface
If EncodeStrs Then
vString := DecodeStrings(vString);
If aField <> Nil Then
Move(vString[InitStrPos], pData^, Length(vString));
Begin
// FillChar(pData^, vInt64, 0);
Move(Pointer(vString)^, pData^, vInt64);
End;
{$ENDIF}
End;
End;
Expand Down Expand Up @@ -717,14 +723,16 @@ interface
, dwftExtended

:Begin
vDouble := 0;
stream.Read(vDouble, SizeOf(vDouble));
If aField <> Nil Then
Begin
SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vDouble));
SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vExtended));
//Move Null para Bytes
Move(vBoolean, vVarBytes[0], Sizeof(Boolean));
//Move Bytes do Dado para Bytes
Move(vDouble, vVarBytes[1], Sizeof(vDouble));
vExtended := vDouble;
Move(vExtended, vVarBytes[1], Sizeof(vExtended));
//Move Bytes para Buffer
Move(vVarBytes[0], PData^, Length(vVarBytes));
End;
Expand Down Expand Up @@ -958,7 +966,8 @@ interface
Try
Dataset.SetMemoryRecordData(pActualRecord, i);
Finally
Dispose(pActualRecord);//FreeMem(PRESTDWMTMemBuffer(@PActualRecord));
Reallocmem(pActualRecord, 0);
// Dispose(pActualRecord);//FreeMem(PRESTDWMTMemBuffer(@PActualRecord));
End;
End;
End;
Expand Down Expand Up @@ -1541,8 +1550,8 @@ interface
Stream.Write(vCurrency, Sizeof(vCurrency));
End;
dwftExtended : Begin
Move(PData^, vExtended, Sizeof(vExtended));
Stream.Write(vExtended, Sizeof(vExtended));
Move(PData^, vDouble, Sizeof(vDouble));
Stream.Write(vDouble, Sizeof(vDouble));
End;
// 8 - Bytes - Currency
dwftBCD : Begin
Expand Down Expand Up @@ -1741,8 +1750,8 @@ interface
End;
{$IFNDEF FPC}
dwftExtended : Begin
vExtended := ADataset.Fields[i]{$IFNDEF FPC}.AsExtended{$ELSE}.AsFloat{$ENDIF};
AStream.Write(vExtended, Sizeof(vExtended));
vDouble := ADataset.Fields[i]{$IFNDEF FPC}.AsExtended{$ELSE}.AsFloat{$ENDIF};
AStream.Write(vDouble, Sizeof(vDouble));
End;
{$ENDIF}
// 8 - Bytes - Date, Time, DateTime, TimeStamp
Expand Down
2 changes: 1 addition & 1 deletion CORE/Source/Consts/uRESTDWConsts.pas
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
// controle de versão
RESTDWVersionINFO = 'v2.1.0-';
RESTDWRelease = '3974';
RESTDWCodeProject = 'Final Fantasy X - GitHub';
RESTDWCodeProject = 'Final Fantasy X - SourceForge';
RESTDWVersao = RESTDWVersionINFO + RESTDWRelease + '(' + RESTDWCodeProject + ')';
RESTDWDialogoTitulo = 'REST DataWare Components ' + RESTDWVersao;
RESTDWSobreTitulo = 'REST DataWare '+ RESTDWVersao;
Expand Down
1 change: 1 addition & 0 deletions CORE/Source/Includes/uRESTDW.inc
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,7 @@
{$IFNDEF RESTDWLAMW}
{$IFNDEF FPC}
{$IFDEF DELPHIXE5UP}
{$DEFINE SUPPORTS_CLASS_HELPERS}
{$IF Declared(FireMonkeyVersion) or Defined(FRAMEWORK_FMX)
Declared(FMX.Types.TFmxObject) or Defined(LINUX64)}
{$DEFINE HAS_FMX}
Expand Down
Loading