public void Search()
        {
            // Arrange
            ITravelLogicService travelLogicService = new TravelLogicService();
            // Call the service
            var searchResult = travelLogicService.Search(TravelLogicSearch.GetDemoObject());

            // Verify
            Assert.IsNotNull(searchResult);
        }
        public object Search(TravelLogicSearch inputSearch)
        {
            object result    = null;
            string searchURI = ServiceAPI.Library.Infrastructure.Settings.TRAVELLOGIC_SEARCH_URI;

            try
            {
                // Create the HTTP client and set the API URL on it
                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri(endpoint);

                // Add an Accept header for JSON format.
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));


                // Get the token
                var token = Authenticate();

                if (token.IsAuthenticated())
                {
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.access_token);
                }
                else
                {
                    throw new Exception(ServiceAPI.Library.Infrastructure.Settings.TRAVELLOGIC_AUTH_ERROR_MSG);
                }

                // The http body request
                var content = new StringContent(JsonConvert.SerializeObject(inputSearch), Encoding.UTF8, "application/json");

                // List data response
                HttpResponseMessage response = client.PostAsync(searchURI, content).Result;

                if (response.IsSuccessStatusCode)
                {
                    // Parse the response body to get the list of tickets
                    var responseParsed = JsonConvert.DeserializeObject <TravelLogicSearchResult>(response.Content.ReadAsStringAsync().Result);
                    result = responseParsed.Result;
                }
                else
                {
                    throw new Exception(response.ReasonPhrase);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return(result);
        }
        public IHttpActionResult Search(TravelLogicSearch inputSearch)
        {
            // The Json object to be sent to the client
            object result = null;

            try
            {
                // Calls the Travel Logic search method
                result = _travelLogicService.Search(inputSearch);
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }

            return(Ok(result));
        }