Example #1
0
        private Ares.Tags.ITagsDBReadByLanguage GetReadInterface(TagsDBUser user, BrowseRequest request)
        {
            String lc = LanguageUtil.GetLanguageCode(request.LanguageCode, request.WebLanguage);
            int    id = user.TagsDB.TranslationsInterface.GetIdOfLanguage(lc);

            return(user.TagsDB.GetReadInterfaceByLanguage(id));
        }
Example #2
0
        public object Get(TagsByCategory request)
        {
            List <Tag> result = new List <Tag>();

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                var readIf = GetReadInterface(user, request);
                foreach (var categoryForLanguage in readIf.GetAllCategories())
                {
                    String category = DataEncoding.UnescapeDataString(request.Category);
                    if (categoryForLanguage.Name.Equals(category, StringComparison.Ordinal))
                    {
                        foreach (var tagForLanguage in readIf.GetAllTags(categoryForLanguage.Id))
                        {
                            var tag = new Tag {
                                Name = tagForLanguage.Name, Category = request.Category
                            };
                            SetResponseOptions(request, tag, user);
                            result.Add(tag);
                        }
                        break;
                    }
                }
                var response = CreateItemResponse <TagsByCategoryResponse, List <Tag> >(request, result, user);
                response.Category = DataEncoding.UnescapeDataString(request.Category);
                return(CreateHttpResponse(request, response));
            }
        }
Example #3
0
        private T CreateItemResponse <T, U>(BrowseRequest request, U inner, TagsDBUser dbUser) where T : ItemResponse <U>, new()
        {
            T t = new T();

            t.SetData(inner);
            SetResponseOptions(request, t, dbUser);
            return(t);
        }
Example #4
0
        internal void SetOptions(BrowseRequest request, String rawUrl, TagsDBUser dbUser)
        {
            LanguageCode = request.LanguageCode;
            Test         = request.Test;
            WebLanguage  = request.WebLanguage;
            int languageId = dbUser.TagsDB.TranslationsInterface.GetIdOfLanguage(LanguageUtil.GetLanguageCode(request.LanguageCode, request.WebLanguage));

            m_Languages = dbUser.TagsDB.GetReadInterfaceByLanguage(languageId).GetAllLanguages();
            m_ReqPath   = rawUrl;
        }
Example #5
0
        public object Get(AllFiles request)
        {
            List <File> result = new List <File>();

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                foreach (Ares.Tags.FileIdentification file in user.TagsDB.BrowseInterface.GetAllFiles())
                {
                    result.Add(CreateItemResponse <File, Ares.Tags.FileIdentification>(request, file, user));
                }
                return(CreateHttpResponse(request, CreateItemResponse <AllFilesResponse, List <File> >(request, result, user)));
            }
        }
Example #6
0
        public object Get(AllAlbums request)
        {
            List <Album> result = new List <Album>();

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                foreach (Ares.Tags.Album album in user.TagsDB.BrowseInterface.GetAllAlbums())
                {
                    result.Add(CreateItemResponse <Album, Ares.Tags.Album>(request, album, user));
                }
                return(CreateHttpResponse(request, CreateItemResponse <AllAlbumsResponse, List <Album> >(request, result, user)));
            }
        }
Example #7
0
 public object Get(Statistics request)
 {
     Ares.Tags.Statistics result = new Ares.Tags.Statistics();
     using (TagsDBUser user = new TagsDBUser(request.Test))
     {
         result = user.TagsDB.BrowseInterface.GetStatistics();
         var response = CreateItemResponse <StatisticsResponse, Ares.Tags.Statistics>(request, result, user);
         UploadStatistics uploadStats; DownloadStatistics downloadStats;
         StatisticsDB.GetStatisticsDB(request.Test).GetStatistics(out uploadStats, out downloadStats);
         response.UploadStats   = uploadStats;
         response.DownloadStats = downloadStats;
         return(CreateHttpResponse(request, response));
     }
 }
Example #8
0
        public object Get(AllCategories request)
        {
            List <Category> result = new List <Category>();

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                var readIf = GetReadInterface(user, request);
                foreach (var categoryForLanguage in readIf.GetAllCategories())
                {
                    result.Add(CreateItemResponse <Category, String>(request, categoryForLanguage.Name, user));
                }
                return(CreateHttpResponse(request, CreateItemResponse <AllCategoriesResponse, List <Category> >(request, result, user)));
            }
        }
Example #9
0
        public object Get(Artists request)
        {
            List <Album> result = new List <Album>();

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                foreach (Ares.Tags.Album album in user.TagsDB.BrowseInterface.GetAlbumsByArtist(DataEncoding.UnescapeDataString(request.Name)))
                {
                    result.Add(CreateItemResponse <Album, Ares.Tags.Album>(request, album, user));
                }
                var response = CreateItemResponse <ArtistsResponse, List <Album> >(request, result, user);
                response.Artist = DataEncoding.UnescapeDataString(request.Name);
                return(CreateHttpResponse(request, response));
            }
        }
