Пример #1
0
 /// <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;
 }
Пример #2
0
        /// <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;
        }
Пример #3
0
        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);
        }