public string GetMultimediaObject(GetMultimediaObject_Request request) { List <string> errors; GetMultimediaObject_Response response = GetMultimediaObject(request, out errors); string result = SerializeResponse(response, errors); return(result); }
/// <summary> /// Serializacja odpowiedzi /// </summary> /// <param name="response">Informacje do serializacji</param> /// <param name="errors">Lista dotychczasowych błędów</param> private string SerializeResponse(GetMultimediaObject_Response response, List <string> errors) { string result; try { // Przypisz listę błędów do obiektu response.ErrorsOccured = errors != null && errors.Count > 0; response.ErrorMessage = new List <string>(); if (errors != null && errors.Count > 0) { response.ErrorMessage.AddRange(errors); } // Serializuj obiekt result = JsonConvert.SerializeObject(response); } // Serializacja nie powiodła się catch (Exception ex) { // Zaloguj wyjątek do pliku logów SaveErrorInLogFile(ex); // Wyczyść obiekt response = new GetMultimediaObject_Response(); // Wyczyść dotychczasowe błędy errors = new List <string>(); // Pobierz aktualne błędy var hierarchy = new List <Exception>(); ExceptionsHandlingHelper.HierarchizeError(ex, ref hierarchy); if (hierarchy.Count > 0) { errors.AddRange(hierarchy.Select(s => s.Message + Environment.NewLine + s.StackTrace).Distinct().AsEnumerable()); } response.ErrorsOccured = errors.Count > 0; response.ErrorMessage = new List <string>(); if (errors.Count > 0) { response.ErrorMessage.AddRange(errors); } // Ponowna serializacja result = JsonConvert.SerializeObject(response); } return(result); }
/// <summary> /// Pobiera obiekt multimedialny, który zostanie zwrócony do klienta /// </summary> /// <param name="request">Parametry, na podtswie których zostanie przeprowadzone wyszukiwanie obiektu multimedialnego</param> /// <param name="errors">Lista komunikaktów błędów - jesli wystąpiły błędy</param> /// <returns>Wyszukany obiekt multimedialny opakowany w obiekt odpowiedniego typu</returns> private static GetMultimediaObject_Response GetMultimediaObject(GetMultimediaObject_Request request, out List <string> errors) { var response = new GetMultimediaObject_Response(); errors = new List <string>(); var hierarchy = new List <Exception>(); try { if (request != null) { var selectionRequest = new MultimediaObjectSelection.MultimediaObjectsSelectionParams { Data0 = request.Data0, Data1 = request.Data1, Data2 = request.Data2, Data3 = request.Data3, ID = request.ID, RequestDate = DateTime.Now, SessionId = request.SessionId, RequestSource = (int) (System.Web.HttpContext.Current.Request.UserAgent == null ? Statistic.RequestSourceType.Desktop : Statistic.RequestSourceType.WWW), RequestIP = HttpContext.Current.Request.UserHostAddress }; using (var ctx = new AdServContext()) { var repositories = EFRepositorySet.CreateRepositorySet(ctx); try { var mos = new MultimediaObjectSelection(repositories); List <string> err; const string key = "FILESTREAM_OPTION"; var urlKey = ConfigurationManager.AppSettings[key]; var filestreamOption = false; if (urlKey != null && !string.IsNullOrEmpty(urlKey)) { bool.TryParse(urlKey, out filestreamOption); } response.File = mos.GetMultimediaObject(selectionRequest, filestreamOption, true, out err); if (err != null && err.Count > 0) { errors.AddRange(err); } } catch (Exception ex) { ExceptionsHandlingHelper.HierarchizeError(ex, ref hierarchy); if (hierarchy.Count > 0) { errors.AddRange(hierarchy.Select(s => s.Message + Environment.NewLine + s.StackTrace).Distinct().AsEnumerable()); } SaveErrorInLogFile(selectionRequest, ex); } } } else { errors.Add("Parametr requesta nie może być nullem."); } } catch (Exception ex) { ExceptionsHandlingHelper.HierarchizeError(ex, ref hierarchy); if (hierarchy.Count > 0) { errors.AddRange(hierarchy.Select(s => s.Message + Environment.NewLine + s.StackTrace).Distinct().AsEnumerable()); } SaveErrorInLogFile(ex); } return(response); }