/// <summary>
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Invoke(HttpContext context)
        {
            if (context.Request.IsGetOrHeadMethod() &&
                context.Request.TryMatchPath(_matchUrl, false, out PathString subPath) &&
                subPath.Value == _configFile &&
                (context.GetGraphQLToolOptions()?.Enable ?? true))
            {
                GraphQLToolOptions?options = context.GetGraphQLToolOptions();
                var     config             = new BananaCakePopConfiguration();
                ISchema schema             = await ExecutorProxy.GetSchemaAsync(context.RequestAborted);

                if (options is not null)
                {
                    config.Document    = options.Document;
                    config.Credentials = ConvertCredentialsToString(options.Credentials);
                    config.HttpHeaders = ConvertHttpHeadersToDictionary(options.HttpHeaders);
                    config.HttpMethod  = ConvertHttpMethodToString(options.HttpMethod);
                }

                await context.Response.WriteAsJsonAsync(config, context.RequestAborted);
            }
            else
            {
                await NextAsync(context);
            }
        }
Esempio n. 2
0
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            Configuration.Load();

            InitializeParsers();

            Executor = ExecutorProxy.Create();
            Executor.GrammarNodes = Grammar.Nodes;
            Executor.Started     += Executor_Started;
            Executor.Ended       += Executor_Ended;
            Executor.Input       += Executor_Input;

            OpenDefauldDocument();
        }
        /// <summary>
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Invoke(HttpContext context)
        {
            if (context.Request.IsGetOrHeadMethod() &&
                context.Request.TryMatchPath(_matchUrl, false, out PathString subPath) &&
                subPath.Value == _configFile)
            {
                ToolOptions?options        = context.GetEndpoint()?.Metadata.GetMetadata <ToolOptions>();
                string      endpointPath   = context.Request.Path.Value !.Replace(_configFile, "");
                string      schemaEndpoint = CreateEndpointUri(
                    context.Request.Host.Value,
                    endpointPath,
                    context.Request.IsHttps,
                    false);
                var config = new BananaCakePopConfiguration(schemaEndpoint)
                {
                    EndpointEditable = false,
                };
                ISchema schema = await ExecutorProxy.GetSchemaAsync(context.RequestAborted);

                if (options is { })