using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Reflection; using System.Text; using System.Threading.Tasks; using Disco.Models.ClientServices; using Newtonsoft.Json; namespace Disco.Client.Extensions { public static class ClientServicesExtensions { public const string ServicePathAuthenticatedTemplate = "http://DISCO:9292/Services/Client/Authenticated/{0}"; public const string ServicePathUnauthenticatedTemplate = "http://DISCO:9292/Services/Client/Unauthenticated/{0}"; public static ResponseType Post(this ServiceBase Service, bool Authenticated) { string jsonResponse; string serviceUrl; if (Authenticated) serviceUrl = string.Format(ServicePathAuthenticatedTemplate, Service.Feature); else serviceUrl = string.Format(ServicePathUnauthenticatedTemplate, Service.Feature); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(serviceUrl); request.UserAgent = string.Format("Disco-Client/{0}", Assembly.GetExecutingAssembly().GetName().Version.ToString(3)); request.ContentType = "application/json"; request.Method = WebRequestMethods.Http.Post; request.UseDefaultCredentials = true; request.Timeout = 300000; // 5 Minutes string jsonRequest = JsonConvert.SerializeObject(Service); using (StreamWriter requestWriter = new StreamWriter(request.GetRequestStream())) { requestWriter.Write(jsonRequest); } using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (StreamReader responseReader = new StreamReader(response.GetResponseStream())) { jsonResponse = responseReader.ReadToEnd(); } } if (string.IsNullOrEmpty(jsonResponse)) return default(ResponseType); else return JsonConvert.DeserializeObject(jsonResponse); } } }