private async Task <CallOpenApiWorkerMethodResponse> CallResult(RemoteJsOpenApiDocs remoteApi, CallOpenApiWorkerMethod requestModel) { var responseRecord = await HttpClient.PostAsync(remoteApi.Description.HostUrl, remoteApi.Description.Name, HttpPaths.HandleCall, requestModel); ExecutionContext.ExecutionLogs.Add(new JsExecutionLog { EventIdName = EventIds.CallRemoteApi.CallLogged, Message = "Логгирование удаленного запроса", DataJson = ZooSerializer.Serialize(responseRecord) }); try { //Task<RemoteApiResponseRecord> PostAsync<TRequest>(string hostUrl, string hostName, string path, TRequest request) return(responseRecord.GetResult <CallOpenApiWorkerMethodResponse>()); } catch (Exception ex) { ExecutionContext.ExecutionLogs.Add(new JsExecutionLog { EventIdName = EventIds.CallRemoteApi.ResponseDeserializationError, Message = "Ошибка при дессериализации", DataJson = ZooSerializer.Serialize(responseRecord) }); return(new CallOpenApiWorkerMethodResponse { IsSucceeded = false, ExcepionData = ExcepionData.Create(ex) }); } }
internal static async Task <RemoteJsOpenApiDocs> GetRemoteDocsViaHttpRequest(this IServerJsHttpClient httpClient, RemoteJsOpenApi remoteApi) { var response = await httpClient.GetAsync(remoteApi.HostUrl, remoteApi.Name, HttpPaths.GetDocs); var docsRecord = new RemoteJsOpenApiDocs { Description = remoteApi, ReceivingException = response.ExcepionData, DocsReceivedOnUtc = DateTime.UtcNow }; try { if (response.IsSuccessfull()) { docsRecord.Docs = response.GetResult <JsOpenApiDocs>(); docsRecord.IsDocsReceived = true; } else { docsRecord.IsDocsReceived = false; docsRecord.DocsReceivedOnUtc = DateTime.UtcNow; } } catch (Exception ex) { docsRecord.IsDocsReceived = false; docsRecord.ReceivingException = new ExcepionData { Message = ex.Message, StackTrace = ex.StackTrace }; } return(docsRecord); }