示例#1
0
        public string GetMultimediaObject(GetMultimediaObject_Request request)
        {
            List <string> errors;
            GetMultimediaObject_Response response = GetMultimediaObject(request, out errors);
            string result = SerializeResponse(response, errors);

            return(result);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }