/// <summary> /// Tests the connection. /// <exception cref="ESSessionExpceion">connect faild</exception> /// </summary> public async Task <Result> TestCredential() { string url = this.GetFullUrl("rest/openapi/sm/session"); try { string payload = string.Format("{{ \"userid\":\"{0}\", \"value\":\"{1}\" }}", this.Appliance.LoginAccount, this.Appliance.LoginPassword); var content = new StringContent(payload, Encoding.UTF8, "application/json"); HttpResponseMessage response = new HttpClient().PutAsync(url, content).Result; string responseContent = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { return(Result.Failed(Convert.ToInt32(response.StatusCode), $"Failed to communicate with {Appliance.Host} -> {response.ReasonPhrase}.")); } ESightAPIResult result = ReadAsJsonDataContract <ESightAPIResult>(responseContent); if (result.code == 0) { this.OpenId = result.data; return(Result.Done("eSight authentication passed", null)); } else { return(Result.Failed(result.code, $"Failed to communicate with {Appliance.Host} -> {result.description}.")); } } catch (SerializationException ex) { return(Result.Failed(100, $"Failed to connect communicate with {Appliance.Host} -> {ex.Message}", ex)); } catch (AggregateException e) { List <string> reasons = GetExceptionReasons(e); string cause = String.Join(", ", reasons); return(Result.Failed(100, $"Failed to connect to {Appliance.Host} -> {cause}", e)); } }
/// <summary> /// Logouts this instance. /// </summary> /// <exception cref="Exception">Exception</exception> /// <exception cref="ESSessionExpceion">HW_LOGIN_AUTH</exception> public async Task <Result> Logout() { if (string.IsNullOrEmpty(this.OpenId)) { return(Result.Done()); } string url = this.GetFullUrl($"rest/openapi/sm/session?openid={this.OpenId}"); try { var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Add("openid", this.OpenId); var response = httpClient.DeleteAsync(url).Result; string responseContent = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { return(Result.Failed(Convert.ToInt32(response.StatusCode), $"Failed to logout from {Appliance.Host} -> {response.ReasonPhrase}.")); } ESightAPIResult result = ReadAsJsonDataContract <ESightAPIResult>(responseContent); if (result.code == 0) { return(Result.Done()); } else { return(Result.Failed(result.code, $"Failed to logout from {Appliance.Host} -> {result.description}.")); } } catch (Exception e) { return(Result.Failed(100, $"Failed to connect to {Appliance.Host} -> {e.Message}.", e)); } }