static async Task Main(string[] args) { try { Log.Debug("Starting execution"); // var targetIp = "https://*****:*****@"{ ""user"" : ""*****@*****.**"", ""password"": ""123456""}", Encoding.UTF8, MediaTypeNames.Application.Json); var grpcChannelOptions = GetChannelOptions(unsafeHttpClient); using var channel = GrpcChannel.ForAddress(targetIp, grpcChannelOptions); // var response = await grpcChannelOptions.HttpClient.PostAsync($"{targetIp}/Jwt/Authenticate", authentication); // var authenticationValue = await response.Content.ReadAsStringAsync(); // var authenticationModel = JsonSerializer.Deserialize<JwtAuthenticationResult>(authenticationValue, new JsonSerializerOptions(){PropertyNameCaseInsensitive = true}); // var token = authenticationModel.AccessToken; // Console.WriteLine(token); // // var token = // // "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYWRtaW5AYWRtaW4uY29tIiwiYXVkIjoiUEMgUmVtb3RlIDIiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOiJhZG1pbmlzdHJhdG9yIiwiZXhwIjoxNjI1NzIxMzQ5LCJpc3MiOiJQQyBSZW1vdGUgMiJ9.kyQY4B-ZvfsIaBEtd-bGz-0GjrDOlbZwPsJ1zza8zvjwTJJIZ7AvMTLxRzrx1QuQSX45K-_ktrZd7jzr4I-haA"; // // var requestMessage = new HttpRequestMessage(HttpMethod.Post, $"{targetIp}/Jwt/TokenVerify"); // requestMessage.Headers.Add("Authorization", $"Bearer " + token); // var testResponse = await grpcChannelOptions.HttpClient.SendAsync(requestMessage); // var testReply = await testResponse.Content.ReadAsStringAsync(); // Console.WriteLine($"{(int)testResponse.StatusCode} => {testReply}"); // // return; var client = new DesktopIntegrationService.DesktopIntegrationServiceClient(channel); Log.Info("Executing shutdown"); await client.ShutDownDelayedAsync(new ShutdownDelayedRequest() { Seconds = 60 }); await Task.Delay(5000); Log.Info("Execution shutdown abort"); await client.AbortShutDownAsync(new AbortShutdownRequest()); Log.Info("Execution complete."); } catch (Exception e) { Log.Error(e.ToString()); } }
public static GrpcChannel Create(HostEndpointAddress address) { var baseAddress = new Uri(address.FullAddress); Log.Trace("Creating channel with connection {Address}", address.FullAddress); var channelOptions = new GrpcChannelOptions() { DisposeHttpClient = true, HttpClient = GrpcWebHttpClientFactory.Create(baseAddress, new AuthenticationSurface(address, new AuthenticationStorage(address))) }; var channel = GrpcChannel.ForAddress(new Uri(address.FullAddress), channelOptions); return(channel); }