public FindServicesResponseObj FindServices([FromBody] FindServicesRequestObj findServicesObj) { log.Info("Incoming request to " + GetCurrentMethod()); var requestString = JsonConvert.SerializeObject(findServicesObj, Formatting.Indented); _logEventService.LogInfo(EventNumber.SPIS_consumeService, EventDataType.None, null, requestString); try { var result = _sscService.FindServices(findServicesObj); _logEventService.LogSuccess(EventNumber.SPIS_consumeService, EventDataType.Other, null, JsonConvert.SerializeObject(result, Formatting.Indented)); return(result); } catch (HttpResponseException ex) { _logEventService.LogError(EventNumber.SPIS_consumeService, EventType.Error_internal, null, JsonConvert.SerializeObject(requestString, Formatting.Indented) + " " + ex.Response.ToString()); throw; } catch (Exception ex) { log.Error(ex.Message, ex); string msg = "SPIS internal server error. " + ex.Message; _logEventService.LogError(EventNumber.SPIS_consumeService, EventType.Error_internal, null, JsonConvert.SerializeObject(requestString, Formatting.Indented) + " " + ex.Message); throw CreateHttpResponseException(HttpStatusCode.InternalServerError, msg); } }
public ObservableCollection <ServiceInstance> FindServices(string coverageAreaType, string coverageArea, string unloCode, List <string> serviceProviderIds, string serviceDesignId, string serviceInstanceId, string mmsi, string imo, string serviceType, string serviceStatus, List <string> keyWords, string freeText, long?page, long?pageSize) { var result = new ObservableCollection <ServiceInstance>(); var url = _visUrl + string.Format("/findServices"); var area = new FindServicesRequestObjFilterCoverageArea(coverageAreaType, coverageArea); var filter = new FindServicesRequestObjFilter(area, unloCode, serviceProviderIds, serviceDesignId, serviceInstanceId, mmsi, imo, serviceType, serviceStatus, keyWords, freeText); var request = new FindServicesRequestObj(filter, page, pageSize); WebHeaderCollection headers = new WebHeaderCollection(); headers.Add(HttpRequestHeader.ContentType, "application / json; charset = UTF8"); var response = WebRequestHelper.Post(url, request.ToJson(), headers); try { var responseObj = JsonConvert.DeserializeObject <FindServicesResponseObj>(response.Body); if (responseObj != null) { if (response.HttpStatusCode == HttpStatusCode.OK) { if (responseObj.StatusCode != 200) { MessageBox.Show(string.Format("The find service request returned status code {0}, {1}", responseObj.StatusCode, responseObj.StatusMessage)); } try { if (responseObj.ServicesInstances != null) { foreach (var service in responseObj.ServicesInstances) { result.Add(service); } } } catch (Exception ex) { throw new Exception(responseObj.ServicesInstances.ToArray().ToString(), ex); } } } else { MessageBox.Show(string.Format("The find service request returned status code {0}, {1}", response.HttpStatusCode, response.Body)); } return(result); } catch (Exception ex) { string errMessage = string.Format("Failed to get valid response from Service Registry. The reponse body does not validate towards the underlying schema: {0}", ex.Message); var err = new Exception(errMessage); throw err; } }
public virtual FindServicesResponseObj FindServices(FindServicesRequestObj request) { if (request == null) { string msg = "Invalid request."; var errorMsg = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(msg), ReasonPhrase = "Bad request." }; throw new HttpResponseException(errorMsg); } log.Info(string.Format("Sending findServices {0}, {1}, {2} request to ServiceRegistry", request.Filter, request.Page, request.PageSize)); var result = new FindServicesResponseObj(); try { var serviceRegService = new ServiceRegistryService(); var response = serviceRegService.FindServices(request); if (response.HttpStatusCode == HttpStatusCode.OK && !string.IsNullOrEmpty(response.Body)) { var responseObj = JsonConvert.DeserializeObject <List <ServiceInstance> >(response.Body); result.ServicesInstances = responseObj; } result.StatusCode = (int)response.HttpStatusCode; result.StatusMessage = response.ErrorMessage; return(result); } catch (HttpResponseException ex) { log.Error(ex.Message, ex); throw; } catch (Exception ex) { log.Error(ex.Message, ex); string msg = "VIS internal server error. " + ex.Message; var errorMsg = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(msg), ReasonPhrase = "Internal error." }; throw new HttpResponseException(errorMsg); } }
public FindServicesResponseObj FindServices([FromBody] FindServicesRequestObj findServicesObj) { log.Info("Incoming request to " + GetCurrentMethod()); _logEventService.LogInfo(EventNumber.VIS_consumeService, EventDataType.Other, null, JsonConvert.SerializeObject(findServicesObj, Formatting.Indented)); try { var result = _sscService.FindServices(findServicesObj); _logEventService.LogSuccess(EventNumber.VIS_consumeService, EventDataType.Other, null, JsonConvert.SerializeObject(result, Formatting.Indented)); //set last interaction time var conInfo = _connectionInformationService.Get().FirstOrDefault(); if (conInfo == null) { _connectionInformationService.Insert(new ConnectionInformation { LastInteraction = DateTime.UtcNow }); } else { conInfo.LastInteraction = DateTime.UtcNow; _connectionInformationService.Update(conInfo); } _context.SaveChanges(); return(result); } catch (HttpResponseException ex) { _logEventService.LogError(EventNumber.VIS_consumeService, EventType.Error_internal, null, JsonConvert.SerializeObject(ex.Response, Formatting.Indented)); throw; } catch (Exception ex) { log.Error(ex.Message, ex); string msg = "VIS internal server error. " + ex.Message; _logEventService.LogError(EventNumber.VIS_consumeService, EventType.Error_internal, null, ex.Message); throw CreateHttpResponseException(HttpStatusCode.InternalServerError, msg); } }
public ObservableCollection <ServiceInstance> FindServices(string coverageAreaType, string coverageArea, string unloCode, List <string> serviceProviderIds, string serviceDesignId, string serviceInstanceId, string mmsi, string imo, string serviceType, string serviceStatus, List <string> keyWords, string freeText, long?page, long?pageSize) { var result = new ObservableCollection <ServiceInstance>(); var url = _spisUrl + string.Format("/findServices"); var area = new FindServicesRequestObjFilterCoverageArea(coverageAreaType, coverageArea); var filter = new FindServicesRequestObjFilter(area, unloCode, serviceProviderIds, serviceDesignId, serviceInstanceId, mmsi, imo, serviceType, serviceStatus, keyWords, freeText); var request = new FindServicesRequestObj(filter, page, pageSize); WebHeaderCollection headers = new WebHeaderCollection(); headers.Add(HttpRequestHeader.ContentType, "application/json; charset=utf-8"); var response = WebRequestHelper.Post(url, request.ToJson(), headers); var responseObj = JsonConvert.DeserializeObject <FindServicesResponseObj>(response.Body); if (response.HttpStatusCode == HttpStatusCode.OK) { try { foreach (var service in responseObj.ServicesInstances) { result.Add(service); } } catch (Exception ex) { throw new Exception(responseObj.ServicesInstances.ToArray().ToString(), ex); } } return(result); }
public WebRequestHelper.WebResponse FindServices(FindServicesRequestObj data) { string url = string.Empty; bool isGeoSearch = false; if (data.Filter.CoverageArea != null && !string.IsNullOrEmpty(data.Filter.CoverageArea.Value)) { if (data.Filter.CoverageArea.CoverageType == "WKT") { url = PATH_SEARCH_WKT.Replace("[GEOMETRY]", HttpUtility.UrlEncode(data.Filter.CoverageArea.Value)); } if (data.Filter.CoverageArea.CoverageType == "GeoJSON") { url = PATH_SEARCH_GeoJSON.Replace("[GEOMETRY]", HttpUtility.UrlEncode(data.Filter.CoverageArea.Value)); } isGeoSearch = true; } else { url = PATH_SEARCH_GENERIC; } string query = string.Empty; if (!string.IsNullOrEmpty(data.Filter.FreeText)) { if (FormatValidation.IsValidFreeText(data.Filter.FreeText)) { query = data.Filter.FreeText.Replace(":", "\\:"); query = HttpUtility.UrlEncode(query); } else { string msg = "Forbidden character(s) in freetext search string."; var errorMsg = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(msg), ReasonPhrase = "Bad request." }; throw new HttpResponseException(errorMsg); } } else { if (!string.IsNullOrEmpty(data.Filter.UnLoCode)) { query = AddToQuery(query, "unlocode", data.Filter.UnLoCode, "AND"); } if (!string.IsNullOrEmpty(data.Filter.ServiceDesignId)) { query = AddToQuery(query, "designId", data.Filter.ServiceDesignId.Replace(":", "\\:"), "AND"); } if (!string.IsNullOrEmpty(data.Filter.ServiceInstanceId)) { query = AddToQuery(query, "instanceId", data.Filter.ServiceInstanceId.Replace(":", "\\:"), "AND"); } if (!string.IsNullOrEmpty(data.Filter.ServiceType)) { query = AddToQuery(query, "serviceType", data.Filter.ServiceType, "AND"); } if (!string.IsNullOrEmpty(data.Filter.ServiceStatus)) { query = AddToQuery(query, "status", data.Filter.ServiceStatus, "AND"); } if (!string.IsNullOrEmpty(data.Filter.Mmsi) && !string.IsNullOrEmpty(data.Filter.Imo)) { if (query == string.Empty) { query += "("; } else { query += " AND ("; } query = AddToQuery(query, "mmsi", data.Filter.Mmsi, "OR"); query = AddToQuery(query, "imo", data.Filter.Imo, "OR"); query += ")"; } else { if (!string.IsNullOrEmpty(data.Filter.Mmsi)) { query = AddToQuery(query, "mmsi", data.Filter.Mmsi, "AND"); } if (!string.IsNullOrEmpty(data.Filter.Imo)) { query = AddToQuery(query, "imo", data.Filter.Imo, "AND"); } } if (data.Filter.ServiceProviderIds != null && data.Filter.ServiceProviderIds.Count > 0) { if (query == string.Empty) { query += "("; } else { query += " AND ("; } foreach (var id in data.Filter.ServiceProviderIds) { query = AddToQuery(query, "organizationId", id.Replace(":", "\\:"), "OR"); } query += ")"; } if (data.Filter.ServiceProviderIds != null && data.Filter.ServiceProviderIds.Count > 0) { if (query == string.Empty) { query += "("; } else { query += " AND ("; } foreach (var id in data.Filter.ServiceProviderIds) { query = AddToQuery(query, "organizationId", id.Replace(":", "\\:"), "OR"); } query += ")"; } if (data.Filter.KeyWords != null && data.Filter.KeyWords.Count > 0) { if (query == string.Empty) { query += "("; } else { query += " AND ("; } foreach (var id in data.Filter.KeyWords) { query = AddToQuery(query, "keywords", id.Replace(":", "\\:"), "AND"); } query += ")"; } } if (string.IsNullOrEmpty(query) && !isGeoSearch) { url = PATH_ALL; } if (data.Page != null) { if (url == PATH_ALL) { query += "?page=" + data.Page.ToString(); } else { query += "&page=" + data.Page.ToString(); } } if (data.PageSize != null) { query += "&size=" + data.PageSize.ToString(); } return(MakeGenericCall(url + query, "GET")); }