public HttpResponseMessage Autocomplete(string q) { if (q == null) { return(null); } //Запрос на FatSecret FatSecretAPI fsApi = new FatSecretAPI(); string fsAutocompleteResults = fsApi.AutocompleteFood(q); if (fsAutocompleteResults.IndexOf("error") != -1) { // Не выкидываем ошибку, а просто логируем ее во внутреннем журнале возвращая пустой результат //TODO Логировать ошибку //#region __Error__ ////Если ошибка, то десериализуем в объект FSError //var err = Newtonsoft.Json.JsonConvert.DeserializeObject<FatSecretAPI.FSError>(fsAutocompleteResults); ////иначе выбрасываем исключение с кодом и сообщением ошибки //throw new FatSecretException(Int16.Parse(err.error.code), err.error.message); //#endregion } object results = JsonConvert.DeserializeObject(fitotrack.Helpers.JSONHelper.FoodsAutocompleteNormalize(fsAutocompleteResults)); //TODO Возможная выборка из БД return(Request.CreateResponse(HttpStatusCode.OK, results)); }
public HttpResponseMessage GetFsFood(long id) { //Запрашиваем информацию о продукте у FatSecret FatSecretAPI fsApi = new FatSecretAPI(); string fsFood = fsApi.GetFood(id); if (fsFood.IndexOf("error") != -1) { #region __Error__ //Если ошибка, то десериализуем в объект FSError var err = Newtonsoft.Json.JsonConvert.DeserializeObject <FatSecretAPI.FSError>(fsFood); //Если ошибка - отсутствует ID if (err.error.code.Equals(FatSecretAPI.FSError.INVALID_ID)) { //то выбрасываем 404 throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound)); } else { //иначе выбрасываем исключение с кодом и сообщением ошибки throw new FatSecretException(Int16.Parse(err.error.code), err.error.message); } #endregion } var foodDTO = JsonConvert.DeserializeObject <FoodDTO>(fitotrack.Helpers.JSONHelper.FoodGetNormalize(fsFood)); return(Request.CreateResponse <FoodDTO>(HttpStatusCode.OK, foodDTO)); }
public HttpResponseMessage Search([FromUri] SearchDTO searchParams) { SearchResults searchResults = new SearchResults(); if (searchParams.q != null) { //if ((q == null) || // (q.Length < queryMinLength)) //{ // throw new HttpResponseException( // Request.CreateResponse( HttpStatusCode.BadRequest, // "Search query length must be at least " + queryMinLength + " characters." ) // ); //} //if (pageSize>50) // pageSize = 50; //Ищем на FatSecret FatSecretAPI fsApi = new FatSecretAPI(); string fsSearchResults = fsApi.SearchFood(searchParams.q, searchParams.pn, searchParams.ps); if (fsSearchResults.IndexOf("error") != -1) { #region __Error__ //Если ошибка, то десериализуем в объект FSError var err = Newtonsoft.Json.JsonConvert.DeserializeObject <FatSecretAPI.FSError>(fsSearchResults); //иначе выбрасываем исключение с кодом и сообщением ошибки throw new FatSecretException(Int16.Parse(err.error.code), err.error.message); #endregion } searchResults = JsonConvert.DeserializeObject <SearchResults>(fitotrack.Helpers.JSONHelper.FoodsSearchNormalize(fsSearchResults)); //TODO Выборка из БД FitoTrack #region __old stuff__ //var query = unitOfWork.FoodRepository. // Get(p => p.Title.Contains(q), null).Where(p=>(p.FSFoodId.Equals(0) || p.FSFoodId == null)); //var results = query.Skip(page * pageSize).Take(pageSize); //if (results != null) //{ // if (query.Count() > (pageSize * (page + 1))) // { // hasMore = true; // } // resultsDTO = Mapper.Map<IEnumerable<ProductDTO>>(results); //} //var query = unitOfWork.ProductRepository. // Get(p => p.Title.Contains(q), null); //var results = query.Skip(page * pageSize).Take(pageSize); //if (results != null) //{ // if (query.Count() > (pageSize * (page + 1))) // { // hasMore = true; // } // resultsDTO = Mapper.Map<IEnumerable<ProductDTO>>(results); //} //var obj = new Dictionary<string, object> { // { "results", resultsDTO }, // { "hasMore", hasMore } //}; //return Request.CreateResponse<Dictionary<string, object>>(HttpStatusCode.OK, obj); #endregion } return(Request.CreateResponse <SearchResults>(HttpStatusCode.OK, searchResults)); }