public async Task <ConfigureResponse> Configure(string host, ConfigureRequest config) { using (var handler = getHandler()) { using (var client = new HttpClient(handler)) { // Configure client UriBuilder uriBuilder = new UriBuilder(HTTPS_SCHEME, host, PORT_NUMBER); client.BaseAddress = uriBuilder.Uri; // Configure content var json = JsonConvert.SerializeObject(config); var content = new StringContent(json); content.Headers.ContentType = new MediaTypeHeaderValue(CONTENT_TYPE); // Make request var response = await client.PostAsync("api/configure", content); if (!response.IsSuccessStatusCode) { throw new Exception(); } // Process reponse var jsonResponse = await response.Content.ReadAsStringAsync(); var configResponse = JsonConvert.DeserializeObject <ConfigureResponse>(jsonResponse); return(configResponse); } } }
public RunReadJobScenario(Publisher.PublisherBase publisher, ConfigureRequest configureRequest, ReadRequest readRequest) { _publisher = publisher; _configureRequest = configureRequest; _readRequest = readRequest; }
public async Task <WebSocket> ConnectAsync(Uri uri, CancellationToken cancellationToken) { WebSocketFeature webSocketFeature = null; var contextBuilder = new HttpContextBuilder(_application, AllowSynchronousIO, PreserveExecutionContext); contextBuilder.Configure(context => { var request = context.Request; var scheme = uri.Scheme; scheme = (scheme == "ws") ? "http" : scheme; scheme = (scheme == "wss") ? "https" : scheme; request.Scheme = scheme; if (!request.Host.HasValue) { request.Host = uri.IsDefaultPort ? new HostString(HostString.FromUriComponent(uri).Host) : HostString.FromUriComponent(uri); } request.Path = PathString.FromUriComponent(uri); request.PathBase = PathString.Empty; if (request.Path.StartsWithSegments(_pathBase, out var remainder)) { request.Path = remainder; request.PathBase = _pathBase; } request.QueryString = QueryString.FromUriComponent(uri); request.Headers.Add(HeaderNames.Connection, new string[] { "Upgrade" }); request.Headers.Add(HeaderNames.Upgrade, new string[] { "websocket" }); request.Headers.Add(HeaderNames.SecWebSocketVersion, new string[] { "13" }); request.Headers.Add(HeaderNames.SecWebSocketKey, new string[] { CreateRequestKey() }); if (SubProtocols.Any()) { request.Headers.Add(HeaderNames.SecWebSocketProtocol, SubProtocols.ToArray()); } request.Body = Stream.Null; // WebSocket webSocketFeature = new WebSocketFeature(context); context.Features.Set <IHttpWebSocketFeature>(webSocketFeature); ConfigureRequest?.Invoke(context.Request); }); var httpContext = await contextBuilder.SendAsync(cancellationToken); if (httpContext.Response.StatusCode != StatusCodes.Status101SwitchingProtocols) { throw new InvalidOperationException("Incomplete handshake, status code: " + httpContext.Response.StatusCode); } if (webSocketFeature.ClientWebSocket == null) { throw new InvalidOperationException("Incomplete handshake"); } return(webSocketFeature.ClientWebSocket); }
public async Task DiscoverSchemasAllTest() { // setup var mockHttp = GetMockHttpMessageHandler(); Server server = new Server { Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin(mockHttp.ToHttpClient())) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var configureRequest = new ConfigureRequest { TemporaryDirectory = "../../../Temp", PermanentDirectory = "../../../Perm", LogDirectory = "../../../Logs", DataVersions = new DataVersions(), LogLevel = LogLevel.Debug }; var connectRequest = GetConnectSettings(); var request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, }; // act client.Configure(configureRequest); client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Equal(2, response.Schemas.Count); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task <GameSocket> ConnectAsync(Uri uri, CancellationToken cancellationToken) { GameSocketFeature gameSocketFeature = null; var contextBuilder = new ProtoContextBuilder(_application, AllowSynchronousIO); contextBuilder.Configure(context => { var request = context.Request; var scheme = uri.Scheme; scheme = (scheme == "ws") ? "http" : scheme; scheme = (scheme == "wss") ? "https" : scheme; request.Scheme = scheme; request.Path = PathString.FromUriComponent(uri); request.PathBase = PathString.Empty; if (request.Path.StartsWithSegments(_pathBase, out var remainder)) { request.Path = remainder; request.PathBase = _pathBase; } request.QueryString = QueryString.FromUriComponent(uri); request.Headers.Add("Connection", new string[] { "Upgrade" }); request.Headers.Add("Upgrade", new string[] { "gamesocket" }); request.Headers.Add("Sec-GameSocket-Version", new string[] { "13" }); request.Headers.Add("Sec-GameSocket-Key", new string[] { CreateRequestKey() }); request.Body = Stream.Null; // GameSocket gameSocketFeature = new GameSocketFeature(context); context.Features.Set <IProtoGameSocketFeature>(gameSocketFeature); ConfigureRequest?.Invoke(context.Request); }); var httpContext = await contextBuilder.SendAsync(cancellationToken); if (httpContext.Response.StatusCode != StatusCodes.Status101SwitchingProtocols) { throw new InvalidOperationException("Incomplete handshake, status code: " + httpContext.Response.StatusCode); } if (gameSocketFeature.ClientGameSocket == null) { throw new InvalidOperationException("Incomplete handshake"); } return(gameSocketFeature.ClientGameSocket); }
/// <summary> /// Configures the plugin /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public override Task <ConfigureResponse> Configure(ConfigureRequest request, ServerCallContext context) { Logger.Debug("Got configure request"); Logger.Debug(JsonConvert.SerializeObject(request, Formatting.Indented)); // ensure all directories are created Directory.CreateDirectory(request.TemporaryDirectory); Directory.CreateDirectory(request.PermanentDirectory); Directory.CreateDirectory(request.LogDirectory); // configure logger Logger.SetLogLevel(request.LogLevel); Logger.Init(request.LogDirectory); _server.Config = request; return(Task.FromResult(new ConfigureResponse())); }
public ConfigureResponse Configure(ConfigureRequest request) { ToastHelper.PopToast("Configure"); if (request.FirewallEnabled) { FirewallHelper.EnableFirewall(); } else { FirewallHelper.DisableFirewall(); } var response = new ConfigureResponse(); response.FirewallEnabled = FirewallHelper.IsEnabled(); return(response); }
public ActionResult SetConfiguration([FromBody] ConfigureRequest model) { m_Logger.Info($"[PUT] {APIRoutes.ConfigurationRoute}"); if (string.IsNullOrWhiteSpace(model.ManagementInformationPath)) { m_Logger.Debug("Required parameter ManagementInformationPath is null, empty or whitespace"); return(BadRequest()); } if (!Directory.Exists(model.ManagementInformationPath)) { m_Logger.Debug($"Required parameter ManagementInformationPath point to path that doesn't exist: {model.ManagementInformationPath}"); return(BadRequest()); } m_Manager.ManagementInformationPath = model.ManagementInformationPath; m_MemoryCache.Set(CacheKeys.ManagementInformationKey, model.ManagementInformationPath); return(Ok()); }
public async Task <WebSocket> ConnectAsync(Uri uri, CancellationToken cancellationToken) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); var cancellation = cancellationToken.Register(() => request.Abort()); request.Headers[Constants.Headers.SecWebSocketVersion] = Constants.Headers.SupportedVersion; if (SubProtocols.Count > 0) { request.Headers[Constants.Headers.SecWebSocketProtocol] = string.Join(", ", SubProtocols); } ConfigureRequest?.Invoke(request); HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync(); cancellation.Dispose(); InspectResponse?.Invoke(response); // TODO: Validate handshake HttpStatusCode statusCode = response.StatusCode; if (statusCode != HttpStatusCode.SwitchingProtocols) { response.Dispose(); throw new InvalidOperationException("Incomplete handshake, invalid status code: " + statusCode); } // TODO: Validate Sec-WebSocket-Key/Sec-WebSocket-Accept string subProtocol = response.Headers[Constants.Headers.SecWebSocketProtocol]; if (!string.IsNullOrEmpty(subProtocol) && !SubProtocols.Contains(subProtocol, StringComparer.OrdinalIgnoreCase)) { throw new InvalidOperationException("Incomplete handshake, the server specified an unknown sub-protocol: " + subProtocol); } var stream = response.GetResponseStream(); return(CommonWebSocket.CreateClientWebSocket(stream, subProtocol, KeepAliveInterval, ReceiveBufferSize, UseZeroMask)); }
private static string BuildConfigureRequest(string input) { var command = (ConfigureCommand)Enum.Parse(typeof(ConfigureCommand), input.Split(' ').FirstOrDefault(), true); var request = new ConfigureRequest { Command = command, ServiceOptions = input.Split(' ').Skip(1).FirstOrDefault() }; switch (command) { case ConfigureCommand.Get: break; case ConfigureCommand.Update: var options = new Dictionary <string, string>(); foreach (var pair in input.Split('-').AsEnumerable().Skip(1).Select(o => o.Trim().Split(' '))) { options.Add(pair.FirstOrDefault(), pair.LastOrDefault()); } request.Options = options; break; default: Console.WriteLine("Invalid request."); return(null); } var message = new Message() { Service = Service.Configure, Data = JsonConvert.SerializeObject(request) }; return(Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message)))); }
public override Task <ConfigureResponse> Configure(ConfigureRequest request, ServerCallContext context) { return(Task.FromResult(new ConfigureResponse())); }
public ConfigureResponse Post([FromBody] ConfigureRequest request) { return(Program.Callbacks.Configure(request)); }
public async Task ReadStreamSftpTest() { // setup PrepareTestEnvironment(false); Server server = new Server { Services = { Publisher.BindService(new PluginAunsight.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var configureRequest = new ConfigureRequest { TemporaryDirectory = "../../../Temp", PermanentDirectory = "../../../Perm", LogDirectory = "../../../Logs", DataVersions = new DataVersions(), LogLevel = LogLevel.Debug }; var connectRequest = GetConnectSettings(null, 8, "*.xls", false, false, null, null, true); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, }; var settings = GetSettings(); var schema = GetTestSchema($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory]"); schema.PublisherMetaJson = JsonConvert.SerializeObject(new SchemaPublisherMetaJson { RootPath = settings.RootPaths.First() }); var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Configure(configureRequest); client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); request.Schema = schemasResponse.Schemas[0]; var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(618, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal("90371", record["HCPCS Code"]); Assert.Equal("Hep b ig im", record["Short Description"]); Assert.Equal("1 ML", record["HCPCS Code Dosage"]); Assert.Equal("115.892", record["Payment Limit"]); Assert.Equal("", record["Vaccine AWP%"]); Assert.Equal("", record["Vaccine Limit"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamSftpTest() { // setup PrepareTestEnvironment(false); Server server = new Server { Services = { Publisher.BindService(new PluginAunsight.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var configureRequest = new ConfigureRequest { TemporaryDirectory = "../../../Temp", PermanentDirectory = "../../../Perm", LogDirectory = "../../../Logs", DataVersions = new DataVersions(), LogLevel = LogLevel.Debug }; var connectRequest = GetConnectSettings(null, 0, null, false, false, true); var query = $@"SELECT h.ssn, h.firstname, m.risk_score, r.factor_code, r.factor_text FROM xmltest_CONSUMER h LEFT OUTER JOIN xmltest_RISK_MODEL m ON h.GLOBAL_KEY = m.GLOBAL_KEY LEFT OUTER JOIN xmltest_RISK_FACTOR r ON m.GLOBAL_KEY = r.GLOBAL_KEY"; var discoverRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { GetTestSchema(query) }, }; var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Configure(configureRequest); client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(discoverRequest); request.Schema = schemasResponse.Schemas[0]; var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(7, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal("6075", record["ssn"]); Assert.Equal("string", record["firstname"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamRealTimeTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var configureRequest = new ConfigureRequest { TemporaryDirectory = "../../../Temp", PermanentDirectory = "../../../Perm", LogDirectory = "../../../Logs", DataVersions = new DataVersions(), LogLevel = LogLevel.Debug }; var schema = GetTestSchema(null, @"Lead", @"Lead"); // var schema = GetTestSchema(null, @"LeadUpdates", @"LeadUpdates", "Select Id, Name FROM Lead"); // var schema = GetTestSchema(null, @"/topic/LeadUpdates", @"/topic/LeadUpdates", "Select Id, Name FROM Lead"); var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var realTimeSettings = new RealTimeSettings { ChannelName = "LeadsAll", BatchWindowSeconds = 5 }; var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test", JobDataVersion = 1 }, JobId = "test", RealTimeStateJson = JsonConvert.SerializeObject(new RealTimeState()), RealTimeSettingsJson = JsonConvert.SerializeObject(realTimeSettings), }; // act var records = new List <Record>(); try { client.Configure(configureRequest); client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); request.Schema = schemasResponse.Schemas[0]; var cancellationToken = new CancellationTokenSource(); cancellationToken.CancelAfter(10000); var response = client.ReadStream(request, null, null, cancellationToken.Token); var responseStream = response.ResponseStream; while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } } catch (Exception e) { Assert.Contains("Status(StatusCode=\"Cancelled\", Detail=\"Cancelled\"", e.Message); } // assert Assert.Equal(1023, records.Where(r => r.Action == Record.Types.Action.Upsert).ToList().Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); // Assert.Equal("~", record["tilde"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public PluginTestScenarioBuilder <T> Configure(Action <ConfigureRequest> config) { _configureRequest = new ConfigureRequest(); config(_configureRequest); return(this); }