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)); }
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)); } }
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); }
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; }
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))); } }
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))); } }
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)); } }
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))); } }
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)); } }
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)); } }
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)); } }
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); } }
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))); } }
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); }
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)); } }
private void SetResponseOptions(BrowseRequest request, BrowseResponse response, TagsDBUser dbUser) { var httpReq = base.RequestContext.Get <IHttpRequest>(); response.SetOptions(request, httpReq.RawUrl, dbUser); }