private async Task <LoadBalancerResponse> GetConnectionServerAsync(string server) { var request = new LoadBalancerRequest(); var result = await ExecuteAsync <LoadBalancerRequest, LoadBalancerResponse>($"{server}:{ClientConstants.LoadBalancerServerPort}", "LoadBalancer/GetConnectionServer", request); ConnectionServer = result.Server; return(result); }
private IEnumerable <ResponseMessage> GenericCommandHandler(IncomingMessage incomingMessage, string command) { Exception exception = null; HttpResponseMessage apiResponseMessage = null; yield return(incomingMessage.IndicateTypingOnChannel()); if (this.lboPlugin.CommandMisformed(incomingMessage.TargetedText)) { yield return(incomingMessage.ReplyToChannel($"Command was not formatted correctly. Help: '{GetHelpText(command)}'")); yield break; } var lboRequest = new LoadBalancerRequest(incomingMessage.TargetedText); var appliance = this.lboPlugin.GetAppliance(lboRequest.ApplianceName); if (appliance == null) { yield return(incomingMessage.ReplyToChannel($"No appliance could be found with the name:{lboRequest.ApplianceName}. Help: '{GetHelpText(command)}'")); yield break; } try { apiResponseMessage = this.lboPlugin.MakeApiRequest(appliance, lboRequest); } catch (Exception e) { this.log.Error(e); exception = e; } if (this.lboPlugin.ApiRequestThrewException(apiResponseMessage, exception)) { yield return(incomingMessage.ReplyToChannel($"An exception occured when communicating to applicance '{appliance.Name} ({appliance.ApiUrl}).")); yield break; } var lbResponse = this.lboPlugin.ParseApiResponse(apiResponseMessage); if (lbResponse.Contains("Error")) { yield return(incomingMessage.ReplyToChannel($"An error occured when issuing command against VIP {lboRequest.Vip} for RIP {lboRequest.Rip}. Check the VIP and RIP names are valided for applicance `{appliance.Name}` ({appliance.ApiUrl}).")); yield break; } yield return(incomingMessage.ReplyToChannel($"{lbResponse}")); }
private static StringContent GetRequestContent(LoadBalanacerAppliance applaince, LoadBalancerRequest request) { var apiRequest = new ApiRequest(applaince.ApiKey, request.Command, request.Vip, request.Rip); return(new StringContent(JsonConvert.SerializeObject(apiRequest), Encoding.UTF8)); }
internal HttpResponseMessage MakeApiRequest(LoadBalanacerAppliance appliance, LoadBalancerRequest request) { using (var handler = new HttpClientHandler()) { if (this.TrustAllCerts) { handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true; } using (var client = new HttpClient(handler)) { client.DefaultRequestHeaders.Authorization = GetAuthHeader(appliance); return(client.PostAsync(appliance.ApiUrl, GetRequestContent(appliance, request)).Result); } } }