Example #10
0
        public object Get(FilesByTag request)
        {
            List <File> result = new List <File>();

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                long tagId = GetReadInterface(user, request).FindTag(DataEncoding.UnescapeDataString(request.Category), DataEncoding.UnescapeDataString(request.Tag));
                foreach (var file in user.TagsDB.ReadInterface.GetFilesForTag(tagId))
                {
                    result.Add(CreateItemResponse <File, Ares.Tags.FileIdentification>(request, file, user));
                }
                var response = CreateItemResponse <FilesByTagResponse, List <File> >(request, result, user);
                response.Tag = DataEncoding.UnescapeDataString(request.Tag);
                return(CreateHttpResponse(request, response));
            }
        }
Example #11
0
        public object Get(Albums request)
        {
            List <File> result = new List <File>();

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                foreach (Ares.Tags.FileIdentification file in user.TagsDB.BrowseInterface.GetFilesByAlbum(DataEncoding.UnescapeDataString(request.Artist), DataEncoding.UnescapeDataString(request.Name)))
                {
                    result.Add(CreateItemResponse <File, Ares.Tags.FileIdentification>(request, file, user));
                }
                var response = CreateItemResponse <AlbumsResponse, List <File> >(request, result, user);
                response.Album  = DataEncoding.UnescapeDataString(request.Name);
                response.Artist = DataEncoding.UnescapeDataString(request.Artist);
                return(CreateHttpResponse(request, response));
            }
        }
Example #12
0
 public object Post(Upload request)
 {
     using (System.IO.StringWriter writer = new System.IO.StringWriter())
     {
         UploadResponse response = new UploadResponse();
         try
         {
             // try several times to prevent possible problems with concurrent modifications
             int       retryCount  = 0;
             const int MAX_RETRIES = 5;
             while (true)
             {
                 try
                 {
                     int nrOfNewFiles, nrOfNewTags;
                     using (TagsDBUser user = new TagsDBUser(request.Test))
                     {
                         user.TagsDB.GlobalDBInterface.ImportDataFromClient(request.TagsData, request.User, writer, out nrOfNewFiles, out nrOfNewTags);
                     }
                     StatisticsDB.GetStatisticsDB(request.Test).InsertUpload(nrOfNewFiles, nrOfNewTags);
                     response.Status       = 0;
                     response.ErrorMessage = String.Empty;
                     break;
                 }
                 catch (Exception)
                 {
                     if (++retryCount >= MAX_RETRIES)
                     {
                         throw;
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             response.Status       = 1;
             response.ErrorMessage = ex.Message;
         }
         String log = writer.ToString();
         if (!request.IncludeLog)
         {
             log = String.Empty;
         }
         response.Log = log;
         return(response);
     }
 }
Example #13
0
        public object Get(AllTags request)
        {
            List <Tag> result = new List <Tag>();

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                var readIf = GetReadInterface(user, request);
                foreach (var tagForLanguage in readIf.GetAllTags())
                {
                    var tag = new Tag {
                        Name = tagForLanguage.Name, Category = tagForLanguage.Category
                    };
                    SetResponseOptions(request, tag, user);
                    result.Add(tag);
                }
                return(CreateHttpResponse(request, CreateItemResponse <AllTagsResponse, List <Tag> >(request, result, user)));
            }
        }
Example #14
0
        public object Post(Download request)
        {
            DownloadResponse response = new DownloadResponse();

            try
            {
                // try several times to prevent possible problems with concurrent modifications
                int       retryCount  = 0;
                const int MAX_RETRIES = 5;
                while (true)
                {
                    try
                    {
                        int nrOfFoundFiles;
                        using (TagsDBUser user = new TagsDBUser(request.Test))
                        {
                            response.TagsData       = user.TagsDB.GlobalDBInterface.ExportDataForFiles(request.FileIdentification, out nrOfFoundFiles);
                            response.NrOfFoundFiles = nrOfFoundFiles;
                        }
                        int nrOfRequestedFiles = request.FileIdentification != null ? request.FileIdentification.Count : 0;
                        StatisticsDB.GetStatisticsDB(request.Test).InsertDownload(nrOfRequestedFiles, nrOfFoundFiles);
                        response.Status       = 0;
                        response.ErrorMessage = String.Empty;
                        break;
                    }
                    catch (Exception)
                    {
                        if (++retryCount >= MAX_RETRIES)
                        {
                            throw;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                response.Status       = 1;
                response.ErrorMessage = ex.Message;
                response.TagsData     = new Ares.Tags.TagsExportedData <Ares.Tags.FileIdentification>();
            }
            return(response);
        }
Example #15
0
        public object Get(TagsByFile request)
        {
            List <Tag> result = new List <Tag>();
            Int64      fileId = Int64.Parse(request.Id);

            using (TagsDBUser user = new TagsDBUser(request.Test))
            {
                var readIf = GetReadInterface(user, request);
                foreach (var tagForLanguage in readIf.GetTagsForFile(fileId))
                {
                    var tag = new Tag {
                        Name = tagForLanguage.Name, Category = tagForLanguage.Category
                    };
                    SetResponseOptions(request, tag, user);
                    result.Add(tag);
                }
                var response = CreateItemResponse <TagsByFileResponse, List <Tag> >(request, result, user);
                response.File = DataEncoding.UnescapeDataString(request.Name);
                return(CreateHttpResponse(request, response));
            }
        }
Example #16
0
        private void SetResponseOptions(BrowseRequest request, BrowseResponse response, TagsDBUser dbUser)
        {
            var httpReq = base.RequestContext.Get <IHttpRequest>();

            response.SetOptions(request, httpReq.RawUrl, dbUser);
        }