Exemplo n.º 1
0
    private static async Task TestCookies()
    {
        var serverHandler = new RequestDelegate(async context =>
        {
            int?value = context.Session.GetInt32("Key");
            if (context.Request.Path == new PathString("/first"))
            {
                Console.WriteLine("value.HasValue : " + value.HasValue);
                value = 0;
            }
            Console.WriteLine("value.HasValue " + value.HasValue);
            context.Session.SetInt32("Key", value.Value + 1);

            await context.Response.WriteAsync(value.Value.ToString());
        });

        var clientHandler = new ResponseDelegate(async uri =>
        {
            HttpClient client  = new HttpClient();
            client.BaseAddress = new Uri(uri);

            var response = await client.GetAsync("first");
            response.EnsureSuccessStatusCode();
            Console.WriteLine("Server result : " + await response.Content.ReadAsStringAsync());

            client             = new HttpClient();
            client.BaseAddress = new Uri(uri);

            var cookie = SetCookieHeaderValue.ParseList(response.Headers.GetValues("Set-Cookie").ToList()).First();
            client.DefaultRequestHeaders.Add("Cookie", new CookieHeaderValue(cookie.Name, cookie.Value).ToString());

            Console.WriteLine("Server result : " + await client.GetStringAsync("/"));
            Console.WriteLine("Server result : " + await client.GetStringAsync("/"));
            Console.WriteLine("Server result : " + await client.GetStringAsync("/"));
        });

        await TestKestrelHttpServer.LaunchKestrellAsync(serverHandler, clientHandler);
    }
Exemplo n.º 2
0
    /// <summary>
    /// Test syncking through Kestrell server
    /// </summary>
    private static async Task TestSyncThroughKestrellAsync()
    {
        var id = Guid.NewGuid();

        ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

        configurationBuilder.AddJsonFile("config.json", true);
        IConfiguration Configuration = configurationBuilder.Build();
        var            serverConfig  = Configuration["AppConfiguration:ServerConnectionString"];
        var            clientConfig  = Configuration["AppConfiguration:ClientConnectionString"];

        // Server side
        var serverHandler = new RequestDelegate(async context =>
        {
            // Create the internal provider
            SqlSyncProvider serverProvider = new SqlSyncProvider(serverConfig);
            // Create the configuration stuff
            ServiceConfiguration configuration  = new ServiceConfiguration(new string[] { "ServiceTickets" });
            configuration.DownloadBatchSizeInKB = 500;
            serverProvider.SetConfiguration(configuration);

            // Create the proxy provider
            WebProxyServerProvider proxyServerProvider = new WebProxyServerProvider(serverProvider, SerializationFormat.Json);

            serverProvider.SyncProgress += ServerProvider_SyncProgress;

            try
            {
                CancellationTokenSource cts = new CancellationTokenSource();
                //   cts.CancelAfter(60000);
                CancellationToken token = cts.Token;
                await proxyServerProvider.HandleRequestAsync(context, token);
            }
            catch (WebSyncException webSyncException)
            {
                Console.WriteLine("Proxy Server WebSyncException : " + webSyncException.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Proxy Server Exception : " + e.Message);
                throw e;
            }
        });

        var clientHandler = new ResponseDelegate(async(serviceUri) =>
        {
            var proxyProvider  = new WebProxyClientProvider(new Uri(serviceUri), SerializationFormat.Json);
            var clientProvider = new SqlSyncProvider(clientConfig);

            SyncAgent agent = new SyncAgent(clientProvider, proxyProvider);

            agent.SyncProgress += Agent_SyncProgress;
            do
            {
                try
                {
                    CancellationTokenSource cts = new CancellationTokenSource();
                    //cts.CancelAfter(1000);
                    CancellationToken token = cts.Token;
                    var s = await agent.SynchronizeAsync(token);
                }
                catch (WebSyncException webSyncException)
                {
                    Console.WriteLine("Proxy Client WebSyncException : " + webSyncException.Message);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Proxy Client Exception : " + e.Message);
                }

                Console.WriteLine("Sync Ended. Press a key to start again, or Escapte to end");
            } while (Console.ReadKey().Key != ConsoleKey.Escape);
        });


        await TestKestrelHttpServer.LaunchKestrellAsync(serverHandler, clientHandler);
    }