@magic-xpa/engine 4.1100.0-dev4110.25 → 4.1100.0-dev4110.250
Sign up to get free protection for your applications and to get access to all the features.
- package/{esm2020 → esm2022}/index.mjs +188 -188
- package/{esm2020 → esm2022}/magic-xpa-engine.mjs +1 -1
- package/esm2022/src/AccessHelper.mjs +15 -0
- package/esm2022/src/ClientManager.mjs +416 -0
- package/esm2022/src/CommandsProcessorBase.mjs +56 -0
- package/esm2022/src/CommandsProcessorManager.mjs +26 -0
- package/esm2022/src/CommandsTable.mjs +162 -0
- package/esm2022/src/ConstInterface.mjs +517 -0
- package/{esm2020 → esm2022}/src/CurrentClientVersion.mjs +2 -2
- package/esm2022/src/FlowMonitorInterface.mjs +16 -0
- package/esm2022/src/GUIManager.mjs +62 -0
- package/esm2022/src/GlobalCommandsManager.mjs +34 -0
- package/esm2022/src/GuiEventsProcessor.mjs +156 -0
- package/{esm2020 → esm2022}/src/ICommandsTable.mjs +1 -1
- package/esm2022/src/ServerConfig.mjs +122 -0
- package/{esm2020 → esm2022}/src/bridge/IGuiEvent.mjs +19 -19
- package/esm2022/src/bridge/MagicBridge.mjs +41 -0
- package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +12 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +8 -8
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -9
- package/esm2022/src/commands/ClientToServer/BrowserEscEventCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommand.mjs +14 -14
- package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +60 -0
- package/esm2022/src/commands/ClientToServer/ColumnSortEventCommand.mjs +29 -0
- package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +261 -0
- package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +67 -0
- package/esm2022/src/commands/ClientToServer/ComputeEventCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +24 -21
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +23 -20
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -8
- package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/DataviewCommand.mjs +44 -44
- package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +40 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/EventCommand.mjs +43 -40
- package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +70 -0
- package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +25 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +10 -10
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ICommandTaskTag.mjs +1 -1
- package/esm2022/src/commands/ClientToServer/IndexChangeEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +26 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/QueryCommand.mjs +20 -20
- package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +30 -0
- package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +30 -0
- package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +43 -0
- package/esm2022/src/commands/ClientToServer/SelectProgramCommand.mjs +19 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -9
- package/esm2022/src/commands/ClientToServer/SubformOpenEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +34 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/UnloadCommand.mjs +18 -15
- package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
- package/esm2022/src/commands/DataViewCommandBase.mjs +8 -0
- package/{esm2020 → esm2022}/src/commands/IClientCommand.mjs +1 -1
- package/esm2022/src/commands/IClientTargetedCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/IClientToServerCommandInfo.mjs +2 -2
- package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +65 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddLocateCommand.mjs +21 -21
- package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
- package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
- package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
- package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +24 -0
- package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
- package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetLocateCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetRangeCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetSortCommand.mjs +14 -14
- package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +37 -0
- package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
- package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -0
- package/{esm2020 → esm2022}/src/communications/IConnectionStateManager.mjs +1 -1
- package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +15 -0
- package/{esm2020 → esm2022}/src/data/DataSourceIdKey.mjs +2 -2
- package/esm2022/src/data/DataView.mjs +1613 -0
- package/{esm2020 → esm2022}/src/data/DataViewBase.mjs +3 -3
- package/esm2022/src/data/DataviewManager.mjs +28 -0
- package/esm2022/src/data/DataviewManagerBase.mjs +15 -0
- package/esm2022/src/data/DvCache.mjs +67 -0
- package/esm2022/src/data/Field.mjs +646 -0
- package/esm2022/src/data/FieldBase.mjs +15 -0
- package/esm2022/src/data/FieldsTable.mjs +103 -0
- package/{esm2020 → esm2022}/src/data/IRecordsTable.mjs +1 -1
- package/esm2022/src/data/Key.mjs +88 -0
- package/esm2022/src/data/Record.mjs +880 -0
- package/{esm2020 → esm2022}/src/data/RecordOutOfDataViewException.mjs +15 -15
- package/esm2022/src/data/RecordsTable.mjs +267 -0
- package/esm2022/src/data/TaskTransactionManager.mjs +107 -0
- package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +74 -0
- package/{esm2020 → esm2022}/src/enums.mjs +23 -23
- package/esm2022/src/env/EnvVariablesTable.mjs +340 -0
- package/esm2022/src/env/Environment.mjs +487 -0
- package/{esm2020 → esm2022}/src/env/ILanguageData.mjs +1 -1
- package/esm2022/src/env/LanguageData.mjs +227 -0
- package/esm2022/src/env/MirrorString.mjs +65 -0
- package/esm2022/src/event/ActionManager.mjs +91 -0
- package/esm2022/src/event/Event.mjs +1333 -0
- package/esm2022/src/event/EventHandler.mjs +766 -0
- package/esm2022/src/event/EventHandlerPosition.mjs +204 -0
- package/esm2022/src/event/EventsManager.mjs +2988 -0
- package/{esm2020 → esm2022}/src/event/IEventsManager.mjs +6 -6
- package/esm2022/src/event/RunTimeEvent.mjs +399 -0
- package/{esm2020 → esm2022}/src/event/RunTimeEventBase.mjs +3 -3
- package/esm2022/src/event/UserEventsTable.mjs +47 -0
- package/esm2022/src/exp/ExpTable.mjs +57 -0
- package/esm2022/src/exp/Expression.mjs +200 -0
- package/esm2022/src/exp/ExpressionDict.mjs +727 -0
- package/esm2022/src/exp/ExpressionEvaluator.mjs +4206 -0
- package/esm2022/src/exp/ExpressionLocalJpn.mjs +314 -0
- package/esm2022/src/exp/GlobalParamsTable.mjs +85 -0
- package/esm2022/src/exp/YesNoExp.mjs +36 -0
- package/esm2022/src/gui/CreatedFormVector.mjs +23 -0
- package/esm2022/src/gui/FormsTable.mjs +66 -0
- package/esm2022/src/gui/MgControl.mjs +363 -0
- package/esm2022/src/gui/MgForm.mjs +1224 -0
- package/esm2022/src/http/HttpManager.mjs +97 -0
- package/esm2022/src/http/client/HttpClientAsync.mjs +68 -0
- package/esm2022/src/http/client/HttpClientBase.mjs +132 -0
- package/esm2022/src/http/client/HttpClientEvents.mjs +39 -0
- package/esm2022/src/http/client/HttpClientSync.mjs +42 -0
- package/esm2022/src/http/client/HttpUtility.mjs +84 -0
- package/{esm2020 → esm2022}/src/http/client/ICommunicationsFailureHandler.mjs +1 -1
- package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/RemoteCommandsProcessor.mjs +883 -0
- package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
- package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +24 -0
- package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +61 -0
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +15 -15
- package/{esm2020 → esm2022}/src/remote/RemoteDataviewManager.mjs +17 -17
- package/{esm2020 → esm2022}/src/remote/RemoteInitDataViewCommand.mjs +10 -10
- package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
- package/{esm2020 → esm2022}/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +12 -12
- package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
- package/esm2022/src/remote/ServerError.mjs +40 -0
- package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +20 -0
- package/esm2022/src/rt/Argument.mjs +265 -0
- package/esm2022/src/rt/ArgumentsList.mjs +103 -0
- package/esm2022/src/rt/Boundary.mjs +152 -0
- package/esm2022/src/rt/CompMainPrgTable.mjs +63 -0
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderBase.mjs +98 -96
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderFactory.mjs +6 -6
- package/esm2022/src/rt/DataviewHeaders.mjs +53 -0
- package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +38 -0
- package/esm2022/src/rt/ExecutionStack.mjs +94 -0
- package/{esm2020 → esm2022}/src/rt/ExecutionStackEntry.mjs +17 -17
- package/esm2022/src/rt/HandlersTable.mjs +96 -0
- package/{esm2020 → esm2022}/src/rt/IDataSourceViewDefinition.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IDataviewHeader.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IResultValue.mjs +1 -1
- package/esm2022/src/rt/LastFocusedManager.mjs +65 -0
- package/esm2022/src/rt/Operation.mjs +735 -0
- package/esm2022/src/rt/OperationTable.mjs +67 -0
- package/esm2022/src/rt/Recompute.mjs +355 -0
- package/esm2022/src/rt/RecomputeTable.mjs +63 -0
- package/esm2022/src/rt/RemoteDataviewHeader.mjs +108 -0
- package/esm2022/src/rt/ResultValue.mjs +10 -0
- package/esm2022/src/rt/TableCache.mjs +177 -0
- package/esm2022/src/rt/TableCacheManager.mjs +67 -0
- package/esm2022/src/rt/Transaction.mjs +53 -0
- package/esm2022/src/security/UserDetails.mjs +71 -0
- package/{esm2020 → esm2022}/src/tasks/IMGDataCollection.mjs +1 -1
- package/esm2022/src/tasks/MGData.mjs +552 -0
- package/esm2022/src/tasks/MGDataCollection.mjs +252 -0
- package/esm2022/src/tasks/RCTimer.mjs +63 -0
- package/esm2022/src/tasks/RemoteTaskService.mjs +45 -0
- package/esm2022/src/tasks/Task.mjs +2499 -0
- package/esm2022/src/tasks/TaskBase.mjs +83 -0
- package/esm2022/src/tasks/TaskServiceBase.mjs +25 -0
- package/esm2022/src/tasks/TasksTable.mjs +80 -0
- package/esm2022/src/tasks/sort/Sort.mjs +5 -0
- package/esm2022/src/tasks/sort/SortCollection.mjs +67 -0
- package/esm2022/src/util/ConstUtils.mjs +14 -0
- package/esm2022/src/util/FlowMonitorQueue.mjs +451 -0
- package/esm2022/src/util/HeapSort.mjs +70 -0
- package/{esm2020 → esm2022}/src/util/IMirrorXML.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/IServerConfig.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/MgBlockingQueue.mjs +1 -1
- package/esm2022/src/util/MgPriorityBlockingQueue.mjs +74 -0
- package/esm2022/src/util/MgPriorityQueue.mjs +66 -0
- package/{esm2020 → esm2022}/src/util/ParamParseResult.mjs +7 -7
- package/esm2022/src/util/PrmMap.mjs +152 -0
- package/esm2022/src/util/ReturnResult.mjs +46 -0
- package/esm2022/src/util/ReturnResultBase.mjs +18 -0
- package/esm2022/src/util/Scrambler.mjs +89 -0
- package/esm2022/src/util/UniqueIDUtils.mjs +13 -0
- package/esm2022/src/util/cookie.service.mjs +92 -0
- package/{fesm2020 → fesm2022}/magic-xpa-engine.mjs +29883 -29693
- package/fesm2022/magic-xpa-engine.mjs.map +1 -0
- package/index.d.ts +187 -187
- package/package.json +8 -14
- package/src/AccessHelper.d.ts +20 -20
- package/src/ClientManager.d.ts +35 -32
- package/src/CommandsProcessorBase.d.ts +23 -23
- package/src/CommandsProcessorManager.d.ts +6 -6
- package/src/CommandsTable.d.ts +22 -22
- package/src/ConstInterface.d.ts +516 -515
- package/src/CurrentClientVersion.d.ts +1 -1
- package/src/FlowMonitorInterface.d.ts +15 -15
- package/src/GUIManager.d.ts +17 -17
- package/src/GlobalCommandsManager.d.ts +17 -17
- package/src/GuiEventsProcessor.d.ts +24 -24
- package/src/ICommandsTable.d.ts +9 -9
- package/src/ServerConfig.d.ts +35 -34
- package/src/bridge/IGuiEvent.d.ts +19 -19
- package/src/bridge/MagicBridge.d.ts +16 -16
- package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -8
- package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -4
- package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -6
- package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +11 -10
- package/src/commands/ClientToServer/CommandFactory.d.ts +64 -64
- package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -20
- package/src/commands/ClientToServer/ComputeEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +8 -7
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +8 -7
- package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -6
- package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -9
- package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -32
- package/src/commands/ClientToServer/EvaluateCommand.d.ts +16 -15
- package/src/commands/ClientToServer/EventCommand.d.ts +16 -15
- package/src/commands/ClientToServer/ExecOperCommand.d.ts +24 -23
- package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -5
- package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -3
- package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +11 -10
- package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/QueryCommand.d.ts +8 -8
- package/src/commands/ClientToServer/RecomputeCommand.d.ts +12 -11
- package/src/commands/ClientToServer/RefreshEventCommand.d.ts +13 -12
- package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +11 -10
- package/src/commands/ClientToServer/RollbackEventCommand.d.ts +15 -14
- package/src/commands/ClientToServer/SelectProgramCommand.d.ts +7 -6
- package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -5
- package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +10 -9
- package/src/commands/ClientToServer/TransactionCommand.d.ts +14 -12
- package/src/commands/ClientToServer/UnloadCommand.d.ts +8 -7
- package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -6
- package/src/commands/DataViewCommandBase.d.ts +6 -6
- package/src/commands/IClientCommand.d.ts +2 -2
- package/src/commands/IClientTargetedCommand.d.ts +12 -12
- package/src/commands/IClientToServerCommandInfo.d.ts +4 -3
- package/src/commands/ServerToClient/AbortCommand.d.ts +11 -11
- package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -10
- package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -9
- package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -7
- package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -12
- package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -13
- package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -21
- package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResultCommand.d.ts +10 -10
- package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -17
- package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -11
- package/src/communications/IConnectionStateManager.d.ts +4 -4
- package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -6
- package/src/data/DataSourceIdKey.d.ts +2 -2
- package/src/data/DataView.d.ts +162 -162
- package/src/data/DataViewBase.d.ts +12 -12
- package/src/data/DataviewManager.d.ts +14 -14
- package/src/data/DataviewManagerBase.d.ts +11 -11
- package/src/data/DvCache.d.ts +15 -15
- package/src/data/Field.d.ts +103 -103
- package/src/data/FieldBase.d.ts +23 -23
- package/src/data/FieldsTable.d.ts +27 -27
- package/src/data/IRecordsTable.d.ts +7 -7
- package/src/data/Key.d.ts +15 -15
- package/src/data/Record.d.ts +157 -156
- package/src/data/RecordOutOfDataViewException.d.ts +10 -10
- package/src/data/RecordsTable.d.ts +38 -38
- package/src/data/TaskTransactionManager.d.ts +17 -17
- package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -11
- package/src/enums.d.ts +21 -21
- package/src/env/EnvVariablesTable.d.ts +17 -17
- package/src/env/Environment.d.ts +118 -118
- package/src/env/ILanguageData.d.ts +3 -3
- package/src/env/LanguageData.d.ts +20 -20
- package/src/env/MirrorString.d.ts +15 -15
- package/src/event/ActionManager.d.ts +14 -14
- package/src/event/Event.d.ts +79 -79
- package/src/event/EventHandler.d.ts +66 -66
- package/src/event/EventHandlerPosition.d.ts +25 -25
- package/src/event/EventsManager.d.ts +205 -204
- package/src/event/IEventsManager.d.ts +77 -77
- package/src/event/RunTimeEvent.d.ts +126 -123
- package/src/event/RunTimeEventBase.d.ts +5 -5
- package/src/event/UserEventsTable.d.ts +11 -11
- package/src/exp/ExpTable.d.ts +11 -11
- package/src/exp/Expression.d.ts +37 -37
- package/src/exp/ExpressionDict.d.ts +12 -12
- package/src/exp/ExpressionEvaluator.d.ts +198 -198
- package/src/exp/ExpressionLocalJpn.d.ts +18 -18
- package/src/exp/GlobalParamsTable.d.ts +19 -19
- package/src/exp/YesNoExp.d.ts +9 -9
- package/src/gui/CreatedFormVector.d.ts +10 -10
- package/src/gui/FormsTable.d.ts +15 -15
- package/src/gui/MgControl.d.ts +60 -60
- package/src/gui/MgForm.d.ts +96 -93
- package/src/http/HttpManager.d.ts +25 -25
- package/src/http/client/HttpClientAsync.d.ts +16 -16
- package/src/http/client/HttpClientBase.d.ts +30 -30
- package/src/http/client/HttpClientEvents.d.ts +18 -18
- package/src/http/client/HttpClientSync.d.ts +17 -17
- package/src/http/client/HttpUtility.d.ts +10 -10
- package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -5
- package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/RemoteCommandsProcessor.d.ts +51 -51
- package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -8
- package/src/remote/RemoteDataViewCommandBase.d.ts +10 -10
- package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -6
- package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -8
- package/src/remote/RemoteDataviewManager.d.ts +9 -9
- package/src/remote/RemoteInitDataViewCommand.d.ts +7 -7
- package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ServerError.d.ts +16 -16
- package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -8
- package/src/rt/Argument.d.ts +36 -36
- package/src/rt/ArgumentsList.d.ts +24 -24
- package/src/rt/Boundary.d.ts +27 -27
- package/src/rt/CompMainPrgTable.d.ts +10 -10
- package/src/rt/DataviewHeaderBase.d.ts +34 -34
- package/src/rt/DataviewHeaderFactory.d.ts +5 -5
- package/src/rt/DataviewHeaders.d.ts +12 -12
- package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -10
- package/src/rt/ExecutionStack.d.ts +22 -22
- package/src/rt/ExecutionStackEntry.d.ts +7 -7
- package/src/rt/HandlersTable.d.ts +19 -19
- package/src/rt/IDataSourceViewDefinition.d.ts +6 -6
- package/src/rt/IDataviewHeader.d.ts +10 -10
- package/src/rt/IResultValue.d.ts +4 -4
- package/src/rt/LastFocusedManager.d.ts +23 -23
- package/src/rt/Operation.d.ts +97 -97
- package/src/rt/OperationTable.d.ts +15 -15
- package/src/rt/Recompute.d.ts +41 -41
- package/src/rt/RecomputeTable.d.ts +9 -9
- package/src/rt/RemoteDataviewHeader.d.ts +14 -14
- package/src/rt/ResultValue.d.ts +7 -7
- package/src/rt/TableCache.d.ts +29 -29
- package/src/rt/TableCacheManager.d.ts +10 -10
- package/src/rt/Transaction.d.ts +23 -23
- package/src/security/UserDetails.d.ts +16 -16
- package/src/tasks/IMGDataCollection.d.ts +26 -26
- package/src/tasks/MGData.d.ts +63 -63
- package/src/tasks/MGDataCollection.d.ts +42 -42
- package/src/tasks/RCTimer.d.ts +13 -13
- package/src/tasks/RemoteTaskService.d.ts +16 -16
- package/src/tasks/Task.d.ts +312 -312
- package/src/tasks/TaskBase.d.ts +123 -123
- package/src/tasks/TaskServiceBase.d.ts +16 -16
- package/src/tasks/TasksTable.d.ts +21 -21
- package/src/tasks/sort/Sort.d.ts +4 -4
- package/src/tasks/sort/SortCollection.d.ts +11 -11
- package/src/util/ConstUtils.d.ts +3 -3
- package/src/util/FlowMonitorQueue.d.ts +70 -70
- package/src/util/HeapSort.d.ts +6 -6
- package/src/util/IMirrorXML.d.ts +6 -6
- package/src/util/IServerConfig.d.ts +11 -11
- package/src/util/MgBlockingQueue.d.ts +5 -5
- package/src/util/MgPriorityBlockingQueue.d.ts +17 -17
- package/src/util/MgPriorityQueue.d.ts +13 -13
- package/src/util/ParamParseResult.d.ts +6 -6
- package/src/util/PrmMap.d.ts +28 -28
- package/src/util/ReturnResult.d.ts +18 -18
- package/src/util/ReturnResultBase.d.ts +11 -11
- package/src/util/Scrambler.d.ts +10 -10
- package/src/util/UniqueIDUtils.d.ts +4 -4
- package/src/util/cookie.service.d.ts +8 -8
- package/esm2020/src/AccessHelper.mjs +0 -9
- package/esm2020/src/ClientManager.mjs +0 -399
- package/esm2020/src/CommandsProcessorBase.mjs +0 -58
- package/esm2020/src/CommandsProcessorManager.mjs +0 -26
- package/esm2020/src/CommandsTable.mjs +0 -162
- package/esm2020/src/ConstInterface.mjs +0 -516
- package/esm2020/src/FlowMonitorInterface.mjs +0 -16
- package/esm2020/src/GUIManager.mjs +0 -62
- package/esm2020/src/GlobalCommandsManager.mjs +0 -34
- package/esm2020/src/GuiEventsProcessor.mjs +0 -154
- package/esm2020/src/ServerConfig.mjs +0 -117
- package/esm2020/src/bridge/MagicBridge.mjs +0 -41
- package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -11
- package/esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +0 -60
- package/esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs +0 -26
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +0 -260
- package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -69
- package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
- package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +0 -36
- package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +0 -67
- package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -22
- package/esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs +0 -21
- package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -39
- package/esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs +0 -15
- package/esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs +0 -21
- package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +0 -28
- package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
- package/esm2020/src/commands/DataViewCommandBase.mjs +0 -10
- package/esm2020/src/commands/IClientTargetedCommand.mjs +0 -9
- package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +0 -65
- package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +0 -62
- package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +0 -33
- package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -27
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
- package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +0 -37
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
- package/esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +0 -132
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -17
- package/esm2020/src/data/DataView.mjs +0 -1610
- package/esm2020/src/data/DataviewManager.mjs +0 -28
- package/esm2020/src/data/DataviewManagerBase.mjs +0 -15
- package/esm2020/src/data/DvCache.mjs +0 -67
- package/esm2020/src/data/Field.mjs +0 -646
- package/esm2020/src/data/FieldBase.mjs +0 -18
- package/esm2020/src/data/FieldsTable.mjs +0 -103
- package/esm2020/src/data/Key.mjs +0 -88
- package/esm2020/src/data/Record.mjs +0 -846
- package/esm2020/src/data/RecordsTable.mjs +0 -267
- package/esm2020/src/data/TaskTransactionManager.mjs +0 -103
- package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +0 -74
- package/esm2020/src/env/EnvVariablesTable.mjs +0 -340
- package/esm2020/src/env/Environment.mjs +0 -489
- package/esm2020/src/env/LanguageData.mjs +0 -226
- package/esm2020/src/env/MirrorString.mjs +0 -65
- package/esm2020/src/event/ActionManager.mjs +0 -91
- package/esm2020/src/event/Event.mjs +0 -1333
- package/esm2020/src/event/EventHandler.mjs +0 -766
- package/esm2020/src/event/EventHandlerPosition.mjs +0 -204
- package/esm2020/src/event/EventsManager.mjs +0 -2975
- package/esm2020/src/event/RunTimeEvent.mjs +0 -392
- package/esm2020/src/event/UserEventsTable.mjs +0 -47
- package/esm2020/src/exp/ExpTable.mjs +0 -59
- package/esm2020/src/exp/Expression.mjs +0 -200
- package/esm2020/src/exp/ExpressionDict.mjs +0 -727
- package/esm2020/src/exp/ExpressionEvaluator.mjs +0 -4212
- package/esm2020/src/exp/ExpressionLocalJpn.mjs +0 -314
- package/esm2020/src/exp/GlobalParamsTable.mjs +0 -85
- package/esm2020/src/exp/YesNoExp.mjs +0 -36
- package/esm2020/src/gui/CreatedFormVector.mjs +0 -23
- package/esm2020/src/gui/FormsTable.mjs +0 -66
- package/esm2020/src/gui/MgControl.mjs +0 -353
- package/esm2020/src/gui/MgForm.mjs +0 -1181
- package/esm2020/src/http/HttpManager.mjs +0 -97
- package/esm2020/src/http/client/HttpClientAsync.mjs +0 -67
- package/esm2020/src/http/client/HttpClientBase.mjs +0 -132
- package/esm2020/src/http/client/HttpClientEvents.mjs +0 -39
- package/esm2020/src/http/client/HttpClientSync.mjs +0 -42
- package/esm2020/src/http/client/HttpUtility.mjs +0 -84
- package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +0 -880
- package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +0 -25
- package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +0 -24
- package/esm2020/src/remote/RemoteDataViewCommandFactory.mjs +0 -61
- package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +0 -17
- package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +0 -16
- package/esm2020/src/remote/ServerError.mjs +0 -40
- package/esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +0 -20
- package/esm2020/src/rt/Argument.mjs +0 -265
- package/esm2020/src/rt/ArgumentsList.mjs +0 -103
- package/esm2020/src/rt/Boundary.mjs +0 -152
- package/esm2020/src/rt/CompMainPrgTable.mjs +0 -65
- package/esm2020/src/rt/DataviewHeaders.mjs +0 -53
- package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +0 -38
- package/esm2020/src/rt/ExecutionStack.mjs +0 -94
- package/esm2020/src/rt/HandlersTable.mjs +0 -96
- package/esm2020/src/rt/LastFocusedManager.mjs +0 -67
- package/esm2020/src/rt/Operation.mjs +0 -735
- package/esm2020/src/rt/OperationTable.mjs +0 -67
- package/esm2020/src/rt/Recompute.mjs +0 -355
- package/esm2020/src/rt/RecomputeTable.mjs +0 -63
- package/esm2020/src/rt/RemoteDataviewHeader.mjs +0 -108
- package/esm2020/src/rt/ResultValue.mjs +0 -12
- package/esm2020/src/rt/TableCache.mjs +0 -177
- package/esm2020/src/rt/TableCacheManager.mjs +0 -67
- package/esm2020/src/rt/Transaction.mjs +0 -53
- package/esm2020/src/security/UserDetails.mjs +0 -71
- package/esm2020/src/tasks/MGData.mjs +0 -552
- package/esm2020/src/tasks/MGDataCollection.mjs +0 -252
- package/esm2020/src/tasks/RCTimer.mjs +0 -63
- package/esm2020/src/tasks/RemoteTaskService.mjs +0 -45
- package/esm2020/src/tasks/Task.mjs +0 -2495
- package/esm2020/src/tasks/TaskBase.mjs +0 -87
- package/esm2020/src/tasks/TaskServiceBase.mjs +0 -25
- package/esm2020/src/tasks/TasksTable.mjs +0 -80
- package/esm2020/src/tasks/sort/Sort.mjs +0 -7
- package/esm2020/src/tasks/sort/SortCollection.mjs +0 -67
- package/esm2020/src/util/ConstUtils.mjs +0 -14
- package/esm2020/src/util/FlowMonitorQueue.mjs +0 -453
- package/esm2020/src/util/HeapSort.mjs +0 -70
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +0 -74
- package/esm2020/src/util/MgPriorityQueue.mjs +0 -66
- package/esm2020/src/util/PrmMap.mjs +0 -151
- package/esm2020/src/util/ReturnResult.mjs +0 -46
- package/esm2020/src/util/ReturnResultBase.mjs +0 -18
- package/esm2020/src/util/Scrambler.mjs +0 -89
- package/esm2020/src/util/UniqueIDUtils.mjs +0 -12
- package/esm2020/src/util/cookie.service.mjs +0 -92
- package/fesm2015/magic-xpa-engine.mjs +0 -30835
- package/fesm2015/magic-xpa-engine.mjs.map +0 -1
- package/fesm2020/magic-xpa-engine.mjs.map +0 -1
@@ -0,0 +1,97 @@
|
|
1
|
+
import { ApplicationException, Debug, NString } from "@magic-xpa/mscorelib";
|
2
|
+
import { Logger } from "@magic-xpa/utils";
|
3
|
+
import { ConstInterface } from "../ConstInterface";
|
4
|
+
import { HttpClientEvents } from "./client/HttpClientEvents";
|
5
|
+
import { HttpClientSync } from "./client/HttpClientSync";
|
6
|
+
import { HttpClientAsync } from "./client/HttpClientAsync";
|
7
|
+
export class HttpManager {
|
8
|
+
static _instance = null;
|
9
|
+
static DEFAULT_HTTP_COMMUNICATION_TIMEOUT = 5 * 1000;
|
10
|
+
static DEFAULT_OFFLINE_HTTP_COMMUNICATION_TIMEOUT = 2 * 1000;
|
11
|
+
_httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
|
12
|
+
_httpClientAsync = null;
|
13
|
+
getHttpClient() {
|
14
|
+
if (this.IsAbortingMagicEngine)
|
15
|
+
return new HttpClientSync();
|
16
|
+
return this._httpClientAsync;
|
17
|
+
}
|
18
|
+
set HttpCommunicationTimeoutMS(value) {
|
19
|
+
this._httpCommunicationTimeoutMS = value;
|
20
|
+
}
|
21
|
+
static _nativeHttpClient = null;
|
22
|
+
static setNativeHttpClient(httpClient) {
|
23
|
+
HttpManager._nativeHttpClient = httpClient;
|
24
|
+
}
|
25
|
+
static GetInstance() {
|
26
|
+
if (HttpManager._instance === null) {
|
27
|
+
HttpManager._instance = new HttpManager();
|
28
|
+
}
|
29
|
+
return HttpManager._instance;
|
30
|
+
}
|
31
|
+
_isAbortingMagicEngine = false;
|
32
|
+
get IsAbortingMagicEngine() { return this._isAbortingMagicEngine; }
|
33
|
+
set IsAbortingMagicEngine(isAbortingMagicEngine) { this._isAbortingMagicEngine = isAbortingMagicEngine; }
|
34
|
+
constructor() {
|
35
|
+
this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
|
36
|
+
this.RegisterBasicDelegates();
|
37
|
+
}
|
38
|
+
RegisterBasicDelegates() {
|
39
|
+
HttpClientEvents.GetHttpCommunicationTimeout_Event = this.GetHttpCommunicationTimeoutMS.bind(this);
|
40
|
+
}
|
41
|
+
GetHttpCommunicationTimeoutMS() {
|
42
|
+
return this._httpCommunicationTimeoutMS;
|
43
|
+
}
|
44
|
+
SetCommunicationsFailureHandler(handler) {
|
45
|
+
this.getHttpClient().CommunicationsFailureHandler = handler;
|
46
|
+
}
|
47
|
+
async GetContent(requestedURL, requestContent, useCache, isError) {
|
48
|
+
let response;
|
49
|
+
Debug.Assert(this.getHttpClient() != null);
|
50
|
+
try {
|
51
|
+
Logger.Instance.WriteServerToLog("*************************************************************************************************");
|
52
|
+
isError.value = false;
|
53
|
+
Logger.Instance.WriteServerToLog(requestedURL);
|
54
|
+
HttpManager.LogAccessToServer("", requestContent);
|
55
|
+
response = await this.getHttpClient().GetContent(requestedURL, requestContent, useCache);
|
56
|
+
Debug.Assert(response !== null);
|
57
|
+
let errorResponse = HttpManager.CheckAndGetErrorResponse(response);
|
58
|
+
if (errorResponse !== null) {
|
59
|
+
response = errorResponse;
|
60
|
+
isError.value = true;
|
61
|
+
}
|
62
|
+
return response;
|
63
|
+
}
|
64
|
+
catch (ex) {
|
65
|
+
let url = new URL(requestedURL);
|
66
|
+
throw new ApplicationException(ex.Message + "\n" + url.origin + url.pathname, ex);
|
67
|
+
}
|
68
|
+
finally {
|
69
|
+
}
|
70
|
+
}
|
71
|
+
static CheckAndGetErrorResponse(httpResponse) {
|
72
|
+
let errorResponse = null;
|
73
|
+
if (httpResponse.startsWith(ConstInterface.V24_RIA_ERROR_PREFIX))
|
74
|
+
errorResponse = httpResponse.substr(ConstInterface.V24_RIA_ERROR_PREFIX.length);
|
75
|
+
return errorResponse;
|
76
|
+
}
|
77
|
+
static LogAccessToServer(msg, requestContent) {
|
78
|
+
if (Logger.Instance.ShouldLogServerRelatedMessages()) {
|
79
|
+
if (!NString.IsNullOrEmpty(msg)) {
|
80
|
+
msg = msg + "; accessing server ...";
|
81
|
+
}
|
82
|
+
if (requestContent === null) {
|
83
|
+
if (!NString.IsNullOrEmpty(msg)) {
|
84
|
+
Logger.Instance.WriteServerToLog(msg);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
else {
|
88
|
+
if (!NString.IsNullOrEmpty(msg)) {
|
89
|
+
msg = msg + " ";
|
90
|
+
}
|
91
|
+
msg = msg + "uploading " + requestContent.length + " bytes";
|
92
|
+
Logger.Instance.WriteServerToLog(msg);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2h0dHAvSHR0cE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQVcsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsTUFBTSxPQUFPLFdBQVc7SUFDZCxNQUFNLENBQUMsU0FBUyxHQUFnQixJQUFJLENBQUM7SUFFN0MsTUFBTSxDQUFVLGtDQUFrQyxHQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDdEUsTUFBTSxDQUFVLDBDQUEwQyxHQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7SUFFdEUsMkJBQTJCLEdBQVcsV0FBVyxDQUFDLGtDQUFrQyxDQUFDO0lBQ3JGLGdCQUFnQixHQUFvQixJQUFJLENBQUM7SUFFekMsYUFBYTtRQUduQixJQUFHLElBQUksQ0FBQyxxQkFBcUI7WUFDM0IsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBRTlCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLDBCQUEwQixDQUFDLEtBQWE7UUFDMUMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixHQUFlLElBQUksQ0FBQztJQUNwRCxNQUFNLENBQUMsbUJBQW1C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QixDQUFDO1lBQzlELGFBQWEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsRixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxjQUFzQjtRQUNsRSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsOEJBQThCLEVBQUUsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLEdBQUcsR0FBRyxHQUFHLEdBQUcsd0JBQXdCLENBQUM7WUFDdkMsQ0FBQztZQUVELElBQUksY0FBYyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNoQyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2hDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO2dCQUNsQixDQUFDO2dCQUVELEdBQUcsR0FBRyxHQUFHLEdBQUcsWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO2dCQUM1RCxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBwbGljYXRpb25FeGNlcHRpb24sIERlYnVnLCBOU3RyaW5nLCBSZWZQYXJhbX0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50QmFzZX0gZnJvbSBcIi4vY2xpZW50L0h0dHBDbGllbnRCYXNlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudEV2ZW50c30gZnJvbSBcIi4vY2xpZW50L0h0dHBDbGllbnRFdmVudHNcIjtcclxuaW1wb3J0IHtJQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlcn0gZnJvbSBcIi4vY2xpZW50L0lDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudFN5bmN9IGZyb20gXCIuL2NsaWVudC9IdHRwQ2xpZW50U3luY1wiO1xyXG5pbXBvcnQge0h0dHBDbGllbnRBc3luY30gZnJvbSBcIi4vY2xpZW50L0h0dHBDbGllbnRBc3luY1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBNYW5hZ2VyIHtcclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEh0dHBNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSFRUUF9DT01NVU5JQ0FUSU9OX1RJTUVPVVQ6IG51bWJlciA9IDUgKiAxMDAwO1xyXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX09GRkxJTkVfSFRUUF9DT01NVU5JQ0FUSU9OX1RJTUVPVVQ6IG51bWJlciA9IDIgKiAxMDAwO1xyXG5cclxuICBwcml2YXRlIF9odHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUzogbnVtYmVyID0gSHR0cE1hbmFnZXIuREVGQVVMVF9IVFRQX0NPTU1VTklDQVRJT05fVElNRU9VVDtcclxuICBwcml2YXRlIF9odHRwQ2xpZW50QXN5bmM6IEh0dHBDbGllbnRBc3luYyA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgZ2V0SHR0cENsaWVudCgpOiBIdHRwQ2xpZW50QmFzZVxyXG4gIHtcclxuICAgIC8vIENyZWF0aW5nIGEgbmV3IGluc3RhbmNlIG9mIHN5bmMgSHR0cENsaWVudCBiZWNhdXNlIGl0IHdpbGwgYmUgY3JlYXRlZCBvbmx5IG9uY2UgZHVyaW5nIHRoZSBsYXN0IHJlcXVlc3RcclxuICAgIGlmKHRoaXMuSXNBYm9ydGluZ01hZ2ljRW5naW5lKVxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBDbGllbnRTeW5jKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnRBc3luYztcclxuICB9XHJcblxyXG4gIHNldCBIdHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9odHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX25hdGl2ZUh0dHBDbGllbnQ6IEh0dHBDbGllbnQgPSBudWxsO1xyXG4gIHN0YXRpYyBzZXROYXRpdmVIdHRwQ2xpZW50KGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpXHJcbiAge1xyXG4gICAgSHR0cE1hbmFnZXIuX25hdGl2ZUh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldEluc3RhbmNlKCk6IEh0dHBNYW5hZ2VyIHtcclxuICAgIGlmIChIdHRwTWFuYWdlci5faW5zdGFuY2UgPT09IG51bGwpIHtcclxuICAgICAgSHR0cE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IEh0dHBNYW5hZ2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIEh0dHBNYW5hZ2VyLl9pbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzQWJvcnRpbmdNYWdpY0VuZ2luZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldCBJc0Fib3J0aW5nTWFnaWNFbmdpbmUoKSB7IHJldHVybiB0aGlzLl9pc0Fib3J0aW5nTWFnaWNFbmdpbmU7IH1cclxuICBzZXQgSXNBYm9ydGluZ01hZ2ljRW5naW5lKGlzQWJvcnRpbmdNYWdpY0VuZ2luZTogYm9vbGVhbikgeyB0aGlzLl9pc0Fib3J0aW5nTWFnaWNFbmdpbmUgPSBpc0Fib3J0aW5nTWFnaWNFbmdpbmU7IH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2h0dHBDbGllbnRBc3luYyA9IG5ldyBIdHRwQ2xpZW50QXN5bmMoSHR0cE1hbmFnZXIuX25hdGl2ZUh0dHBDbGllbnQpO1xyXG4gICAgdGhpcy5SZWdpc3RlckJhc2ljRGVsZWdhdGVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFJlZ2lzdGVyQmFzaWNEZWxlZ2F0ZXMoKTogdm9pZCB7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldEh0dHBDb21tdW5pY2F0aW9uVGltZW91dF9FdmVudCA9IHRoaXMuR2V0SHR0cENvbW11bmljYXRpb25UaW1lb3V0TVMuYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIEdldEh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENvbW11bmljYXRpb25UaW1lb3V0TVM7XHJcbiAgfVxyXG5cclxuICBTZXRDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyKGhhbmRsZXI6IElDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldEh0dHBDbGllbnQoKS5Db21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyID0gaGFuZGxlcjtcclxuICB9XHJcblxyXG4gIGFzeW5jIEdldENvbnRlbnQocmVxdWVzdGVkVVJMOiBzdHJpbmcsIHJlcXVlc3RDb250ZW50OiBzdHJpbmcsIHVzZUNhY2hlOiBib29sZWFuLCBpc0Vycm9yOiBSZWZQYXJhbTxib29sZWFuPik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBsZXQgcmVzcG9uc2U6IHN0cmluZztcclxuICAgIERlYnVnLkFzc2VydCh0aGlzLmdldEh0dHBDbGllbnQoKSAhPSBudWxsKTtcclxuICAgIC8vIGxldCBzdGFydFRpbWU6IG51bWJlciA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU2VydmVyVG9Mb2coXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXCIpO1xyXG5cclxuICAgICAgaXNFcnJvci52YWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU2VydmVyVG9Mb2cocmVxdWVzdGVkVVJMKTtcclxuXHJcbiAgICAgIEh0dHBNYW5hZ2VyLkxvZ0FjY2Vzc1RvU2VydmVyKFwiXCIsIHJlcXVlc3RDb250ZW50KTtcclxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldEh0dHBDbGllbnQoKS5HZXRDb250ZW50KHJlcXVlc3RlZFVSTCwgcmVxdWVzdENvbnRlbnQsIHVzZUNhY2hlKTtcclxuICAgICAgRGVidWcuQXNzZXJ0KHJlc3BvbnNlICE9PSBudWxsKTtcclxuICAgICAgbGV0IGVycm9yUmVzcG9uc2U6IHN0cmluZyA9IEh0dHBNYW5hZ2VyLkNoZWNrQW5kR2V0RXJyb3JSZXNwb25zZShyZXNwb25zZSk7XHJcblxyXG4gICAgICBpZiAoZXJyb3JSZXNwb25zZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHJlc3BvbnNlID0gZXJyb3JSZXNwb25zZTtcclxuICAgICAgICBpc0Vycm9yLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgLy8gVE9ETzogcmVsYXRpdmUgcmVxdWVzdGVkVVJMIGRvZXNuJ3Qgd29yayBoZXJlLlxyXG4gICAgICBsZXQgdXJsOiBVUkwgPSBuZXcgVVJMKHJlcXVlc3RlZFVSTCk7XHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihleC5NZXNzYWdlICsgXCJcXG5cIiArIHVybC5vcmlnaW4gKyB1cmwucGF0aG5hbWUsIGV4KTtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgaW4gV2ViQ2xpZW50LlxyXG4gICAgICAvLyBIb3cgZG8gd2Uga25vdyBpZiB0aGUgY29udGVudHMgd2VyZSByZXR1cm5lZCBmb3JtIGJyb3dzZXIgY2FjaGU/XHJcbiAgICAgIC8vIGxldCBlbGFwc2VkVGltZTogbnVtYmVyID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKSAtIHN0YXJ0VGltZTtcclxuXHJcbiAgICAgIC8vIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlclRvTG9nKFxyXG4gICAgICAvLyAgICAgICAgICAgICAgIHN0cmluZy5Gb3JtYXQoXHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgXCJDb21wbGV0ZWQgezB9OiB7MTpOMH0gbXMsIGFjY3VtdWxhdGVkOiB7MjpOMH0gbXMgKHNlcnZlcjogezM6TjB9KSwgezR9ezV9ezZ9KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcIixcclxuICAgICAgLy8gICAgICAgICAgICAgICAgICAoY2FjaGluZ1N0cmF0ZWd5LkZvdW5kSW5DYWNoZVxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICA/IFwiXCJcclxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgOiBOU3RyaW5nLkZvcm1hdChcIiN7MDpOMH1cIiwgU3RhdGlzdGljcy5HZXRSZXF1ZXN0c0NudCgpKVxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgU3RhdGlzdGljcy5HZXRBY2N1bXVsYXRlZEV4dGVybmFsVGltZSgpLCBTdGF0aXN0aWNzLkdldEFjY3VtdWxhdGVkU2VydmVyVGltZSgpLFxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgIChjYWNoaW5nU3RyYXRlZ3kuRm91bmRJbkNhY2hlXHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgID8gXCJcIlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICA6IChyZXNwb25zZSAhPSBudWxsXHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTlN0cmluZy5Gb3JtYXQoXCJ7MDpOMH0gYnl0ZXMgZG93bmxvYWRlZFwiLCByZXNwb25zZS5sZW5ndGgpXHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJOdWxsIHJlc3BvbnNlIVwiKVxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgT1NFbnZpcm9ubWVudC5Fb2xTZXEsIE9TRW52aXJvbm1lbnQuVGFiU2VxKVxyXG4gICAgICAvLyAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Q2hlY2sgaWYgYW4gSFRUUCByZXNwb25zZSBpcyBhbiBlcnJvciByZXNwb25zZS5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJodHRwUmVzcG9uc2VcIj5yZXNwb25zZSByZXR1cm5lZCB0byBhbiBIVFRQIHJlcXVlc3QuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+aWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBlcnJvciBpbmRpY2F0b3IgLSB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIHRydW5jYXRlZCBhbmQgdGhlIHJlbWFpbmluZyBpcyByZXR1cm5lZC5cclxuICAvLy8gb3RoZXJ3aXNlIC0gbnVsbCAoaW5kaWNhdGluZyB0aGF0IHRoZSAnaHR0cCBSZXNwb25zZScgZGlkbid0IGNvbnRhaW4gYW4gZXJyb3IpLjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBDaGVja0FuZEdldEVycm9yUmVzcG9uc2UoaHR0cFJlc3BvbnNlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGVycm9yUmVzcG9uc2U6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgaWYgKGh0dHBSZXNwb25zZS5zdGFydHNXaXRoKENvbnN0SW50ZXJmYWNlLlYyNF9SSUFfRVJST1JfUFJFRklYKSlcclxuICAgICAgZXJyb3JSZXNwb25zZSA9IGh0dHBSZXNwb25zZS5zdWJzdHIoQ29uc3RJbnRlcmZhY2UuVjI0X1JJQV9FUlJPUl9QUkVGSVgubGVuZ3RoKTtcclxuXHJcbiAgICByZXR1cm4gZXJyb3JSZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIExvZ0FjY2Vzc1RvU2VydmVyKG1zZzogc3RyaW5nLCByZXF1ZXN0Q29udGVudDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLlNob3VsZExvZ1NlcnZlclJlbGF0ZWRNZXNzYWdlcygpKSB7XHJcbiAgICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KG1zZykpIHtcclxuICAgICAgICBtc2cgPSBtc2cgKyBcIjsgYWNjZXNzaW5nIHNlcnZlciAuLi5cIjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlcXVlc3RDb250ZW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkobXNnKSkge1xyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU2VydmVyVG9Mb2cobXNnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkobXNnKSkge1xyXG4gICAgICAgICAgbXNnID0gbXNnICsgXCIgXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBtc2cgPSBtc2cgKyBcInVwbG9hZGluZyBcIiArIHJlcXVlc3RDb250ZW50Lmxlbmd0aCArIFwiIGJ5dGVzXCI7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU2VydmVyVG9Mb2cobXNnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -0,0 +1,68 @@
|
|
1
|
+
import { HttpErrorResponse } from "@angular/common/http";
|
2
|
+
import { NString, Thread, WebException } from "@magic-xpa/mscorelib";
|
3
|
+
import { HttpClientBase, RequestMethod } from "./HttpClientBase";
|
4
|
+
import { Logger, Logger_LogLevels, Logger_MessageDirection, Misc } from "@magic-xpa/utils";
|
5
|
+
import { HttpClientEvents } from "./HttpClientEvents";
|
6
|
+
export class HttpClientAsync extends HttpClientBase {
|
7
|
+
httpClient;
|
8
|
+
constructor(httpClient) {
|
9
|
+
super();
|
10
|
+
this.httpClient = httpClient;
|
11
|
+
}
|
12
|
+
prepareRequest() {
|
13
|
+
}
|
14
|
+
addHeaders(urlString, useCache, httpHeaders, clientID) {
|
15
|
+
if (!urlString.startsWith("/"))
|
16
|
+
httpHeaders = httpHeaders.append("MgxpaRIAglobalUniqueSessionID", clientID);
|
17
|
+
if (!useCache)
|
18
|
+
httpHeaders = httpHeaders.append("Cache-Control", 'no-cache');
|
19
|
+
return httpHeaders;
|
20
|
+
}
|
21
|
+
async sendRequestToServer(httpMethod, urlString, httpHeaders, requestContent, contentFromServer) {
|
22
|
+
let httpResponse = await this.httpClient.request(RequestMethod[httpMethod], urlString, { headers: httpHeaders, responseType: "text", observe: "response", body: requestContent }).toPromise();
|
23
|
+
contentFromServer.value = httpResponse.body;
|
24
|
+
return httpResponse;
|
25
|
+
}
|
26
|
+
logResponse(httpResponse, clientID, urlString, contentFromServer, timeBeforeRequest) {
|
27
|
+
let statusCode = httpResponse['status'];
|
28
|
+
let responseTime = Misc.getSystemMilliseconds() - timeBeforeRequest;
|
29
|
+
if (Logger.Instance.LogLevel === Logger_LogLevels.Basic)
|
30
|
+
Logger.Instance.WriteBasicToLog(Logger_MessageDirection.MessageEntering, HttpClientEvents.GetRuntimeCtxID(), HttpClientEvents.GetSessionCounter(), clientID, HttpClientEvents.ShouldDisplayGenericError() ? "-" : new URL(urlString).host, responseTime, statusCode.toString(), JSON.stringify(httpResponse.headers), contentFromServer.value.length);
|
31
|
+
}
|
32
|
+
handleHttpErrorException(ex, urlString) {
|
33
|
+
if (ex instanceof HttpErrorResponse) {
|
34
|
+
let statusCode = ex['status'];
|
35
|
+
if (statusCode === 404 || statusCode === 403)
|
36
|
+
throw new WebException(new Error("bad URL: " + urlString + " - StatusCode = " + statusCode));
|
37
|
+
}
|
38
|
+
}
|
39
|
+
async shouldRetry(httpCommunicationTimeoutMS, urlString, communicationsFailureHandler, ex, startTimeRef) {
|
40
|
+
let currentDelayMS = Math.floor(httpCommunicationTimeoutMS / 10);
|
41
|
+
let httpElapsedTimeMS = Misc.getSystemMilliseconds() - startTimeRef.value + currentDelayMS;
|
42
|
+
if (httpElapsedTimeMS <= httpCommunicationTimeoutMS) {
|
43
|
+
await Thread.Sleep(currentDelayMS);
|
44
|
+
Logger.Instance.WriteWarningToLogWithMsg(NString.Format("Retrying {0} : elapsed time {1:N0}ms out of {2:N0}ms", urlString, httpElapsedTimeMS, httpCommunicationTimeoutMS));
|
45
|
+
return true;
|
46
|
+
}
|
47
|
+
Logger.Instance.WriteWarningToLogWithMsg(NString.Format("{0} : http timeout {1:N0}ms expired", urlString, httpCommunicationTimeoutMS));
|
48
|
+
if (communicationsFailureHandler != null) {
|
49
|
+
communicationsFailureHandler.CommunicationFailed(urlString, ex);
|
50
|
+
if (communicationsFailureHandler.ShouldRetryLastRequest) {
|
51
|
+
Logger.Instance.WriteServerToLog(NString.Format("Retrying {0}, confirmed by user ...", urlString));
|
52
|
+
startTimeRef.value = Misc.getSystemMilliseconds();
|
53
|
+
return true;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
return false;
|
57
|
+
}
|
58
|
+
logAndThrowException(ex) {
|
59
|
+
Logger.Instance.WriteWarningToLogWithMsg("Re-throwing ...");
|
60
|
+
Logger.Instance.WriteWarningToLog(ex);
|
61
|
+
throw new WebException(ex);
|
62
|
+
}
|
63
|
+
logExecutionAttempts(executionAttempts) {
|
64
|
+
if (executionAttempts > 1)
|
65
|
+
Logger.Instance.WriteServerToLog(NString.Format("Succeeded after {0} attempts ...", executionAttempts));
|
66
|
+
}
|
67
|
+
}
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cENsaWVudEFzeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9odHRwL2NsaWVudC9IdHRwQ2xpZW50QXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLGlCQUFpQixFQUE0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlGLE9BQU8sRUFBQyxPQUFPLEVBQVksTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBQyxjQUFjLEVBQUUsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUlwRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxjQUFjO0lBQzdCO0lBQXBCLFlBQW9CLFVBQXNCO1FBQ3hDLEtBQUssRUFBRSxDQUFDO1FBRFUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUUxQyxDQUFDO0lBRUQsY0FBYztJQUdkLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBaUIsRUFBRSxRQUFpQixFQUFFLFdBQXdCLEVBQUUsUUFBZ0I7UUFFekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQzVCLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxRQUFRO1lBQ1gsV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWhFLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsVUFBeUIsRUFBRSxTQUFp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QUFtQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNoRSxJQUFJLDRCQUE0QixDQUFDLHNCQUFzQixFQUN2RCxDQUFDO2dCQUNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxxQ0FBcUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNuRyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUNsRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsb0JBQW9CLENBQUMsRUFBRTtRQUVyQixNQUFNLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxpQkFBeUI7UUFFNUMsSUFBSSxpQkFBaUIsR0FBRyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQ0FBa0MsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7TlN0cmluZywgUmVmUGFyYW0sIFRocmVhZCwgV2ViRXhjZXB0aW9ufSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50QmFzZSwgUmVxdWVzdE1ldGhvZH0gZnJvbSBcIi4vSHR0cENsaWVudEJhc2VcIjtcclxuaW1wb3J0IHtMb2dnZXIsIExvZ2dlcl9Mb2dMZXZlbHMsIExvZ2dlcl9NZXNzYWdlRGlyZWN0aW9uLCBNaXNjfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0h0dHBDbGllbnRFdmVudHN9IGZyb20gXCIuL0h0dHBDbGllbnRFdmVudHNcIjtcclxuaW1wb3J0IHtJQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlcn0gZnJvbSBcIi4vSUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXJcIjtcclxuXHJcbi8vIEEgY2xhc3MgdXNpbmcgSHR0cCBBc3luYyBMaWJyYXJ5XHJcbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50QXN5bmMgZXh0ZW5kcyBIdHRwQ2xpZW50QmFzZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJlcGFyZVJlcXVlc3QoKVxyXG4gIHtcclxuICAgIC8vIE5vIGltcGxlbWVudGF0aW9uIG5lZWRlZFxyXG4gIH1cclxuXHJcbiAgYWRkSGVhZGVycyh1cmxTdHJpbmc6IHN0cmluZywgdXNlQ2FjaGU6IGJvb2xlYW4sIGh0dHBIZWFkZXJzOiBIdHRwSGVhZGVycywgY2xpZW50SUQ6IHN0cmluZyk6IEh0dHBIZWFkZXJzXHJcbiAge1xyXG4gICAgaWYgKCF1cmxTdHJpbmcuc3RhcnRzV2l0aChcIi9cIikpXHJcbiAgICAgIGh0dHBIZWFkZXJzID0gaHR0cEhlYWRlcnMuYXBwZW5kKFwiTWd4cGFSSUFnbG9iYWxVbmlxdWVTZXNzaW9uSURcIiwgY2xpZW50SUQpO1xyXG5cclxuICAgIGlmICghdXNlQ2FjaGUpXHJcbiAgICAgIGh0dHBIZWFkZXJzID0gaHR0cEhlYWRlcnMuYXBwZW5kKFwiQ2FjaGUtQ29udHJvbFwiLCAnbm8tY2FjaGUnKTtcclxuXHJcbiAgICByZXR1cm4gaHR0cEhlYWRlcnM7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZW5kUmVxdWVzdFRvU2VydmVyKGh0dHBNZXRob2Q6IFJlcXVlc3RNZXRob2QsIHVybFN0cmluZzogc3RyaW5nLCBodHRwSGVhZGVyczogSHR0cEhlYWRlcnMsIHJlcXVlc3RDb250ZW50OiBzdHJpbmcsIGNvbnRlbnRGcm9tU2VydmVyOiBSZWZQYXJhbTxzdHJpbmc+KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGxldCBodHRwUmVzcG9uc2U6IEh0dHBSZXNwb25zZTxzdHJpbmc+ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50LnJlcXVlc3QoUmVxdWVzdE1ldGhvZFtodHRwTWV0aG9kXSwgdXJsU3RyaW5nLFxyXG4gICAgICB7aGVhZGVyczogaHR0cEhlYWRlcnMsIHJlc3BvbnNlVHlwZTogXCJ0ZXh0XCIsIG9ic2VydmU6IFwicmVzcG9uc2VcIiwgYm9keTogcmVxdWVzdENvbnRlbnR9KS50b1Byb21pc2UoKTtcclxuXHJcbiAgICBjb250ZW50RnJvbVNlcnZlci52YWx1ZSA9IGh0dHBSZXNwb25zZS5ib2R5IGFzIGFueTtcclxuXHJcbiAgICByZXR1cm4gaHR0cFJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgbG9nUmVzcG9uc2UoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8c3RyaW5nPiwgY2xpZW50SUQ6IHN0cmluZywgdXJsU3RyaW5nOiBzdHJpbmcsIGNvbnRlbnRGcm9tU2VydmVyOiBSZWZQYXJhbTxhbnk+LCB0aW1lQmVmb3JlUmVxdWVzdDogbnVtYmVyKVxyXG4gIHtcclxuICAgIGxldCBzdGF0dXNDb2RlID0gaHR0cFJlc3BvbnNlWydzdGF0dXMnXTtcclxuXHJcbiAgICBsZXQgcmVzcG9uc2VUaW1lOiBudW1iZXIgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpIC0gdGltZUJlZm9yZVJlcXVlc3Q7XHJcbiAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLkxvZ0xldmVsID09PSBMb2dnZXJfTG9nTGV2ZWxzLkJhc2ljKVxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVCYXNpY1RvTG9nKExvZ2dlcl9NZXNzYWdlRGlyZWN0aW9uLk1lc3NhZ2VFbnRlcmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdHRwQ2xpZW50RXZlbnRzLkdldFJ1bnRpbWVDdHhJRCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuR2V0U2Vzc2lvbkNvdW50ZXIoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJRCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdHRwQ2xpZW50RXZlbnRzLlNob3VsZERpc3BsYXlHZW5lcmljRXJyb3IoKSA/IFwiLVwiIDogbmV3IFVSTCh1cmxTdHJpbmcpLmhvc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0NvZGUudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShodHRwUmVzcG9uc2UuaGVhZGVycyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudEZyb21TZXJ2ZXIudmFsdWUubGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUh0dHBFcnJvckV4Y2VwdGlvbihleDogYW55LCB1cmxTdHJpbmc6IHN0cmluZykge1xyXG4gICAgaWYgKGV4IGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpXHJcbiAgICB7XHJcbiAgICAgIGxldCBzdGF0dXNDb2RlID0gZXhbJ3N0YXR1cyddO1xyXG4gICAgICBpZiAoc3RhdHVzQ29kZSA9PT0gNDA0IHx8IHN0YXR1c0NvZGUgPT09IDQwMylcclxuICAgICAgICB0aHJvdyBuZXcgV2ViRXhjZXB0aW9uKG5ldyBFcnJvcihcImJhZCBVUkw6IFwiICsgdXJsU3RyaW5nICsgXCIgLSBTdGF0dXNDb2RlID0gXCIgKyBzdGF0dXNDb2RlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBzaG91bGRSZXRyeShodHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUzogbnVtYmVyLCB1cmxTdHJpbmc6IHN0cmluZywgY29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlcjogSUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXIsIGV4OiBhbnksIHN0YXJ0VGltZVJlZjogUmVmUGFyYW08bnVtYmVyPik6IFByb21pc2U8Ym9vbGVhbj5cclxuICB7XHJcbiAgICAvLyBkZWxheSB0aGUgdG90YWwgaHR0cCB0aW1lb3V0IC8gMTAuXHJcbiAgICBsZXQgY3VycmVudERlbGF5TVMgPSBNYXRoLmZsb29yKGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TIC8gMTApOyAvLyBtc1xyXG4gICAgbGV0IGh0dHBFbGFwc2VkVGltZU1TOiBudW1iZXIgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpIC0gc3RhcnRUaW1lUmVmLnZhbHVlICsgY3VycmVudERlbGF5TVM7XHJcblxyXG4gICAgaWYgKGh0dHBFbGFwc2VkVGltZU1TIDw9IGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TKVxyXG4gICAge1xyXG4gICAgICBhd2FpdCBUaHJlYWQuU2xlZXAoY3VycmVudERlbGF5TVMpO1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVXYXJuaW5nVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KFwiUmV0cnlpbmcgezB9IDogZWxhcHNlZCB0aW1lIHsxOk4wfW1zIG91dCBvZiB7MjpOMH1tc1wiLFxyXG4gICAgICAgIHVybFN0cmluZywgaHR0cEVsYXBzZWRUaW1lTVMsIGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TKSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVdhcm5pbmdUb0xvZ1dpdGhNc2coTlN0cmluZy5Gb3JtYXQoXCJ7MH0gOiBodHRwIHRpbWVvdXQgezE6TjB9bXMgZXhwaXJlZFwiLCB1cmxTdHJpbmcsIGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TKSk7XHJcbiAgICBpZiAoY29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlciAhPSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyLkNvbW11bmljYXRpb25GYWlsZWQodXJsU3RyaW5nLCBleCk7XHJcbiAgICAgIGlmIChjb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyLlNob3VsZFJldHJ5TGFzdFJlcXVlc3QpXHJcbiAgICAgIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTZXJ2ZXJUb0xvZyhOU3RyaW5nLkZvcm1hdChcIlJldHJ5aW5nIHswfSwgY29uZmlybWVkIGJ5IHVzZXIgLi4uXCIsIHVybFN0cmluZykpO1xyXG4gICAgICAgIHN0YXJ0VGltZVJlZi52YWx1ZSA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBsb2dBbmRUaHJvd0V4Y2VwdGlvbihleClcclxuICB7XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVXYXJuaW5nVG9Mb2dXaXRoTXNnKFwiUmUtdGhyb3dpbmcgLi4uXCIpO1xyXG4gICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlV2FybmluZ1RvTG9nKGV4KTtcclxuICAgIHRocm93IG5ldyBXZWJFeGNlcHRpb24oZXgpO1xyXG4gIH1cclxuXHJcbiAgbG9nRXhlY3V0aW9uQXR0ZW1wdHMoZXhlY3V0aW9uQXR0ZW1wdHM6IG51bWJlcilcclxuICB7XHJcbiAgICBpZiAoZXhlY3V0aW9uQXR0ZW1wdHMgPiAxKVxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTZXJ2ZXJUb0xvZyhOU3RyaW5nLkZvcm1hdChcIlN1Y2NlZWRlZCBhZnRlciB7MH0gYXR0ZW1wdHMgLi4uXCIsIGV4ZWN1dGlvbkF0dGVtcHRzKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
@@ -0,0 +1,132 @@
|
|
1
|
+
import { NString, RefParam, StringBuilder, isNullOrUndefined } from "@magic-xpa/mscorelib";
|
2
|
+
import { Logger, Logger_LogLevels, Logger_MessageDirection, Misc } from "@magic-xpa/utils";
|
3
|
+
import { HttpClientEvents } from "./HttpClientEvents";
|
4
|
+
import { HttpHeaders } from "@angular/common/http";
|
5
|
+
export var RequestMethod;
|
6
|
+
(function (RequestMethod) {
|
7
|
+
RequestMethod[RequestMethod["Get"] = 0] = "Get";
|
8
|
+
RequestMethod[RequestMethod["Post"] = 1] = "Post";
|
9
|
+
RequestMethod[RequestMethod["Put"] = 2] = "Put";
|
10
|
+
RequestMethod[RequestMethod["Delete"] = 3] = "Delete";
|
11
|
+
RequestMethod[RequestMethod["Options"] = 4] = "Options";
|
12
|
+
RequestMethod[RequestMethod["Head"] = 5] = "Head";
|
13
|
+
RequestMethod[RequestMethod["Patch"] = 6] = "Patch";
|
14
|
+
})(RequestMethod || (RequestMethod = {}));
|
15
|
+
export class HttpClientBase {
|
16
|
+
_HTTPMaxURLLength = 2048;
|
17
|
+
CommunicationsFailureHandler = null;
|
18
|
+
constructor() {
|
19
|
+
this.CommunicationsFailureHandler = null;
|
20
|
+
}
|
21
|
+
DecideOnRequestMethod(requestContent, requestURL) {
|
22
|
+
let method = RequestMethod.Get;
|
23
|
+
if (requestContent === null) {
|
24
|
+
method = RequestMethod.Get;
|
25
|
+
}
|
26
|
+
else {
|
27
|
+
if (requestURL.value.length + 1 + requestContent.length <= this._HTTPMaxURLLength) {
|
28
|
+
requestURL.value = requestURL.value + "?" + requestContent;
|
29
|
+
method = RequestMethod.Get;
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
method = RequestMethod.Post;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
return method;
|
36
|
+
}
|
37
|
+
async GetContent(requestURL, requestContent, useCache) {
|
38
|
+
let contentFromServer = new RefParam(null);
|
39
|
+
let requestUrlRef = new RefParam(requestURL);
|
40
|
+
let httpMethod = this.DecideOnRequestMethod(requestContent, requestUrlRef);
|
41
|
+
requestURL = requestUrlRef.value;
|
42
|
+
try {
|
43
|
+
let response = await this.ExecuteHttpRequest(requestURL, requestContent, useCache, httpMethod, contentFromServer);
|
44
|
+
if (response != null) {
|
45
|
+
Logger.Instance.WriteServerToLog("Incoming Headers : " + HttpClientBase.HeadersToString(response.headers, true));
|
46
|
+
let nextSessionCounterString = response.headers.get("MgxpaNextSessionCounter".toLowerCase());
|
47
|
+
if (!isNullOrUndefined(nextSessionCounterString)) {
|
48
|
+
HttpClientEvents.CheckAndSetSessionCounter(+nextSessionCounterString);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
catch (ex) {
|
53
|
+
Logger.Instance.WriteWarningToLog(ex);
|
54
|
+
throw ex;
|
55
|
+
}
|
56
|
+
return contentFromServer.value;
|
57
|
+
}
|
58
|
+
async ExecuteHttpRequest(urlString, requestContent, useCache, httpMethod, contentFromServer) {
|
59
|
+
let httpResponse = null;
|
60
|
+
this.prepareRequest();
|
61
|
+
let httpCommunicationTimeoutMS = HttpClientEvents.GetHttpCommunicationTimeout();
|
62
|
+
let clientID = HttpClientEvents.GetGlobalUniqueSessionID();
|
63
|
+
let executionAttempts = 0;
|
64
|
+
let startTime = Misc.getSystemMilliseconds();
|
65
|
+
while (true) {
|
66
|
+
executionAttempts++;
|
67
|
+
try {
|
68
|
+
let httpHeaders = new HttpHeaders();
|
69
|
+
httpHeaders = this.addHeaders(urlString, useCache, httpHeaders, clientID);
|
70
|
+
Logger.Instance.WriteServerToLog(NString.Format("Request Timeout set to {0} ms", httpCommunicationTimeoutMS));
|
71
|
+
if (Logger.Instance.LogLevel === Logger_LogLevels.Basic) {
|
72
|
+
let contentLength = 0;
|
73
|
+
if (httpMethod === RequestMethod.Get) {
|
74
|
+
let parts = urlString.split('?');
|
75
|
+
if (parts.length === 2)
|
76
|
+
contentLength = parts[1].length;
|
77
|
+
}
|
78
|
+
else
|
79
|
+
contentLength = requestContent.length;
|
80
|
+
Logger.Instance.WriteBasicToLog(Logger_MessageDirection.MessageLeaving, HttpClientEvents.GetRuntimeCtxID(), HttpClientEvents.GetSessionCounter(), clientID, HttpClientEvents.ShouldDisplayGenericError() ? "-" : new URL(urlString).host, 0, '-', JSON.stringify(httpHeaders), contentLength);
|
81
|
+
}
|
82
|
+
let timeBeforeRequest = Misc.getSystemMilliseconds();
|
83
|
+
Logger.Instance.WriteServerToLog(NString.Format("Accessing (method: '{0}'): '{1}'", httpMethod, urlString));
|
84
|
+
Logger.Instance.WriteServerToLog("Outgoing Headers : " + HttpClientBase.HeadersToString(httpHeaders, false));
|
85
|
+
if (httpMethod === RequestMethod.Post) {
|
86
|
+
}
|
87
|
+
let requestTime = Misc.getSystemMilliseconds();
|
88
|
+
this.LogRequestInfo(!isNullOrUndefined(requestContent) ? requestContent.length : 0, requestTime, false);
|
89
|
+
httpResponse = await this.sendRequestToServer(httpMethod, urlString, httpHeaders, requestContent, contentFromServer);
|
90
|
+
this.logResponse(httpResponse, clientID, urlString, contentFromServer, timeBeforeRequest);
|
91
|
+
this.LogRequestInfo(!isNullOrUndefined(requestContent) ? requestContent.length : 0, Misc.getSystemMilliseconds() - requestTime, true);
|
92
|
+
break;
|
93
|
+
}
|
94
|
+
catch (ex) {
|
95
|
+
if (Logger.Instance.LogLevel === Logger_LogLevels.Basic)
|
96
|
+
Logger.Instance.WriteBasicErrorToLog();
|
97
|
+
else
|
98
|
+
Logger.Instance.WriteWarningToLog(ex);
|
99
|
+
this.handleHttpErrorException(ex, urlString);
|
100
|
+
let startTimeRef = new RefParam(startTime);
|
101
|
+
if (this.shouldRetry(httpCommunicationTimeoutMS, urlString, this.CommunicationsFailureHandler, ex, startTimeRef)) {
|
102
|
+
startTime = startTimeRef.value;
|
103
|
+
continue;
|
104
|
+
}
|
105
|
+
this.logAndThrowException(ex);
|
106
|
+
}
|
107
|
+
}
|
108
|
+
this.logExecutionAttempts(executionAttempts);
|
109
|
+
return httpResponse;
|
110
|
+
}
|
111
|
+
LogRequestInfo(contentLength, roundTrip, isLoggingResponse) {
|
112
|
+
if (Logger.Instance.LogLevel == Logger_LogLevels.RequestInfo) {
|
113
|
+
HttpClientEvents.ComputeAndLogRequestInfo(contentLength, roundTrip, isLoggingResponse);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
static HeadersToString(headers, bFilter) {
|
117
|
+
let headersStr = new StringBuilder();
|
118
|
+
let headerKeys = headers.keys();
|
119
|
+
for (let key in headerKeys) {
|
120
|
+
if (!bFilter || headerKeys[key].startsWith("Mg"))
|
121
|
+
headersStr.Append(NString.Format("{0}:{1} ", headerKeys[key], headers.get(headerKeys[key])));
|
122
|
+
}
|
123
|
+
return headersStr;
|
124
|
+
}
|
125
|
+
async sendRequestToServer(httpMethod, urlString, httpHeaders, requestContent, contentFromServer) {
|
126
|
+
return Promise.resolve();
|
127
|
+
}
|
128
|
+
async shouldRetry(httpCommunicationTimeoutMS, urlString, communicationsFailureHandler, ex, startTimeRef) {
|
129
|
+
return Promise.resolve(false);
|
130
|
+
}
|
131
|
+
}
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cENsaWVudEJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2h0dHAvY2xpZW50L0h0dHBDbGllbnRCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFekYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRy9ELE1BQU0sQ0FBTixJQUFZLGFBU1g7QUFURCxXQUFZLGFBQWE7SUFFdkIsK0NBQU8sQ0FBQTtJQUNQLGlEQUFRLENBQUE7SUFDUiwrQ0FBTyxDQUFBO0lBQ1AscURBQVUsQ0FBQTtJQUNWLHVEQUFXLENBQUE7SUFDWCxpREFBUSxDQUFBO0lBQ1IsbURBQVMsQ0FBQTtBQUNYLENBQUMsRUFUVyxhQUFhLEtBQWIsYUFBYSxRQVN4QjtBQVVELE1BQU0sT0FBZ0IsY0FBYztJQUMxQixpQkFBaUIsR0FBVyxJQUFJLENBQUM7SUFPekMsNEJBQTRCLEdBQWtDLElBQUksQ0FBQztJQUVuRTtRQUNFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQU9PLHFCQUFxQixDQUFDLGNBQXNCLEVBQUUsVUFBNEI7UUFDaEYsSUFBSSxNQUFNLEdBQWtCLGFBQWEsQ0FBQyxHQUFHLENBQUM7UUFFOUMsSUFBSSxjQUFjLEtBQUssSUFBSSxFQUFFLENBQUM7WUFFNUIsTUFBTSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7UUFDN0IsQ0FBQzthQUNJLENBQUM7WUFDSixJ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LENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUtELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxVQUF5QixFQUFFLFNBQWlCLEVBQUUsV0FBd0IsRUFBRSxjQUFzQixFQUFFLGlCQUFtQztRQUMzSixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0QsS0FBSyxDQUFDLFdBQVcsQ0FBQywwQkFBa0MsRUFBRSxTQUFpQixFQUFFLDRCQUEyRCxFQUFFLEVBQU8sRUFBRSxZQUE4QjtRQUMzSyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOU3RyaW5nLCBSZWZQYXJhbSwgU3RyaW5nQnVpbGRlciwgaXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyX0xvZ0xldmVscywgTG9nZ2VyX01lc3NhZ2VEaXJlY3Rpb24sIE1pc2N9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXJ9IGZyb20gXCIuL0lDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudEV2ZW50c30gZnJvbSBcIi4vSHR0cENsaWVudEV2ZW50c1wiO1xyXG5pbXBvcnQge0h0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuXHJcbmV4cG9ydCBlbnVtIFJlcXVlc3RNZXRob2Rcclxue1xyXG4gIEdldCA9IDAsXHJcbiAgUG9zdCA9IDEsXHJcbiAgUHV0ID0gMixcclxuICBEZWxldGUgPSAzLFxyXG4gIE9wdGlvbnMgPSA0LFxyXG4gIEhlYWQgPSA1LFxyXG4gIFBhdGNoID0gNlxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyB0aGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvcjpcclxuLy8vICAgIChpKSBkZWNpZGluZyB3aGljaCBtZXRob2QgdG8gdXNlIChHRVQvUE9TVCkuXHJcbi8vLyAgIChpaSkgaGFuZGxpbmcgY29tbXVuaWNhdGlvbiBmYWlsdXJlcy5cclxuLy8vICAoaWlpKSBhZGRpbmcgSFRUUCBoZWFkZXJzIHRvIHJlcXVlc3RzLlxyXG4vLy8gIChpVikgcmV0cmlldmluZyBIVFRQIGhlYWRlcnMgZnJvbSByZXNwb25zZXMuXHJcbi8vLyA8L3N1bW1hcnk+XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSHR0cENsaWVudEJhc2Uge1xyXG4gIHByaXZhdGUgX0hUVFBNYXhVUkxMZW5ndGg6IG51bWJlciA9IDIwNDg7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyBvciBzZXRzIGEgaGFuZGxlciBmb3IgY29tbXVuaWNhdGlvbnMgZmFpbHVyZS4gVGhpcyBwcm9wZXJ0eSBtYXkgYmVcclxuICAvLy8gc2V0IHRvIG51bGwsIGluIHdoaWNoIGNhc2UgdGhlIEh0dHBDbGllbnRCYXNlIHdpbGwgYXV0b21hdGljYWxseSBmYWlsIGFmdGVyXHJcbiAgLy8vIHRoZSBmaXJzdCByZWNvbm5lY3Rpb24gYXR0ZW1wdC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIENvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXI6IElDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLkNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXIgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm5zIHRoZSByZXF1ZXN0IG1ldGhvZCAoUE9TVCBvciBHRVQpIGJhc2VkIG9uIGl0cyBjb250ZW50cyBhbmQgbGVuZ3RoLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVxdWVzdFVSTFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIERlY2lkZU9uUmVxdWVzdE1ldGhvZChyZXF1ZXN0Q29udGVudDogc3RyaW5nLCByZXF1ZXN0VVJMOiBSZWZQYXJhbTxzdHJpbmc+KTogUmVxdWVzdE1ldGhvZCB7XHJcbiAgICBsZXQgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kID0gUmVxdWVzdE1ldGhvZC5HZXQ7XHJcblxyXG4gICAgaWYgKHJlcXVlc3RDb250ZW50ID09PSBudWxsKSB7XHJcbiAgICAgIC8vIHJlcXVlc3RDb250ZW50ICg9PSBjb250ZW50IHRvIGJlIHNlbnQgdG8gc2VydmVyKSBpcyBhbGxvd2VkIG9ubHkgaW4gUE9TVCByZXF1ZXN0cy4gSW4gY2FzZSBubyBjb250ZW50IGlzIHJlcXVpcmVkLCBvcHQgZm9yIEdFVCAoZm9yIHRoZSBhZm9yZW1lbnRpb25lZCBwZXJmb3JtYW5jZSByZWFzb24pLlxyXG4gICAgICBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLkdldDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAocmVxdWVzdFVSTC52YWx1ZS5sZW5ndGggKyAxICsgcmVxdWVzdENvbnRlbnQubGVuZ3RoIDw9IHRoaXMuX0hUVFBNYXhVUkxMZW5ndGgpIHtcclxuICAgICAgICAvLyBhcHBlbmQgdGhlIHJlcXVlc3QgY29udGVudCB0byB0aGUgVVJMLCBhbmQgc3dpdGNoIHRvIHVzaW5nIGEgR0VUIHJlcXVlc3QuXHJcbiAgICAgICAgcmVxdWVzdFVSTC52YWx1ZSA9IHJlcXVlc3RVUkwudmFsdWUgKyBcIj9cIiArIHJlcXVlc3RDb250ZW50O1xyXG4gICAgICAgIG1ldGhvZCA9IFJlcXVlc3RNZXRob2QuR2V0O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIG1ldGhvZCA9IFJlcXVlc3RNZXRob2QuUG9zdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtZXRob2Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+R2V0cyBjb250ZW50cyBvZiBhIFVSTCwgdXNpbmcgZWl0aGVyIEdFVCBvciBQT1NUIG1ldGhvZHMuXHJcbiAgLy8vIFRoZSBtZXRob2QgZXhlY3V0ZXMgdGhlIEhUVFAgcmVxdWVzdCwgcmVhZHMgdGhlIHJlc3BvbnNlIGFuZCByZXR1cm4gdGhlIGNvbnRlbnQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXF1ZXN0VVJMXCI+VVJMIHRvIGJlIGFjY2Vzc2VkLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVxdWVzdENvbnRlbnRcIj5jb250ZW50IHRvIGJlIHNlbnQgdG8gc2VydmVyIChyZWxldmFudCBvbmx5IGZvciBQT1NUIG1ldGhvZCAtIGlzIG51bGwgZm9yIG90aGVyIG1ldGhvZHMpLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnJlc3BvbnNlIChmcm9tIHRoZSBzZXJ2ZXIpLjwvcmV0dXJucz5cclxuICBhc3luYyBHZXRDb250ZW50KHJlcXVlc3RVUkw6IHN0cmluZywgcmVxdWVzdENvbnRlbnQ6IGFueSwgdXNlQ2FjaGU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgbGV0IGNvbnRlbnRGcm9tU2VydmVyOiBSZWZQYXJhbTxzdHJpbmc+ID0gbmV3IFJlZlBhcmFtKG51bGwpO1xyXG4gICAgbGV0IHJlcXVlc3RVcmxSZWY6IFJlZlBhcmFtPHN0cmluZz4gPSBuZXcgUmVmUGFyYW0ocmVxdWVzdFVSTCk7XHJcblxyXG4gICAgbGV0IGh0dHBNZXRob2Q6IFJlcXVlc3RNZXRob2QgPSB0aGlzLkRlY2lkZU9uUmVxdWVzdE1ldGhvZChyZXF1ZXN0Q29udGVudCwgcmVxdWVzdFVybFJlZik7XHJcbiAgICByZXF1ZXN0VVJMID0gcmVxdWVzdFVybFJlZi52YWx1ZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBFeGVjdXRlIHRoZSBodHRwIHJlcXVlc3RcclxuICAgICAgbGV0IHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8c3RyaW5nPiA9IGF3YWl0IHRoaXMuRXhlY3V0ZUh0dHBSZXF1ZXN0KHJlcXVlc3RVUkwsIHJlcXVlc3RDb250ZW50LCB1c2VDYWNoZSwgaHR0cE1ldGhvZCwgY29udGVudEZyb21TZXJ2ZXIpO1xyXG5cclxuICAgICAgaWYocmVzcG9uc2UgIT0gbnVsbCkge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlclRvTG9nKFwiSW5jb21pbmcgSGVhZGVycyA6IFwiICsgSHR0cENsaWVudEJhc2UuSGVhZGVyc1RvU3RyaW5nKHJlc3BvbnNlLmhlYWRlcnMsIHRydWUpKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRoZSBuZXh0IHNlc3Npb24gY291bnRlciAod2hpY2ggd2lsbCBiZSBleHBlY3RlZCBieSB0aGUgc2VydmVyIGluIHRoZSBuZXh0IHJlcXVlc3QpLlxyXG4gICAgICAgIGxldCBuZXh0U2Vzc2lvbkNvdW50ZXJTdHJpbmc6IHN0cmluZyA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiTWd4cGFOZXh0U2Vzc2lvbkNvdW50ZXJcIi50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG5leHRTZXNzaW9uQ291bnRlclN0cmluZykpIHtcclxuICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuQ2hlY2tBbmRTZXRTZXNzaW9uQ291bnRlcigrbmV4dFNlc3Npb25Db3VudGVyU3RyaW5nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVXYXJuaW5nVG9Mb2coZXgpO1xyXG4gICAgICB0aHJvdyBleDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29udGVudEZyb21TZXJ2ZXIudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+VGhpcyBmdW5jdGlvbiBleGVjdXRlcyB0aGUgSFRUUCByZXF1ZXN0IGFuZCBtYWtlIHRoZSByZXNwb25zZSBvYmplY3QuIEl0IGNhbiBleGVjdXRlXHJcbiAgLy8vICAgR0VUIG9yIFBPU1QgcmVxdWVzdC4gSW4gY2FzZSBvZiBQT1NUIHJlcXVlc3QgdGhlIHZhcmlhYmxlcyB0byBzZXJ2ZXIgd2lsbCBjb250YWluIHRoZVxyXG4gIC8vLyAgIHZhcmlhYmxlcyB0byBiZSBzZW5kIHRvIHRoZSBzZXJ2ZXIuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ1cmxTdHJpbmdcIj5VUkwgdG8gYmUgYWNjZXNzZWQuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXF1ZXN0Q29udGVudFwiPmNvbnRlbnQgdG8gYmUgc2VudCB0byBzZXJ2ZXIgKHJlbGV2YW50IG9ubHkgZm9yIFBPU1QgbWV0aG9kIC0gaXMgbnVsbCBmb3Igb3RoZXIgbWV0aG9kcykuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJodHRwTWV0aG9kXCI+ZW51bSBSZXF1ZXN0TWV0aG9kIHRvIHNwZWNpZnkgdGhlIG1ldGhvZCB0aGF0IHdpbGwgYmUgdXNlZCB0byBleGVjdXRlIHRoZSByZXF1ZXN0LjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGVudEZyb21TZXJ2ZXJcIj5jb250ZW50IHJlY2VpdmVkIGZyb20gdGhlIHJlc3BvbnNlLiBbT1VUXTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIGFzeW5jIEV4ZWN1dGVIdHRwUmVxdWVzdCh1cmxTdHJpbmc6IHN0cmluZywgcmVxdWVzdENvbnRlbnQ6IHN0cmluZywgdXNlQ2FjaGU6IGJvb2xlYW4sIGh0dHBNZXRob2Q6IFJlcXVlc3RNZXRob2QsIGNvbnRlbnRGcm9tU2VydmVyOiBSZWZQYXJhbTxhbnk+KTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8c3RyaW5nPj5cclxuICB7XHJcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8c3RyaW5nPiA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5wcmVwYXJlUmVxdWVzdCgpO1xyXG5cclxuICAgIGxldCBodHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUzogbnVtYmVyID0gSHR0cENsaWVudEV2ZW50cy5HZXRIdHRwQ29tbXVuaWNhdGlvblRpbWVvdXQoKTtcclxuICAgIGxldCBjbGllbnRJRDogc3RyaW5nID0gSHR0cENsaWVudEV2ZW50cy5HZXRHbG9iYWxVbmlxdWVTZXNzaW9uSUQoKTtcclxuXHJcbiAgICBsZXQgZXhlY3V0aW9uQXR0ZW1wdHM6IG51bWJlciA9IDA7ICAvLyBmb3IgbG9nZ2luZyBwdXJwb3NlIG9ubHkuXHJcblxyXG4gICAgbGV0IHN0YXJ0VGltZTogbnVtYmVyID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuXHJcbiAgICAvLyBSZXRyeWluZzpcclxuICAgIC8vICAgIElzIGNvbnRyb2xsZWQgYnk6XHJcbiAgICAvLyAgICAgICAoSSkgIFRoZSBtZXRob2QgdmFyaWFibGUgJ2h0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TJyAoYWJvdmUpLFxyXG4gICAgLy8gICAgICAgKElJKSBUaGUgY2xhc3MgbWVtYmVyICdDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyJyAoYWJvdmUpLlxyXG4gICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgZXhlY3V0aW9uQXR0ZW1wdHMrKztcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50IFRMUyBwcm90b2NvbC5cclxuICAgICAgICAvLyBsZXQgdXNlSGlnaGVzdFNlY3VyaXR5UHJvdG9jb2w6IGJvb2xlYW4gPSBIdHRwQ2xpZW50QmFzZS5HZXRVc2VIaWdoZXN0U2VjdXJpdHlQcm90b2NvbCgpO1xyXG4gICAgICAgIC8vIGlmICh1c2VIaWdoZXN0U2VjdXJpdHlQcm90b2NvbCkge1xyXG4gICAgICAgIC8vICAgU2VydmljZVBvaW50TWFuYWdlci5TZWN1cml0eVByb3RvY29sID0gU2VjdXJpdHlQcm90b2NvbFR5cGUuVGxzMTI7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAvLyBEbyBub3QgYWRkIE1neHBhUklBZ2xvYmFsVW5pcXVlU2Vzc2lvbklEIHdoaWxlIGdldHRpbmcgZXhlY3V0aW9uIHByb3BlcnRpZXNcclxuICAgICAgICAvLyBUT0RPOiBoZWFkZXJzIHNob3VsZCBub3QgYmUgc2VudCBmb3IgY2FjaGVkIGZpbGUgcmVxdWVzdHNcclxuICAgICAgICBsZXQgaHR0cEhlYWRlcnM6IEh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcblxyXG4gICAgICAgIGh0dHBIZWFkZXJzID0gdGhpcy5hZGRIZWFkZXJzKHVybFN0cmluZywgdXNlQ2FjaGUsIGh0dHBIZWFkZXJzLCBjbGllbnRJRCk7XHJcblxyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlclRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiUmVxdWVzdCBUaW1lb3V0IHNldCB0byB7MH0gbXNcIiwgaHR0cENvbW11bmljYXRpb25UaW1lb3V0TVMpKTtcclxuXHJcbiAgICAgICAgaWYgKExvZ2dlci5JbnN0YW5jZS5Mb2dMZXZlbCA9PT0gTG9nZ2VyX0xvZ0xldmVscy5CYXNpYykge1xyXG4gICAgICAgICAgbGV0IGNvbnRlbnRMZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgICAgICAgICBpZiAoaHR0cE1ldGhvZCA9PT0gUmVxdWVzdE1ldGhvZC5HZXQpIHtcclxuICAgICAgICAgICAgbGV0IHBhcnRzOiBzdHJpbmdbXSA9IHVybFN0cmluZy5zcGxpdCgnPycpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMilcclxuICAgICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gcGFydHNbMV0ubGVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSAvLyAoaHR0cFJlcXVlc3QubWV0aG9kID09PSBSZXF1ZXN0TWV0aG9kLlBvc3QpXHJcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSByZXF1ZXN0Q29udGVudC5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlQmFzaWNUb0xvZyhMb2dnZXJfTWVzc2FnZURpcmVjdGlvbi5NZXNzYWdlTGVhdmluZyxcclxuICAgICAgICAgICAgSHR0cENsaWVudEV2ZW50cy5HZXRSdW50aW1lQ3R4SUQoKSxcclxuICAgICAgICAgICAgSHR0cENsaWVudEV2ZW50cy5HZXRTZXNzaW9uQ291bnRlcigpLFxyXG4gICAgICAgICAgICBjbGllbnRJRCxcclxuICAgICAgICAgICAgSHR0cENsaWVudEV2ZW50cy5TaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yKCkgPyBcIi1cIiA6IG5ldyBVUkwodXJsU3RyaW5nKS5ob3N0LFxyXG4gICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAnLScsXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGh0dHBIZWFkZXJzKSxcclxuICAgICAgICAgICAgY29udGVudExlbmd0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdGltZUJlZm9yZVJlcXVlc3Q6IG51bWJlciA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU2VydmVyVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJBY2Nlc3NpbmcgKG1ldGhvZDogJ3swfScpOiAnezF9J1wiLCBodHRwTWV0aG9kLCB1cmxTdHJpbmcpKTtcclxuXHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU2VydmVyVG9Mb2coXCJPdXRnb2luZyBIZWFkZXJzIDogXCIgKyBIdHRwQ2xpZW50QmFzZS5IZWFkZXJzVG9TdHJpbmcoaHR0cEhlYWRlcnMsIGZhbHNlKSk7XHJcblxyXG4gICAgICAgIGlmIChodHRwTWV0aG9kID09PSBSZXF1ZXN0TWV0aG9kLlBvc3QpIHtcclxuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBFeHBlY3QxMDBDb250aW51ZS5cclxuICAgICAgICAgIC8vIGh0dHBXZWJSZXF1ZXN0LlNlcnZpY2VQb2ludC5FeHBlY3QxMDBDb250aW51ZSA9IHRoaXMuR2V0SFRUUEV4cGVjdDEwMENvbnRpbnVlKCk7XHJcbiAgICAgICAgICAvLyB0aGlzLldyaXRlQ29udGVudFRvUmVxdWVzdChyZXF1ZXN0Q29udGVudCwgaHR0cFdlYlJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAgIC8vIHNlbmQgdGhlIHJlcXVlc3QgJiBnZXQgdGhlIHJlc3BvbnNlOlxyXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgICAvLyBUT0RPIDogSGFuZGxlIGVycm9yc1xyXG4gICAgICAgIC8vIFRPRE86IEhhbmRsZSB0aW1lb3V0XHJcblxyXG4gICAgICAgIGxldCByZXF1ZXN0VGltZTpudW1iZXIgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG5cclxuICAgICAgICB0aGlzLkxvZ1JlcXVlc3RJbmZvKCFpc051bGxPclVuZGVmaW5lZChyZXF1ZXN0Q29udGVudCkgPyByZXF1ZXN0Q29udGVudC5sZW5ndGggOiAwLCByZXF1ZXN0VGltZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0VG9TZXJ2ZXIoaHR0cE1ldGhvZCwgdXJsU3RyaW5nLCBodHRwSGVhZGVycywgcmVxdWVzdENvbnRlbnQsIGNvbnRlbnRGcm9tU2VydmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2dSZXNwb25zZShodHRwUmVzcG9uc2UsIGNsaWVudElELCB1cmxTdHJpbmcsIGNvbnRlbnRGcm9tU2VydmVyLCB0aW1lQmVmb3JlUmVxdWVzdCk7XHJcblxyXG4gICAgICAgIHRoaXMuTG9nUmVxdWVzdEluZm8oIWlzTnVsbE9yVW5kZWZpbmVkKHJlcXVlc3RDb250ZW50KSA/IHJlcXVlc3RDb250ZW50Lmxlbmd0aCA6IDAsIE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCkgLSByZXF1ZXN0VGltZSwgdHJ1ZSk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuTG9nTGV2ZWwgPT09IExvZ2dlcl9Mb2dMZXZlbHMuQmFzaWMpXHJcbiAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVCYXNpY0Vycm9yVG9Mb2coKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVXYXJuaW5nVG9Mb2coZXgpO1xyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZUh0dHBFcnJvckV4Y2VwdGlvbihleCwgdXJsU3RyaW5nKTtcclxuXHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZVJlZjogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbTxudW1iZXI+KHN0YXJ0VGltZSk7XHJcbiAgICAgICAgaWYodGhpcy5zaG91bGRSZXRyeShodHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUywgdXJsU3RyaW5nLCB0aGlzLkNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXIsIGV4LCBzdGFydFRpbWVSZWYpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHN0YXJ0VGltZSA9IHN0YXJ0VGltZVJlZi52YWx1ZTtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5sb2dBbmRUaHJvd0V4Y2VwdGlvbihleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvZ0V4ZWN1dGlvbkF0dGVtcHRzKGV4ZWN1dGlvbkF0dGVtcHRzKTtcclxuXHJcbiAgICByZXR1cm4gaHR0cFJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBMb2cgdGhlIHJlcXVlc3QgaW5mbyB3aGlsZSBzZW5kaW5nIHJlcXVlc3QvYWZ0ZXIgcmVjZWl2aW5nIHJlc3BvbnNlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIExvZ1JlcXVlc3RJbmZvKGNvbnRlbnRMZW5ndGg6IG51bWJlciwgcm91bmRUcmlwOiBudW1iZXIsIGlzTG9nZ2luZ1Jlc3BvbnNlOiBib29sZWFuKSB7XHJcbiAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLkxvZ0xldmVsID09IExvZ2dlcl9Mb2dMZXZlbHMuUmVxdWVzdEluZm8pIHtcclxuICAgICAgSHR0cENsaWVudEV2ZW50cy5Db21wdXRlQW5kTG9nUmVxdWVzdEluZm8oY29udGVudExlbmd0aCwgcm91bmRUcmlwLCBpc0xvZ2dpbmdSZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+V3JpdGUgTWcqIHByZWZpeGVkIGhlYWRlcnMgdG8gc3RyaW5nIGluIGZvcm1hdCBcIkhFQURFUjE6VkFMVUUxIEhFQURFUjI6VkFMVUUyIC4uLlwiPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhlYWRlcnNcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImJGaWx0ZXJcIj5pZiB0cnVlLCBsaXN0IG9ubHkgaGVhZGVycyBwcmVmaXhlZCB3aXRoIFwiTWdcIjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgSGVhZGVyc1RvU3RyaW5nKGhlYWRlcnM6IEh0dHBIZWFkZXJzLCBiRmlsdGVyOiBib29sZWFuKTogU3RyaW5nQnVpbGRlciB7XHJcbiAgICBsZXQgaGVhZGVyc1N0cjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcbiAgICBsZXQgaGVhZGVyS2V5czogc3RyaW5nW10gPSBoZWFkZXJzLmtleXMoKTtcclxuXHJcbiAgICBmb3IgKGxldCBrZXkgaW4gaGVhZGVyS2V5cykge1xyXG4gICAgICAvLyBmaWx0ZXIgb25seSBoZWFkZXJzIHRoYXQgYXJlIHByZWZpeGVkIHdpdGggTWcqIChzZW50IGZyb20gdGhlIE1pZGRsZXdhcmUgYW5kIFNlcnZlcik6XHJcbiAgICAgIGlmICghYkZpbHRlciB8fCBoZWFkZXJLZXlzW2tleV0uc3RhcnRzV2l0aChcIk1nXCIpKVxyXG4gICAgICAgIGhlYWRlcnNTdHIuQXBwZW5kKE5TdHJpbmcuRm9ybWF0KFwiezB9OnsxfSBcIiwgaGVhZGVyS2V5c1trZXldLCBoZWFkZXJzLmdldChoZWFkZXJLZXlzW2tleV0pKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGhlYWRlcnNTdHI7XHJcbiAgfVxyXG5cclxuICAvLyBBYnN0cmFjdCBtZXRob2RzXHJcbiAgYWJzdHJhY3QgcHJlcGFyZVJlcXVlc3QoKTtcclxuICBhYnN0cmFjdCBhZGRIZWFkZXJzKHVybFN0cmluZzogc3RyaW5nLCB1c2VDYWNoZTogYm9vbGVhbiwgaHR0cEhlYWRlcnM6IEh0dHBIZWFkZXJzLCBjbGllbnRJRDogc3RyaW5nKTogSHR0cEhlYWRlcnM7XHJcbiAgYXN5bmMgc2VuZFJlcXVlc3RUb1NlcnZlcihodHRwTWV0aG9kOiBSZXF1ZXN0TWV0aG9kLCB1cmxTdHJpbmc6IHN0cmluZywgaHR0cEhlYWRlcnM6IEh0dHBIZWFkZXJzLCByZXF1ZXN0Q29udGVudDogc3RyaW5nLCBjb250ZW50RnJvbVNlcnZlcjogUmVmUGFyYW08c3RyaW5nPik6IFByb21pc2U8YW55PntcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICB9XHJcbiAgYWJzdHJhY3QgbG9nUmVzcG9uc2UoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8c3RyaW5nPiwgY2xpZW50SUQ6IHN0cmluZywgdXJsU3RyaW5nOiBzdHJpbmcsIGNvbnRlbnRGcm9tU2VydmVyOiBSZWZQYXJhbTxhbnk+LCB0aW1lQmVmb3JlUmVxdWVzdDogbnVtYmVyKTtcclxuICBhYnN0cmFjdCBoYW5kbGVIdHRwRXJyb3JFeGNlcHRpb24oZXg6IGFueSwgdXJsU3RyaW5nOiBzdHJpbmcpO1xyXG4gIGFzeW5jIHNob3VsZFJldHJ5KGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TOiBudW1iZXIsIHVybFN0cmluZzogc3RyaW5nLCBjb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyOiBJQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlciwgZXg6IGFueSwgc3RhcnRUaW1lUmVmOiBSZWZQYXJhbTxudW1iZXI+KTogUHJvbWlzZTxib29sZWFuPntcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gIH1cclxuICBhYnN0cmFjdCBsb2dBbmRUaHJvd0V4Y2VwdGlvbihleDogYW55KTtcclxuICBhYnN0cmFjdCBsb2dFeGVjdXRpb25BdHRlbXB0cyhleGVjdXRpb25BdHRlbXB0czogbnVtYmVyKTtcclxufVxyXG4iXX0=
|
@@ -0,0 +1,39 @@
|
|
1
|
+
export class HttpClientEvents {
|
2
|
+
static GetHttpCommunicationTimeout_Event = null;
|
3
|
+
static GetExecutionProperty_Event = null;
|
4
|
+
static GetGlobalUniqueSessionID_Event = null;
|
5
|
+
static ShouldDisplayGenericError_Event = null;
|
6
|
+
static GetRuntimeCtxID_Event = null;
|
7
|
+
static GetSessionCounter_Event = null;
|
8
|
+
static CheckAndSetSessionCounter_Event = null;
|
9
|
+
static ComputeAndLogRequestInfo_Event = null;
|
10
|
+
static GetHttpCommunicationTimeout() {
|
11
|
+
return (HttpClientEvents.GetHttpCommunicationTimeout_Event !== null) ? HttpClientEvents.GetHttpCommunicationTimeout_Event() : 5000;
|
12
|
+
}
|
13
|
+
static GetExecutionProperty(propertyName) {
|
14
|
+
return (HttpClientEvents.GetExecutionProperty_Event !== null) ? HttpClientEvents.GetExecutionProperty_Event(propertyName) : null;
|
15
|
+
}
|
16
|
+
static GetGlobalUniqueSessionID() {
|
17
|
+
return (HttpClientEvents.GetGlobalUniqueSessionID_Event !== null) ? HttpClientEvents.GetGlobalUniqueSessionID_Event() : null;
|
18
|
+
}
|
19
|
+
static ShouldDisplayGenericError() {
|
20
|
+
return HttpClientEvents.ShouldDisplayGenericError_Event === null || HttpClientEvents.ShouldDisplayGenericError_Event();
|
21
|
+
}
|
22
|
+
static GetRuntimeCtxID() {
|
23
|
+
return (HttpClientEvents.GetRuntimeCtxID_Event !== null) ? HttpClientEvents.GetRuntimeCtxID_Event() : "";
|
24
|
+
}
|
25
|
+
static GetSessionCounter() {
|
26
|
+
return (HttpClientEvents.GetSessionCounter_Event !== null) ? HttpClientEvents.GetSessionCounter_Event() : 0;
|
27
|
+
}
|
28
|
+
static CheckAndSetSessionCounter(value) {
|
29
|
+
let flag = HttpClientEvents.CheckAndSetSessionCounter_Event !== null;
|
30
|
+
if (flag) {
|
31
|
+
HttpClientEvents.CheckAndSetSessionCounter_Event(value);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
static ComputeAndLogRequestInfo(contentLength, roundTrip, isLoggingResponse) {
|
35
|
+
if (HttpClientEvents.ComputeAndLogRequestInfo_Event !== null)
|
36
|
+
HttpClientEvents.ComputeAndLogRequestInfo_Event(contentLength, roundTrip, isLoggingResponse);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cENsaWVudEV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvaHR0cC9jbGllbnQvSHR0cENsaWVudEV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxpQ0FBaUMsR0FBaUIsSUFBSSxDQUFDO0lBQzlELE1BQU0sQ0FBQywwQkFBMEIsR0FBcUMsSUFBSSxDQUFDO0lBQzNFLE1BQU0sQ0FBQyw4QkFBOEIsR0FBaUIsSUFBSSxDQUFDO0lBQzNELE1BQU0sQ0FBQywrQkFBK0IsR0FBa0IsSUFBSSxDQUFDO0lBQzdELE1BQU0sQ0FBQyxxQkFBcUIsR0FBaUIsSUFBSSxDQUFDO0lBQ2xELE1BQU0sQ0FBQyx1QkFBdUIsR0FBaUIsSUFBSSxDQUFDO0lBQ3BELE1BQU0sQ0FBQywrQkFBK0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyw4QkFBOEIsR0FBbUYsSUFBSSxDQUFDO0lBRTdILE1BQU0sQ0FBQywyQkFBMkI7UUFDaEMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGlDQUFpQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckksQ0FBQztJQUVELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFvQjtRQUM5QyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbkksQ0FBQztJQUVELE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLDhCQUE4QixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0gsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUI7UUFDOUIsT0FBTyxnQkFBZ0IsQ0FBQywrQkFBK0IsS0FBSyxJQUFJLElBQUksZ0JBQWdCLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6SCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWU7UUFDcEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDM0csQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUI7UUFDdEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxLQUFhO1FBQzVDLElBQUksSUFBSSxHQUFZLGdCQUFnQixDQUFDLCtCQUErQixLQUFLLElBQUksQ0FBQztRQUM5RSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsZ0JBQWdCLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsYUFBcUIsRUFBRSxTQUFpQixFQUFFLGlCQUEwQjtRQUNsRyxJQUFJLGdCQUFnQixDQUFDLDhCQUE4QixLQUFLLElBQUk7WUFDMUQsZ0JBQWdCLENBQUMsOEJBQThCLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSHR0cENsaWVudEV2ZW50cyB7XHJcbiAgc3RhdGljIEdldEh0dHBDb21tdW5pY2F0aW9uVGltZW91dF9FdmVudDogKCkgPT4gbnVtYmVyID0gbnVsbDtcclxuICBzdGF0aWMgR2V0RXhlY3V0aW9uUHJvcGVydHlfRXZlbnQ6IChwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4gc3RyaW5nID0gbnVsbDtcclxuICBzdGF0aWMgR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEX0V2ZW50OiAoKSA9PiBzdHJpbmcgPSBudWxsO1xyXG4gIHN0YXRpYyBTaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yX0V2ZW50OiAoKSA9PiBib29sZWFuID0gbnVsbDtcclxuICBzdGF0aWMgR2V0UnVudGltZUN0eElEX0V2ZW50OiAoKSA9PiBzdHJpbmcgPSBudWxsO1xyXG4gIHN0YXRpYyBHZXRTZXNzaW9uQ291bnRlcl9FdmVudDogKCkgPT4gbnVtYmVyID0gbnVsbDtcclxuICBzdGF0aWMgQ2hlY2tBbmRTZXRTZXNzaW9uQ291bnRlcl9FdmVudDogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG4gIHN0YXRpYyBDb21wdXRlQW5kTG9nUmVxdWVzdEluZm9fRXZlbnQ6IChjb250ZW50TGVuZ3RoOiBudW1iZXIsIHJvdW5kVHJpcDogbnVtYmVyLCBpc0xvZ2dpbmdSZXNwb25zZTogYm9vbGVhbikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIHN0YXRpYyBHZXRIdHRwQ29tbXVuaWNhdGlvblRpbWVvdXQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoSHR0cENsaWVudEV2ZW50cy5HZXRIdHRwQ29tbXVuaWNhdGlvblRpbWVvdXRfRXZlbnQgIT09IG51bGwpID8gSHR0cENsaWVudEV2ZW50cy5HZXRIdHRwQ29tbXVuaWNhdGlvblRpbWVvdXRfRXZlbnQoKSA6IDUwMDA7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0RXhlY3V0aW9uUHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChIdHRwQ2xpZW50RXZlbnRzLkdldEV4ZWN1dGlvblByb3BlcnR5X0V2ZW50ICE9PSBudWxsKSA/IEh0dHBDbGllbnRFdmVudHMuR2V0RXhlY3V0aW9uUHJvcGVydHlfRXZlbnQocHJvcGVydHlOYW1lKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEX0V2ZW50ICE9PSBudWxsKSA/IEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEX0V2ZW50KCkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIFNob3VsZERpc3BsYXlHZW5lcmljRXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gSHR0cENsaWVudEV2ZW50cy5TaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yX0V2ZW50ID09PSBudWxsIHx8IEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcl9FdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIEdldFJ1bnRpbWVDdHhJRCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChIdHRwQ2xpZW50RXZlbnRzLkdldFJ1bnRpbWVDdHhJRF9FdmVudCAhPT0gbnVsbCkgPyBIdHRwQ2xpZW50RXZlbnRzLkdldFJ1bnRpbWVDdHhJRF9FdmVudCgpIDogXCJcIjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBHZXRTZXNzaW9uQ291bnRlcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChIdHRwQ2xpZW50RXZlbnRzLkdldFNlc3Npb25Db3VudGVyX0V2ZW50ICE9PSBudWxsKSA/IEh0dHBDbGllbnRFdmVudHMuR2V0U2Vzc2lvbkNvdW50ZXJfRXZlbnQoKSA6IDA7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQ2hlY2tBbmRTZXRTZXNzaW9uQ291bnRlcih2YWx1ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IEh0dHBDbGllbnRFdmVudHMuQ2hlY2tBbmRTZXRTZXNzaW9uQ291bnRlcl9FdmVudCAhPT0gbnVsbDtcclxuICAgIGlmIChmbGFnKSB7XHJcbiAgICAgIEh0dHBDbGllbnRFdmVudHMuQ2hlY2tBbmRTZXRTZXNzaW9uQ291bnRlcl9FdmVudCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQ29tcHV0ZUFuZExvZ1JlcXVlc3RJbmZvKGNvbnRlbnRMZW5ndGg6IG51bWJlciwgcm91bmRUcmlwOiBudW1iZXIsIGlzTG9nZ2luZ1Jlc3BvbnNlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoSHR0cENsaWVudEV2ZW50cy5Db21wdXRlQW5kTG9nUmVxdWVzdEluZm9fRXZlbnQgIT09IG51bGwpXHJcbiAgICAgIEh0dHBDbGllbnRFdmVudHMuQ29tcHV0ZUFuZExvZ1JlcXVlc3RJbmZvX0V2ZW50KGNvbnRlbnRMZW5ndGgsIHJvdW5kVHJpcCwgaXNMb2dnaW5nUmVzcG9uc2UpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import { NString } from "@magic-xpa/mscorelib";
|
2
|
+
import { HttpClientBase } from "./HttpClientBase";
|
3
|
+
import { Logger, Logger_LogLevels, Logger_MessageDirection, Misc } from "@magic-xpa/utils";
|
4
|
+
import { HttpClientEvents } from "./HttpClientEvents";
|
5
|
+
export class HttpClientSync extends HttpClientBase {
|
6
|
+
httpRequest = null;
|
7
|
+
headers = new Headers();
|
8
|
+
constructor() {
|
9
|
+
super();
|
10
|
+
}
|
11
|
+
prepareRequest() {
|
12
|
+
}
|
13
|
+
addHeaders(urlString, useCache, httpHeaders, clientID) {
|
14
|
+
if (!urlString.startsWith("/")) {
|
15
|
+
this.headers.append("MgxpaRIAglobalUniqueSessionID", clientID);
|
16
|
+
}
|
17
|
+
if (!useCache) {
|
18
|
+
this.headers.append("Cache-Control", "no-cache");
|
19
|
+
}
|
20
|
+
return httpHeaders;
|
21
|
+
}
|
22
|
+
async sendRequestToServer(httpMethod, urlString, httpHeaders, requestContent, contentFromServer) {
|
23
|
+
await fetch(urlString, { method: 'POST', headers: this.headers, body: requestContent, keepalive: true });
|
24
|
+
return NString.Empty;
|
25
|
+
}
|
26
|
+
logResponse(httpResponse, clientID, urlString, contentFromServer, timeBeforeRequest) {
|
27
|
+
let responseTime = Misc.getSystemMilliseconds() - timeBeforeRequest;
|
28
|
+
if (Logger.Instance.LogLevel === Logger_LogLevels.Basic)
|
29
|
+
Logger.Instance.WriteBasicToLog(Logger_MessageDirection.MessageEntering, HttpClientEvents.GetRuntimeCtxID(), HttpClientEvents.GetSessionCounter(), clientID, HttpClientEvents.ShouldDisplayGenericError() ? "-" : new URL(urlString).host, responseTime, this.httpRequest.status.toString(), JSON.stringify(this.httpRequest.getAllResponseHeaders()), contentFromServer.value.length);
|
30
|
+
}
|
31
|
+
handleHttpErrorException(ex, urlString) {
|
32
|
+
throw ex;
|
33
|
+
}
|
34
|
+
async shouldRetry(httpCommunicationTimeoutMS, urlString, communicationsFailureHandler, ex, startTimeRef) {
|
35
|
+
return Promise.resolve(false);
|
36
|
+
}
|
37
|
+
logAndThrowException(ex) {
|
38
|
+
}
|
39
|
+
logExecutionAttempts(executionAttempts) {
|
40
|
+
}
|
41
|
+
}
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cENsaWVudFN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2h0dHAvY2xpZW50L0h0dHBDbGllbnRTeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxPQUFPLEVBQVcsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsY0FBYyxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFJcEQsTUFBTSxPQUFPLGNBQWUsU0FBUSxjQUFjO0lBRXhDLFdBQVcsR0FBbUIsSUFBSSxDQUFDO0lBQ25DLE9BQU8sR0FBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXpDO1FBRUUsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQsY0FBYztJQUVkLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBaUIsRUFBRSxRQUFpQixFQUFFLFdBQXdCLEVBQUUsUUFBZ0I7UUFFekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQzlCLENBQUM7WUFDQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFDYixDQUFDO1lBQ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFVBQXlCLEVBQUUsU0FBaUIsRUFBRSxXQUF3QixFQUFFLGNBQXNCLEVBQUUsaUJBQW1DO1FBRzNKLE1BQU0sS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV4RyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxZQUFrQyxFQUFFLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxpQkFBZ0MsRUFBRSxpQkFBeUI7UUFFOUksSUFBSSxZQUFZLEdBQVcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsaUJBQWlCLENBQUM7UUFFNUUsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO1lBQ3JELE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFDdkMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLEVBQ2xDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLEVBQ3BDLFFBQVEsRUFDUixnQkFBZ0IsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFDNUUsWUFBWSxFQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxFQUN4RCxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHdCQUF3QixDQUFDLEVBQU8sRUFBRSxTQUFpQjtRQUdqRCxNQUFNLEVBQUUsQ0FBQztJQUNYLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLDBCQUFrQyxFQUFFLFNBQWlCLEVBQUUsNEJBQTJELEVBQUUsRUFBTyxFQUFFLFlBQThCO1FBRzNLLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsRUFBRTtJQUd2QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsaUJBQXlCO0lBRzlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7TlN0cmluZywgUmVmUGFyYW19IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnRCYXNlLCBSZXF1ZXN0TWV0aG9kfSBmcm9tIFwiLi9IdHRwQ2xpZW50QmFzZVwiO1xyXG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyX0xvZ0xldmVscywgTG9nZ2VyX01lc3NhZ2VEaXJlY3Rpb24sIE1pc2N9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudEV2ZW50c30gZnJvbSBcIi4vSHR0cENsaWVudEV2ZW50c1wiO1xyXG5pbXBvcnQge0lDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyfSBmcm9tIFwiLi9JQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlclwiO1xyXG5cclxuLy8gQSBjbGFzcyB1c2luZyBIdHRwIFN5bmMgTGlicmFyeVxyXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFN5bmMgZXh0ZW5kcyBIdHRwQ2xpZW50QmFzZVxyXG57XHJcbiAgcHJpdmF0ZSBodHRwUmVxdWVzdDogWE1MSHR0cFJlcXVlc3QgPSBudWxsO1xyXG4gIHByaXZhdGUgaGVhZGVyczogSGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKClcclxuICB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJlcGFyZVJlcXVlc3QoKVxyXG4gIHtcclxuICB9XHJcblxyXG4gIGFkZEhlYWRlcnModXJsU3RyaW5nOiBzdHJpbmcsIHVzZUNhY2hlOiBib29sZWFuLCBodHRwSGVhZGVyczogSHR0cEhlYWRlcnMsIGNsaWVudElEOiBzdHJpbmcpOiBIdHRwSGVhZGVyc1xyXG4gIHtcclxuICAgIGlmICghdXJsU3RyaW5nLnN0YXJ0c1dpdGgoXCIvXCIpKVxyXG4gICAge1xyXG4gICAgICB0aGlzLmhlYWRlcnMuYXBwZW5kKFwiTWd4cGFSSUFnbG9iYWxVbmlxdWVTZXNzaW9uSURcIiwgY2xpZW50SUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdXNlQ2FjaGUpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuaGVhZGVycy5hcHBlbmQoXCJDYWNoZS1Db250cm9sXCIsIFwibm8tY2FjaGVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGh0dHBIZWFkZXJzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VuZFJlcXVlc3RUb1NlcnZlcihodHRwTWV0aG9kOiBSZXF1ZXN0TWV0aG9kLCB1cmxTdHJpbmc6IHN0cmluZywgaHR0cEhlYWRlcnM6IEh0dHBIZWFkZXJzLCByZXF1ZXN0Q29udGVudDogc3RyaW5nLCBjb250ZW50RnJvbVNlcnZlcjogUmVmUGFyYW08c3RyaW5nPik6IFByb21pc2U8YW55PlxyXG4gIHtcclxuICAgIC8vIFNlbmQgdGhlIGVuZ2luZSB0ZXJtaW5hdGlvbiByZXF1ZXN0IHRvIHNlcnZlci5cclxuICAgIGF3YWl0IGZldGNoKHVybFN0cmluZywgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogdGhpcy5oZWFkZXJzLCBib2R5OiByZXF1ZXN0Q29udGVudCwga2VlcGFsaXZlOnRydWUgfSk7XHJcblxyXG4gICAgcmV0dXJuIE5TdHJpbmcuRW1wdHk7XHJcbiAgfVxyXG5cclxuICBsb2dSZXNwb25zZShodHRwUmVzcG9uc2U6IEh0dHBSZXNwb25zZTxzdHJpbmc+LCBjbGllbnRJRDogc3RyaW5nLCB1cmxTdHJpbmc6IHN0cmluZywgY29udGVudEZyb21TZXJ2ZXI6IFJlZlBhcmFtPGFueT4sIHRpbWVCZWZvcmVSZXF1ZXN0OiBudW1iZXIpXHJcbiAge1xyXG4gICAgbGV0IHJlc3BvbnNlVGltZTogbnVtYmVyID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKSAtIHRpbWVCZWZvcmVSZXF1ZXN0O1xyXG5cclxuICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuTG9nTGV2ZWwgPT09IExvZ2dlcl9Mb2dMZXZlbHMuQmFzaWMpXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUJhc2ljVG9Mb2coTG9nZ2VyX01lc3NhZ2VEaXJlY3Rpb24uTWVzc2FnZUVudGVyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuR2V0UnVudGltZUN0eElEKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHR0cENsaWVudEV2ZW50cy5HZXRTZXNzaW9uQ291bnRlcigpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElELFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcigpID8gXCItXCIgOiBuZXcgVVJMKHVybFN0cmluZykuaG9zdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5odHRwUmVxdWVzdC5zdGF0dXMudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmh0dHBSZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50RnJvbVNlcnZlci52YWx1ZS5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSHR0cEVycm9yRXhjZXB0aW9uKGV4OiBhbnksIHVybFN0cmluZzogc3RyaW5nKVxyXG4gIHtcclxuICAgIC8vIE5vIGV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgbGFzdCByZXF1ZXN0IGFuZCBoZW5jZSBqdXN0IHRocm93IHRoZSBleGNlcHRpb25cclxuICAgIHRocm93IGV4O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2hvdWxkUmV0cnkoaHR0cENvbW11bmljYXRpb25UaW1lb3V0TVM6IG51bWJlciwgdXJsU3RyaW5nOiBzdHJpbmcsIGNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXI6IElDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyLCBleDogYW55LCBzdGFydFRpbWVSZWY6IFJlZlBhcmFtPG51bWJlcj4pOiBQcm9taXNlPGJvb2xlYW4+XHJcbiAge1xyXG4gICAgLy8gTm8gcmV0cnkgc3VwcG9ydGVkIG9uIGxhc3QgcmVxdWVzdFxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBsb2dBbmRUaHJvd0V4Y2VwdGlvbihleClcclxuICB7XHJcbiAgICAvLyBOLkEuXHJcbiAgfVxyXG5cclxuICBsb2dFeGVjdXRpb25BdHRlbXB0cyhleGVjdXRpb25BdHRlbXB0czogbnVtYmVyKVxyXG4gIHtcclxuICAgIC8vIE4uQS5cclxuICB9XHJcbn1cclxuIl19
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import { Encoding, NString } from "@magic-xpa/mscorelib";
|
2
|
+
import { Logger } from "@magic-xpa/utils";
|
3
|
+
export class HttpUtility {
|
4
|
+
static EncodingEnabled = true;
|
5
|
+
static ASCIIGetString(bytes) {
|
6
|
+
return Encoding.ASCII.GetString(bytes, 0, bytes.length);
|
7
|
+
}
|
8
|
+
static IntToHexCharCode(n) {
|
9
|
+
if (n <= 9)
|
10
|
+
return n + 0x30;
|
11
|
+
return (n - 10) + 0X61;
|
12
|
+
}
|
13
|
+
static IsSafe(ch) {
|
14
|
+
if ((ch >= 'a' && ch <= 'z') ||
|
15
|
+
(ch >= 'A' && ch <= 'Z') ||
|
16
|
+
(ch >= '0' && ch <= '9'))
|
17
|
+
return true;
|
18
|
+
switch (ch) {
|
19
|
+
case '\'':
|
20
|
+
case '(':
|
21
|
+
case ')':
|
22
|
+
case '*':
|
23
|
+
case '-':
|
24
|
+
case '.':
|
25
|
+
case '_':
|
26
|
+
case '!':
|
27
|
+
return true;
|
28
|
+
}
|
29
|
+
return false;
|
30
|
+
}
|
31
|
+
static UrlEncode(str, e) {
|
32
|
+
let encodedStr = null;
|
33
|
+
if (str !== null) {
|
34
|
+
encodedStr = HttpUtility.ASCIIGetString(HttpUtility.UrlEncodeToBytes(str, e));
|
35
|
+
Logger.Instance.WriteServerMessagesToLog(NString.Format("\n String: {0} \n UrlEncoded by: {1} \n To: {2}", str, e, encodedStr));
|
36
|
+
}
|
37
|
+
return encodedStr;
|
38
|
+
}
|
39
|
+
static UrlEncodeToBytes(str, e) {
|
40
|
+
if (str === null) {
|
41
|
+
return null;
|
42
|
+
}
|
43
|
+
let bytes = e.GetBytes(str);
|
44
|
+
return HttpUtility.UrlEncodeBytesToBytesInternal(bytes, 0, bytes.length);
|
45
|
+
}
|
46
|
+
static UrlEncodeBytesToBytesInternal(bytes, offset, count) {
|
47
|
+
if (!HttpUtility.EncodingEnabled) {
|
48
|
+
return bytes;
|
49
|
+
}
|
50
|
+
let num = 0;
|
51
|
+
let num2 = 0;
|
52
|
+
for (let i = 0; i < count; i++) {
|
53
|
+
let ch = String.fromCharCode(bytes[offset + i]);
|
54
|
+
if (ch === ' ') {
|
55
|
+
num = num++;
|
56
|
+
}
|
57
|
+
else if (!HttpUtility.IsSafe(ch)) {
|
58
|
+
num2 = num2 + 1;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
if (num === 0 && num2 === 0) {
|
62
|
+
return bytes;
|
63
|
+
}
|
64
|
+
let buffer = new Uint8Array(count + num2 * 2);
|
65
|
+
let num4 = 0;
|
66
|
+
for (let j = 0; j < count; j++) {
|
67
|
+
let num6 = bytes[offset + j];
|
68
|
+
let ch = String.fromCharCode(num6);
|
69
|
+
if (HttpUtility.IsSafe(ch)) {
|
70
|
+
buffer[num4++] = num6;
|
71
|
+
}
|
72
|
+
else if (ch === ' ') {
|
73
|
+
buffer[num4++] = 0X2b;
|
74
|
+
}
|
75
|
+
else {
|
76
|
+
buffer[num4++] = 0X25;
|
77
|
+
buffer[num4++] = HttpUtility.IntToHexCharCode(num6 >> 4 & 15);
|
78
|
+
buffer[num4++] = HttpUtility.IntToHexCharCode(num6 & 15);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
return buffer;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cFV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2h0dHAvY2xpZW50L0h0dHBVdGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBS3hDLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxlQUFlLEdBQVksSUFBSSxDQUFDO0lBTS9CLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBaUI7UUFDN0MsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQVM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNSLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUVsQixPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFVO1FBQzlCLElBQUksQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUM7WUFDeEIsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUM7WUFDeEIsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFFZCxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ1gsS0FBSyxJQUFJLENBQUM7WUFDVixLQUFLLEdBQUcsQ0FBQztZQUNULEtBQUssR0FBRyxDQUFDO1lBQ1QsS0FBSyxHQUFHLENB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LE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMxQixDQUFDO2lCQUNJLENBQUM7Z0JBQ0osTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDOUQsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VuY29kaW5nLCBOU3RyaW5nfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+UHJvdmlkZXMgbWV0aG9kcyBmb3IgZW5jb2RpbmcgVVJMcyB3aGVuIHByb2Nlc3NpbmcgV2ViIHJlcXVlc3RzLlxyXG4vLy8gICBUaGlzIGNsYXNzIGNhbm5vdCBiZSBpbmhlcml0ZWQuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBIdHRwVXRpbGl0eSB7XHJcbiAgc3RhdGljIEVuY29kaW5nRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5EZWNvZGVzIGFsbCB0aGUgYnl0ZXMgaW4gdGhlIHNwZWNpZmllZCBieXRlIGFycmF5IGludG8gYSBzdHJpbmcuPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmVtYXJrcz5SZXBsYWNlIHRoZSBtZXRob2QgXCJTeXN0ZW0uVGV4dC5FbmNvZGluZy5BU0NJSS5HZXRTdHJpbmcoYnl0ZVtdIGJ5dGVzKTtcIiBpbiAuTmV0IEZyYW1ld29yay48L3JlbWFya3M+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJieXRlc1wiPlRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHNlcXVlbmNlIG9mIGJ5dGVzIHRvIGRlY29kZS48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5BIFN0cmluZyBjb250YWluaW5nIHRoZSByZXN1bHRzIG9mIGRlY29kaW5nIHRoZSBzcGVjaWZpZWQgc2VxdWVuY2Ugb2YgYnl0ZXMuPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIEFTQ0lJR2V0U3RyaW5nKGJ5dGVzOiBVaW50OEFycmF5KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBFbmNvZGluZy5BU0NJSS5HZXRTdHJpbmcoYnl0ZXMsIDAsIGJ5dGVzLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBJbnRUb0hleENoYXJDb2RlKG46IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBpZiAobiA8PSA5KVxyXG4gICAgICByZXR1cm4gbiArIDB4MzA7XHJcblxyXG4gICAgcmV0dXJuIChuIC0gMTApICsgMFg2MTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIElzU2FmZShjaDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoKGNoID49ICdhJyAmJiBjaCA8PSAneicpIHx8XHJcbiAgICAgICAgKGNoID49ICdBJyAmJiBjaCA8PSAnWicpIHx8XHJcbiAgICAgICAgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICBzd2l0Y2ggKGNoKSB7XHJcbiAgICAgIGNhc2UgJ1xcJyc6XHJcbiAgICAgIGNhc2UgJygnOlxyXG4gICAgICBjYXNlICcpJzpcclxuICAgICAgY2FzZSAnKic6XHJcbiAgICAgIGNhc2UgJy0nOlxyXG4gICAgICBjYXNlICcuJzpcclxuICAgICAgY2FzZSAnXyc6XHJcbiAgICAgIGNhc2UgJyEnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5FbmNvZGVzIGEgVVJMIHN0cmluZyB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIG9iamVjdC48L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPkFuIGVuY29kZWQgc3RyaW5nLjwvcmV0dXJucz5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImVcIj5UaGUgPHNlZSBjcmVmID0gXCJUOlN5c3RlbS5UZXh0LkVuY29kaW5nXCI+PC9zZWU+IG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgZW5jb2Rpbmcgc2NoZW1lLiA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RyXCI+VGhlIHRleHQgdG8gZW5jb2RlLiA8L3BhcmFtPlxyXG4gIHN0YXRpYyBVcmxFbmNvZGUoc3RyOiBzdHJpbmcsIGU6IEVuY29kaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBlbmNvZGVkU3RyOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIGlmIChzdHIgIT09IG51bGwpIHtcclxuICAgICAgZW5jb2RlZFN0ciA9IEh0dHBVdGlsaXR5LkFTQ0lJR2V0U3RyaW5nKEh0dHBVdGlsaXR5LlVybEVuY29kZVRvQnl0ZXMoc3RyLCBlKSk7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlck1lc3NhZ2VzVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJcXG4gU3RyaW5nOiB7MH0gXFxuIFVybEVuY29kZWQgYnk6IHsxfSBcXG4gVG86IHsyfVwiLCBzdHIsIGUsIGVuY29kZWRTdHIpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZW5jb2RlZFN0cjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5Db252ZXJ0cyBhIHN0cmluZyBpbnRvIGEgVVJMLWVuY29kZWQgYXJyYXkgb2YgYnl0ZXMgdXNpbmcgdGhlIHNwZWNpZmllZCBlbmNvZGluZyBvYmplY3QuPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5BbiBlbmNvZGVkIGFycmF5IG9mIGJ5dGVzLjwvcmV0dXJucz5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImVcIj5UaGUgPHNlZSBjcmVmID0gXCJUOlN5c3RlbS5UZXh0LkVuY29kaW5nXCI+PC9zZWU+IHRoYXQgc3BlY2lmaWVzIHRoZSBlbmNvZGluZyBzY2hlbWUuIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJcIj5UaGUgc3RyaW5nIHRvIGVuY29kZSA8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIFVybEVuY29kZVRvQnl0ZXMoc3RyOiBzdHJpbmcsIGU6IEVuY29kaW5nKTogVWludDhBcnJheSB7XHJcbiAgICBpZiAoc3RyID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBieXRlczogVWludDhBcnJheSA9IGUuR2V0Qnl0ZXMoc3RyKTtcclxuICAgIHJldHVybiBIdHRwVXRpbGl0eS5VcmxFbmNvZGVCeXRlc1RvQnl0ZXNJbnRlcm5hbChieXRlcywgMCwgYnl0ZXMubGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIFVybEVuY29kZUJ5dGVzVG9CeXRlc0ludGVybmFsKGJ5dGVzOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlciwgY291bnQ6IG51bWJlcik6IFVpbnQ4QXJyYXkge1xyXG4gICAgaWYgKCFIdHRwVXRpbGl0eS5FbmNvZGluZ0VuYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIGJ5dGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBudW06IG51bWJlciA9IDA7XHJcbiAgICBsZXQgbnVtMjogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgIGxldCBjaDogc3RyaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tvZmZzZXQgKyBpXSk7XHJcbiAgICAgIGlmIChjaCA9PT0gJyAnKSB7XHJcbiAgICAgICAgbnVtID0gbnVtKys7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIUh0dHBVdGlsaXR5LklzU2FmZShjaCkpIHtcclxuICAgICAgICBudW0yID0gbnVtMiArIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChudW0gPT09IDAgJiYgbnVtMiA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gYnl0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGJ1ZmZlcjogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGNvdW50ICsgbnVtMiAqIDIpO1xyXG4gICAgbGV0IG51bTQ6IG51bWJlciA9IDA7XHJcbiAgICBmb3IgKGxldCBqOiBudW1iZXIgPSAwOyBqIDwgY291bnQ7IGorKykge1xyXG4gICAgICBsZXQgbnVtNjogbnVtYmVyID0gYnl0ZXNbb2Zmc2V0ICsgal07XHJcbiAgICAgIC8vIFRPRE86IENvbnNpZGVyIHNlbmRpbmcgbnVtYmVyIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgc3RyaW5nIGZvciBlYWNoIGJ5dGUuXHJcbiAgICAgIGxldCBjaDogc3RyaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZShudW02KTtcclxuICAgICAgaWYgKEh0dHBVdGlsaXR5LklzU2FmZShjaCkpIHtcclxuICAgICAgICBidWZmZXJbbnVtNCsrXSA9IG51bTY7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoY2ggPT09ICcgJykge1xyXG4gICAgICAgICAgYnVmZmVyW251bTQrK10gPSAwWDJiO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGJ1ZmZlcltudW00KytdID0gMFgyNTtcclxuICAgICAgICBidWZmZXJbbnVtNCsrXSA9IEh0dHBVdGlsaXR5LkludFRvSGV4Q2hhckNvZGUobnVtNiA+PiA0ICYgMTUpO1xyXG4gICAgICAgIGJ1ZmZlcltudW00KytdID0gSHR0cFV0aWxpdHkuSW50VG9IZXhDaGFyQ29kZShudW02ICYgMTUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGJ1ZmZlcjtcclxuICB9XHJcbn1cclxuIl19
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export {};
|
1
|
+
export {};
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2h0dHAvY2xpZW50L0lDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGludGVyZmFjZSBJQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlciB7XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIGEgdmFsdWUgZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUgY2FsbGVyIHNob3VsZCByZXRyeSBleGVjdXRpbmcgdGhlXHJcbiAgLy8vIGNvbW11bmljYXRpb25zIHJlcXVlc3QsIHdoaWNoIHdhcyBzZW50IHdoZW4gdGhlIGZhaWx1cmUgb2NjdXJyZWQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBTaG91bGRSZXRyeUxhc3RSZXF1ZXN0OiBib29sZWFuO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgYSB2YWx1ZSBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBjYWxsZXIgc2hvdWxkIHNob3cgdGhlXHJcbiAgLy8vIGNvbW11bmljYXRpb25zIGVycm9ycy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFNob3dDb21tdW5pY2F0aW9uRXJyb3JzOiBib29sZWFuO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbm90aWZ5IHRoZSBpbXBsZW1lbnRpbmcgY2xhc3MgdGhhdCB0aGUgY29ubmVjdGlvbiBmYWlsZWQuXHJcbiAgLy8vIFRoZSBzcGVjaWZpYyBtZXRob2QgaW1wbGVtZW50YXRpb24gaXMgbm93IGZyZWUgdG8gZG8gd2hhdGV2ZXIgaXMgbmVlZGVkIGF0IHRoaXNcclxuICAvLy8gcG9pbnQsIHN1Y2ggYXMgZGlzcGxheWluZyBhIG5vdGlmaWNhdGlvbiBtZXNzYWdlIHRvIHRoZSB1c2VyLCBvciBkZXRlcm1pbmluZ1xyXG4gIC8vLyBuZXh0IGFjdGlvbnMgYXV0b21hdGljYWxseS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInVybFwiPlRoZSBmYWlsaW5nIFVSTC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZhaWx1cmVFeGNlcHRpb25cIj5UaGUgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIHRoZSBmYWlsdXJlIHdhcyBkZXRlY3RlZC48L3BhcmFtPlxyXG4gIENvbW11bmljYXRpb25GYWlsZWQodXJsOiBzdHJpbmcsIGZhaWx1cmVFeGNlcHRpb246IEVycm9yKTogdm9pZDtcclxufVxyXG4iXX0=
|