/// <summary> /// Конструктор /// </summary> /// <param name="remoteDocs"></param> /// <param name="httpClient"></param> /// <param name="executionContext"></param> internal RemoteJsCaller(ConcurrentDictionary <string, RemoteJsOpenApiDocs> remoteDocs, IServerJsHttpClient httpClient, JsExecutionContext executionContext) { RemoteDocs = remoteDocs; HttpClient = httpClient; ExecutionContext = executionContext; }
/// <summary> /// Конструктор /// </summary> /// <param name="serviceProvider"></param> /// <param name="httpClient"></param> /// <param name="storage"></param> /// <param name="persistedStorage"></param> /// <param name="logger"></param> /// <param name="properties"></param> public JsExecutor(IServiceProvider serviceProvider, IServerJsHttpClient httpClient, IJsScriptTaskStorage storage, IPersistedStorage persistedStorage, ILogger <JsExecutor> logger, JsExecutorProperties properties) { Components = new JsExecutorComponents(persistedStorage, properties.ExternalComponents, properties.RemoteApis) { JsWorkers = properties.JsWorkers, HttpClient = httpClient }; ScopedServiceProviderAction = properties.ScopedServiceProviderAction; EngineAction = properties.EngineAction; ServiceProvider = serviceProvider; Storage = storage; Logger = logger; }
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); }