using System; using System.Net; using System.Net.Http; using Newtonsoft.Json; public class StaticClient { public static string BaseUrl; public static CookieContainer CookieContainer; public static HttpClientHandler ClientHandler; public static HttpClient HttpClient; public static void Init(string baseUrl) { if (string.IsNullOrWhiteSpace(baseUrl)) throw new ArgumentException("baseUrl must not be null or whitespace."); if (baseUrl.EndsWith('/')) baseUrl = baseUrl.Substring(0, baseUrl.Length - 1); StaticClient.BaseUrl = baseUrl; StaticClient.CookieContainer = new CookieContainer(); StaticClient.ClientHandler = new HttpClientHandler() { AllowAutoRedirect = true, UseCookies = true, CookieContainer = StaticClient.CookieContainer, AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }; StaticClient.HttpClient = new HttpClient(StaticClient.ClientHandler); StaticClient.HttpClient.DefaultRequestHeaders.Add("Accept", "*/*"); StaticClient.HttpClient.DefaultRequestHeaders.Add("Connection", "keep-alive"); StaticClient.HttpClient.DefaultRequestHeaders.Add("Accept-Encoding", "identity"); } public class Test { public static string Status() { var message = new HttpRequestMessage(HttpMethod.Get, $"{StaticClient.BaseUrl}/status"); var response = StaticClient.HttpClient.Send(message); if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); if (string.IsNullOrEmpty(content)) return default; return JsonConvert.DeserializeObject(content); } else { throw new Exception("Unexpected Http Response StatusCode:" + response.StatusCode); } } public static string Add(double a, double b) { var message = new HttpRequestMessage(HttpMethod.Post, $"{StaticClient.BaseUrl}/add/{a}/{b}"); var response = StaticClient.HttpClient.Send(message); if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); if (string.IsNullOrEmpty(content)) return default; return JsonConvert.DeserializeObject(content); } else { throw new Exception("Unexpected Http Response StatusCode:" + response.StatusCode); } } public static string Compress() { var message = new HttpRequestMessage(HttpMethod.Get, $"{StaticClient.BaseUrl}/compress"); var response = StaticClient.HttpClient.Send(message); if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); if (string.IsNullOrEmpty(content)) return default; return JsonConvert.DeserializeObject(content); } else { throw new Exception("Unexpected Http Response StatusCode:" + response.StatusCode); } } public static string CompressFile() { var message = new HttpRequestMessage(HttpMethod.Get, $"{StaticClient.BaseUrl}/file/compress"); var response = StaticClient.HttpClient.Send(message); if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); if (string.IsNullOrEmpty(content)) return default; return JsonConvert.DeserializeObject(content); } else { throw new Exception("Unexpected Http Response StatusCode:" + response.StatusCode); } } } public class Auth { public static bool UserExists(string name) { var message = new HttpRequestMessage(HttpMethod.Get, $"{StaticClient.BaseUrl}/auth/{name}"); var response = StaticClient.HttpClient.Send(message); if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); if (string.IsNullOrEmpty(content)) return default; return bool.Parse(content); } else { throw new Exception("Unexpected Http Response StatusCode:" + response.StatusCode); } } public static void Signup(User request) { var message = new HttpRequestMessage(HttpMethod.Post, $"{StaticClient.BaseUrl}/auth/signup"); message.Content = new StringContent(JsonConvert.SerializeObject(request)); var response = StaticClient.HttpClient.Send(message); if (!response.IsSuccessStatusCode) throw new Exception("Unexpected Http Response StatusCode:" + response.StatusCode); } public static User Get() { var message = new HttpRequestMessage(HttpMethod.Get, $"{StaticClient.BaseUrl}/auth"); var response = StaticClient.HttpClient.Send(message); if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); if (string.IsNullOrEmpty(content)) return default; return JsonConvert.DeserializeObject(content); } else { throw new Exception("Unexpected Http Response StatusCode:" + response.StatusCode); } } public static UserRole GetRole() { var message = new HttpRequestMessage(HttpMethod.Get, $"{StaticClient.BaseUrl}/auth/role"); var response = StaticClient.HttpClient.Send(message); if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); if (string.IsNullOrEmpty(content)) return default; return JsonConvert.DeserializeObject(content); } else { throw new Exception("Unexpected Http Response StatusCode:" + response.StatusCode); } } } public class IncludedType { public int Test; } public class User : BaseUser { public string Name; public System.Collections.Generic.List List; public ulong Property { get; set; } } public class BaseUser { public string Id; public System.Collections.Generic.List Permissions; public UserRole Role { get; set; } public class Permission { public string Name; public Types Type; public enum Types : int { Read = 0, Write = 1, } } } public enum UserRole : byte { Unknown = 0, Admin = 2, User = 1, } }