CheckPoliciesResult WssServiceClient.CheckPolicies(CheckPoliciesRequest request) { return(Service(request)); }
/* --- Private methods --- */ /** * The method calls the White Source service. */ private R Service <R>(BaseRequest <R> request) { try { HttpWebRequest httpRequest = WebRequest.Create(serviceUrl) as HttpWebRequest; httpRequest.Method = "POST"; httpRequest.ContentType = "application/x-www-form-urlencoded"; httpRequest.Accept = "application/json"; SetProxy(httpRequest); // add post data to request StringBuilder postString = new StringBuilder(); postString.AppendFormat("{0}={1}", APIConstants.PARAM_REQUEST_TYPE, System.Web.HttpUtility.UrlEncode(request.Type.ToString())); postString.Append("&"); postString.AppendFormat("{0}={1}", APIConstants.PARAM_AGENT, System.Web.HttpUtility.UrlEncode(request.Agent)); postString.Append("&"); postString.AppendFormat("{0}={1}", APIConstants.PARAM_AGENT_VERSION, System.Web.HttpUtility.UrlEncode(request.AgentVersion)); postString.Append("&"); postString.AppendFormat("{0}={1}", APIConstants.PARAM_TOKEN, System.Web.HttpUtility.UrlEncode(request.OrgToken)); postString.Append("&"); postString.AppendFormat("{0}={1}", APIConstants.PARAM_PRODUCT, System.Web.HttpUtility.UrlEncode(request.Product)); postString.Append("&"); postString.AppendFormat("{0}={1}", APIConstants.PARAM_PRODUCT_VERSION, System.Web.HttpUtility.UrlEncode(request.ProductVersion)); postString.Append("&"); postString.AppendFormat("{0}={1}", APIConstants.PARAM_TIME_STAMP, System.Web.HttpUtility.UrlEncode(request.TimeStamp.ToString())); // Serialize projects to JSON switch (request.Type) { case RequestType.UPDATE: UpdateInventoryRequest updateRequest = (UpdateInventoryRequest)Convert.ChangeType(request, typeof(UpdateInventoryRequest)); AppendProjects(updateRequest.Projects, postString); break; case RequestType.CHECK_POLICIES: CheckPoliciesRequest checkPoliciesRequest = (CheckPoliciesRequest)Convert.ChangeType(request, typeof(CheckPoliciesRequest)); AppendProjects(checkPoliciesRequest.Projects, postString); break; default: throw new InvalidOperationException("Unsupported request type."); } ASCIIEncoding ascii = new ASCIIEncoding(); byte[] postBytes = ascii.GetBytes(postString.ToString()); httpRequest.ContentLength = postBytes.Length; Stream postStream = httpRequest.GetRequestStream(); postStream.Write(postBytes, 0, postBytes.Length); postStream.Close(); using (HttpWebResponse response = httpRequest.GetResponse() as HttpWebResponse) { if (response.StatusCode != HttpStatusCode.OK) { throw new Exception(String.Format("Server error (HTTP {0}: {1}).", response.StatusCode, response.StatusDescription)); } using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); String responseString = reader.ReadToEnd(); Debug("response: " + responseString); // convert response JSON to ResultEnvelope ResultEnvelope resultEnvelope; MemoryStream responseMS = new MemoryStream(Encoding.Unicode.GetBytes(responseString)); System.Runtime.Serialization.Json.DataContractJsonSerializer responseSerializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(ResultEnvelope)); resultEnvelope = responseSerializer.ReadObject(responseMS) as ResultEnvelope; responseMS.Close(); String data = resultEnvelope.Data; Debug("Result data is: " + data); // convert data JSON to result according to type R result; MemoryStream dataMS = new MemoryStream(Encoding.Unicode.GetBytes(data)); switch (request.Type) { case RequestType.UPDATE: System.Runtime.Serialization.Json.DataContractJsonSerializer updateSerializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(UpdateInventoryResult)); result = (R)Convert.ChangeType(updateSerializer.ReadObject(dataMS) as UpdateInventoryResult, typeof(R)); dataMS.Close(); break; case RequestType.CHECK_POLICIES: // enable Dictionary support DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings(); settings.UseSimpleDictionaryFormat = true; System.Runtime.Serialization.Json.DataContractJsonSerializer checkPoliciesSerializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(CheckPoliciesResult), settings); result = (R)Convert.ChangeType(checkPoliciesSerializer.ReadObject(dataMS) as CheckPoliciesResult, typeof(R)); dataMS.Close(); break; default: dataMS.Close(); throw new InvalidOperationException("Unsupported request type."); } dataMS.Close(); return(result); } } } catch (Exception e) { Debug(e.Message); return(default(R)); } }