private IEnumerable <Post> FilterAndSortPosts(PostFilter filter, Func <Post, bool> predicate) { IEnumerable <Post> filteredSortedCollection; // Параметры сортировки string sortField = filter.SortField ?? "Default"; string order = filter.SortOrder ?? "Asc"; // Компараторы сортировки по возрастанию или по убыванию IComparer <string> stringComparer = Comparer <string> .Create((x, y) => order.Equals("Asc")?(x ?? "").CompareTo(y ?? "") : (y ?? "").CompareTo(x ?? "")); IComparer <double> doubleComparer = Comparer <double> .Create((x, y) => order.Equals("Asc")?x.CompareTo(y) : y.CompareTo(x)); IComparer <int> intComparer = Comparer <int> .Create((x, y) => order.Equals("Asc")?x.CompareTo(y) : y.CompareTo(x)); switch (sortField) { case "DepartmentCode": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Department.Code, intComparer); break; case "DepartmentName": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Department.DepartmentName, stringComparer); break; case "PostTitle": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Title, stringComparer); break; case "NumberOfUnits": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.NumberOfUnits, intComparer); break; case "Salary": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Salary, doubleComparer); break; case "Premium": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Premium, doubleComparer); break; case "TotalSalary": filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => (p.Salary + p.Premium) * p.NumberOfUnits, doubleComparer); break; default: filteredSortedCollection = Database.Posts.Get(predicate).OrderBy(p => p.Title); break; } return(filteredSortedCollection); }
public static Task <BaseResponse <Post> > GetQuestions(PostFilter postFilter, PostSortBy sort, int page, string tag = null) { string url = "questions{0}?order=desc&filter={1}"; if (tag != null) { url += "&tagged=" + HttpUtility.UrlEncode(tag); } string postFilterStr = ""; if (postFilter != PostFilter.normal) { string val = postFilter.ToString(); if (postFilter == PostFilter.noanswers) { val = "no-answers"; } postFilterStr = "/" + val; } url = string.Format(url, postFilterStr, questionsListFilter); return(GetResponse <Post>(url, psort: sort, page: page)); }
private string GetWhereClause(PostFilter filter) { if (filter == null) { return(""); } List <string> conditions = new List <string>(); if (filter.PostId.HasValue) { conditions.Add("P.[PostId] = " + filter.PostId.Value); } if (filter.StartTime.HasValue) { conditions.Add("P.[Timestamp] >= '" + filter.StartTime.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"); } if (filter.EndTime.HasValue) { conditions.Add("P.[Timestamp] <= '" + filter.EndTime.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"); } if (!conditions.Any()) { return(""); } return(" WHERE " + string.Join(" AND ", conditions)); }
public override bool StepExecute(int operatorUserID, string param, ref long offset, ref int totalCount, ref int finishedCount, out string title, out bool isLastStep) { StringList paramData = StringList.Parse(param); PostFilter filter = PostFilter.Parse(paramData[0]); AuthUser operatorUser = UserBO.Instance.GetAuthUser(operatorUserID); int stepCount; if (PostBOV5.Instance.ApproveSearchPosts(operatorUser, filter, stepApproveCount, out stepCount)) // .DeleteDoingsBySearch(filter, 200); { finishedCount += stepCount; isLastStep = stepCount < stepApproveCount; title = "正在审核回复,总数 " + totalCount + ",已审核 " + finishedCount; return(true); } else { isLastStep = false; title = "发生错误"; return(false); } }
public DeviceSettings(RFIDReader rfid) { _Parser = new ConfigParser(); _ReaderAPI = rfid; setDefaults(); //Construct access/post filter with no limit _Range = new RssiRangeFilter(); _AccessFilter = new AccessFilter(); _AccessFilter.UseRSSIRangeFilter = true; _AccessFilter.RssiRangeFilter = _Range; _PostFilter = new PostFilter(); _PostFilter.UseRSSIRangeFilter = true; _PostFilter.RssiRangeFilter = _Range; //Will trigger inventory with trigger button _TriggerInfo = new TriggerInfo(); _TriggerInfo.StartTrigger.Type = START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD; _TriggerInfo.StartTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED; _TriggerInfo.StopTrigger.Type = STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT; _TriggerInfo.StopTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED; //Read user membank sequence _Op = new TagAccess.Sequence.Operation(); _Op.AccessOperationCode = ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ; _Op.ReadAccessParams.MemoryBank = MEMORY_BANK.MEMORY_BANK_USER; _Op.ReadAccessParams.ByteCount = 4; _Op.ReadAccessParams.ByteOffset = 0; _Op.ReadAccessParams.AccessPassword = 0; }
public override void SearchMCS(bool shouldMatchBonds) { IList <IReadOnlyList <int> > mappings = null; try { if (source.Atoms.Count >= target.Atoms.Count) { mappings = MCSPlus.GetOverlaps(source, target, shouldMatchBonds); } else { flagExchange = true; mappings = MCSPlus.GetOverlaps(target, source, shouldMatchBonds); } PostFilter.Filter(mappings); SetAllMapping(); SetAllAtomMapping(); SetFirstMapping(); SetFirstAtomMapping(); } catch (CDKException) { mappings = null; } }
public void Config() { List <ArticleDestinationItem> listArticleDestination = new List <ArticleDestinationItem>(); List <string> listTopics = new List <string>() { "5d247a04eff1030d7c5209a3" }; listArticleDestination.Add(new ArticleDestinationItem() { Id = "5d247a04eff1030d7c520a2k4", Name = "articleDestinationItemName" }); Author author = new Author() { Id = "5d247a04eff1030d7c520a287", DisplayName = "authorName", ProfileImage = "profileImage" }; post = new Post() { Id = "5d247a04eff1030d7c5209a1", AuthorId = "5d247a04eff1030d7c520a2m32", CommentCount = 0, Content = "content", IsActive = true, IsPublic = true, CoverImage = "coverImage", LikeCount = 0, PostType = "article", Title = "title", liked = false, PubDate = DateTime.Parse("2019-04-05"), Author = author }; article = new Article() { Id = "5d247a04eff1030d7c5209a0", PostId = "5d247a04eff1030d7c5209a1", Destinations = listArticleDestination, Post = post, Topics = listTopics }; postFilter = new PostFilter() { LocationId = "5d247a04eff1030d7c520123", Search = "ha noi", TimePeriod = "Tuan qua", Topics = listTopics }; mockArticleService = new Mock <IArticleService>(); mockPostService = new Mock <IPostService>(); }
BaseResponse <Post> IPosts.GetAllPosts(PostFilter filters) { var apiParams = filters.GetQueryParams(); var url = $"{_baseApiUrl}/posts?key={_apiKey}&{apiParams}"; var response = _httpClient.GetAsync(url).Result.Content.ReadAsStringAsync().Result; var apiResult = response.DeserializeJson <Data <Post> >().ValidateApiResponse(); return(apiResult); }
public Uri GetPostsPageUri(PostFilter filter = null) { string endpoint = "api/posts"; NameValueCollection parameters = null; if (filter is not null) { parameters = new() {
public ChildData GetRandomPasta(PostFilter postFilter = PostFilter.TOP) { return(GetPosts(postFilter, 100).Data.Children .AsEnumerable() .Select(c => c.Data) .Where(d => d.Selftext.Length > 0 && d.Selftext.Length <= CharacterLimit) .RandomShuffle() .FirstOrDefault()); }
public IEnumerable <Article> GetRecommendArticles(PostFilter postFilter, UserInfo userInfo, int page) { // TODO: Get UserInfo GetUserTopics(userInfo); GetFollowings(userInfo); // TODO: Query Db return(_articleRepository.GetRecommendArticles(postFilter, userInfo, page)); }
private static QueryContainer AddListsIfNotEmpty(this QueryContainer query, PostFilter postFilter) { if (postFilter.Authors != null && postFilter.Authors.Count() > 0) { return(query && Query <Post> .Terms(t => t.Field(f => f.Lists).Terms(postFilter.Lists))); } return(query); }
public static QueryContainer CreateQuery(this PostFilter filter) { return(Query <Post> .MatchAll() .AddTextualFilterIfNotEmpty(filter) .AddNetworkIfNotEmpty(filter) .AddAuthorsIfNotEmpty(filter) .AddListsIfNotEmpty(filter) .AddDateIfAvailable(filter)); }
public IEnumerable <PostDto> GetPosts(PostFilter filter = null) { IQueryable <Post> postQuery = _context.Posts; postQuery = ApplyFiltering(postQuery, filter); var posts = postQuery.Take(10).ToList(); return(Mapper.Map <IEnumerable <PostDto> >(posts)); }
/// <summary> /// Asynchronously gets a list of posts /// </summary> /// <param name="filter">A Post Filter</param> /// <returns>Post[]</returns> public async Task <Post[]> GetPostsAsync(PostFilter filter) { return(await Task.Factory.FromAsync ( WordPressService.BeginGetPosts(WordPressSiteConfig.BlogId, WordPressSiteConfig.Username, WordPressSiteConfig.Password, filter), WordPressService.EndGetPosts )); }
public void Start() { try { string info = "tatus:start"; LogService.Info(TAG, info); if (rfidReader == null || rfidReader.IsConnected == false) { rfidReader.Connect(); IsConnect = rfidReader.IsConnected; // 1、阅读器事件配置 rfidReader.Events.NotifyInventoryStartEvent = true; rfidReader.Events.NotifyAccessStartEvent = true; rfidReader.Events.NotifyAccessStopEvent = true; rfidReader.Events.NotifyInventoryStopEvent = true; rfidReader.Events.NotifyAntennaEvent = true; rfidReader.Events.NotifyBufferFullWarningEvent = true; rfidReader.Events.NotifyBufferFullEvent = true; rfidReader.Events.NotifyGPIEvent = true; rfidReader.Events.NotifyReaderDisconnectEvent = true; rfidReader.Events.NotifyReaderExceptionEvent = true; // 不通知tag读到事件,改由扫描按钮松开时,获取读到的标签信息 rfidReader.Events.AttachTagDataWithReadEvent = false; // 注册扫描枪状态变化事件 rfidReader.Events.StatusNotify += new Events.StatusNotifyHandler(Events_StatusNotify); // 2、rssi值过滤配置,此处取最大最小值,因此没有过滤作用 PostFilter posFilter = new PostFilter(); posFilter.UseRSSIRangeFilter = true; posFilter.RssiRangeFilter.MatchRange = MATCH_RANGE.WITHIN_RANGE; posFilter.RssiRangeFilter.PeakRSSILowerLimit = -128; posFilter.RssiRangeFilter.PeakRSSIUpperLimit = 127; // 3、扫描按钮信息配置 TriggerInfo triggerInfo = new TriggerInfo(); // 此参数配置为0,扫描枪在接收到扫描按钮松开事件后,停止扫描 triggerInfo.TagReportTrigger = 0; triggerInfo.StartTrigger.Type = START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD; triggerInfo.StartTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED; // 当扫描按钮松开后,经过一段时间出发扫描枪停止扫描事件(不过这里超时时间设为0,没有起到延迟触发事件的效果) triggerInfo.StopTrigger.Type = STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT; triggerInfo.StopTrigger.Handheld.Timeout = 0; triggerInfo.StopTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED; // 4、执行1、2、3的配置 rfidReader.Actions.Inventory.Perform(posFilter, triggerInfo, null); } } catch (Exception ex) { Message = "无法正常打开阅读器"; LogService.Error(TAG, ex.Message); } }
static void Main(string[] args) { // блоги с фильтром Console.WriteLine(); Console.WriteLine($"Все блоги от авторов с именем Ni* с кол-вом постов > 30 :"); var blogSvc = new BlogService(); var filter = new BlogFilter() { UserName = "******", PostCountGreaterThen = 20 }; var blogs = blogSvc.GetBlogList(filter); PrintBlogs(blogs); Console.WriteLine(); Console.WriteLine($"Блоги в которых были посты за последнюю неделю :"); filter = new BlogFilter() { HasPostLaterThen = DateTime.Now.AddDays(-7) }; var count = blogSvc.GetBlogCount(filter); Console.WriteLine($"Количество : {count}"); // посты с фильтром и сортироовкой var postSvc = new PostService(); Console.WriteLine(); Console.WriteLine($"Все посты в блоге №1, с 2015, сортировка по дате: "); var postFilter = new PostFilter() { BlogId = 1, PostDateLaterThen = new DateTime(2015, 1, 1) }; var posts = postSvc.GetBlogPosts(postFilter); PrintPosts(posts); // получение статистики по блогам кастомным запросом Console.WriteLine(); Console.WriteLine("Статистика по постам #1,2,3:"); var stastFilter = new List <int>() { 1, 2, 3 }; var stats = blogSvc.GetBlogStats(stastFilter) .GetAwaiter().GetResult(); PrintStats(stats); Console.ReadKey(); }
BaseResponse <Post> IPosts.GetAllPosts(PostFilter filters) { var url = ApiUrlBuilder.Initialize(_apiKey) .ForClient(ClientType.Posts) .WithFilter(filters) .GetApiUrl(); var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Post> >().ValidateApiResponse(); return(response); }
// Получение списка должностей по фильтру public virtual IEnumerable <PostDTO> Get(PostFilter filter) { Func <Post, bool> predicate = CreatePredicate(filter); IEnumerable <Post> filteredSortedCollection = FilterAndSortPosts(filter, predicate); InitializeMapper(); IEnumerable <PostDTO> collection = Mapper.Map <IEnumerable <Post>, IEnumerable <PostDTO> >(filteredSortedCollection); return(collection); }
public void Config() { virtualTripItem = new VirtualTripItem() { Icon = "icon", FormattedAddress = "Ha Long", Image = "image", Latitude = 12, LocationId = "5d07d847a2c5f845707dc6x4", Longitude = 15, Name = "item1", Note = "" }; List <VirtualTripItem> virtualTripItems = new List <VirtualTripItem>(); virtualTripItems.Add(virtualTripItem); post = new Post() { Id = "5d07d847a2c5f845707dc69a", Content = "<p>Post Test</p>", AuthorId = "5d0b2b0b1c9d440000d8e9a1", CommentCount = 0, IsActive = true, IsPublic = true, LikeCount = 0, CoverImage = @"https://storage.googleapis.com/trip-sharing-final-image-bucket/image-201907131748509069-dy8beuyj1kfgwx98.png", PostType = "article", PubDate = DateTime.Now, liked = false, Title = "Post Test" }; List <string> listTopics = new List <string>() { "5d247a04eff1030d7c5209a3" }; postFilter = new PostFilter() { LocationId = "5sd239asdd8fass7", Search = "ha noi", TimePeriod = "Tuan qua", Topics = listTopics }; virtualTrip = new VirtualTrip() { Id = "a6sfa7fafaf65fa58fa7f", PostId = "asf7f6af9sfafaf7af0aaf", Post = post, Items = virtualTripItems }; mockVirtualTripService = new Mock <IVirtualTripService>(); mockPostService = new Mock <IPostService>(); }
public override void Redo() { undostate = true; if (redoStack.Count != 0) { PostFilter redoFilter = redoStack.Pop(); undoStack.Push(redoFilter); redoFilter.Apply(); } undostate = false; }
public static string GetString(this PostFilter postFilter) { string value; if (mapping.TryGetValue(postFilter, out value)) { return(value); } return(null); }
public IEnumerable <Post> Browse(PostFilter filter) { IEnumerable <Post> posts = _postRepository.Browse(filter); foreach (Post post in posts.Where(p => p.Image != null)) { byte[] imageData = _fileRepository.Get(post.Image.FileName); post.Image.Data = imageData; } return(posts); }
public ActionResult Index(PostFilter filter, string filterAsJsonString, int page = 1) { if (filterAsJsonString != null) { filter = System.Web.Helpers.Json.Decode <PostFilter>(filterAsJsonString); } IEnumerable <PostDTO> pDto = (_postService as PostService).Get(filter); // Filter int totalNumberOfUnits = pDto.Sum(p => p.NumberOfUnits).Value; double totalSalary = pDto.Sum(p => p.TotalSalary); pDto = _postService.GetPage(pDto, page); // Paging Mapper.Initialize(cfg => { cfg.CreateMap <PostDTO, PostViewModel>() .ForMember(p => p.Employees, opt => opt.Ignore()); cfg.CreateMap <DepartmentDTO, DepartmentViewModel>() .ForMember(d => d.Posts, opt => opt.Ignore()); }); IEnumerable <PostViewModel> posts = Mapper.Map <IEnumerable <PostDTO>, IEnumerable <PostViewModel> >(pDto); PostListViewModel model = new PostListViewModel { Posts = posts, Filter = filter, PageInfo = _postService.PageInfo, NumberOfUnitsOnPage = pDto.Sum(p => p.NumberOfUnits).Value, SalaryOnPage = pDto.Sum(p => p.TotalSalary), TotalNumberOfUnits = totalNumberOfUnits, TotalSalary = totalSalary }; if (Request.Headers["X-Requested-With"] == "XMLHttpRequest") { _logger.Info("Executed async request"); var transformModel = new { Posts = model.Posts.Select(p => new { p.Id, DepartmentCode = p.Department.Code, DepartmentName = p.Department.DepartmentName, p.Title, p.NumberOfUnits, p.Salary, p.Premium, p.TotalSalary }).ToArray(), model.Filter, model.PageInfo, model.NumberOfUnitsOnPage, model.SalaryOnPage, model.TotalNumberOfUnits, model.TotalSalary }; return(Json(transformModel, JsonRequestBehavior.AllowGet)); } _logger.Info("Executed sync request"); return(View("Index", model)); }
BaseResponse <Post> IPosts.GetRevisionsByIds(List <string> ids, PostFilter filters) { var url = ApiUrlBuilder.Initialize(_apiKey) .ForClient(ClientType.Posts) .WithFilter(filters) .WithIds(ids, "revisions") .GetApiUrl(); var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Post> >().ValidateApiResponse(); return(response); }
public Posts GetPosts(PostFilter postFilter = PostFilter.TOP, int limit = 100) { var request = new RestRequest("r/copypasta/" + postFilter.GetString() + ".json", Method.GET); request.AddQueryParameter("limit", limit.ToString()); request.AddQueryParameter("t", "all"); var response = client.Execute(request); return(Posts.FromJson(response.Content)); }
public IEnumerable<Post> Find(int page, int size, PostFilter filter = null) { var builder = new SqlBuilder(); var selector = builder.AddTemplate(PostQuery.GetManyPosts()); if(filter != null) { builder.Where(SqlFilterGenerator.GenerateSql(filter)); } return this.connection.Query<Post>(PostQuery.GetManyPosts(), new { PageIndex = page - 1, PageSize = size }, this.transaction); }
public IActionResult GetRecommendArticles([FromBody] PostFilter postFilter, [FromQuery] int page) { UserInfo userInfo = new UserInfo(); var identity = User.Identity as ClaimsIdentity; var userId = identity.FindFirst("user_id").Value; userInfo.Id = userId; IEnumerable <Article> articles = _articleService.GetRecommendArticles(postFilter, userInfo, page); return(Ok(articles)); }
private void ApprovedSearchResult() { PostFilter filter = PostForm;//TopicFilter.GetFromFilter("filter"); StringList param = new StringList(); param.Add(filter.ToString()); if (TaskManager.BeginTask(MyUserID, new ApprovePostTask(), param.ToString())) { } }
BaseResponse <Post> IPosts.GetRevisionsByIds(List <string> ids, PostFilter filters) { var apiParams = filters.GetQueryParams(); var url = $"{_baseApiUrl}/posts/"; var idsToEncode = string.Join(";", ids.ToArray()); url = url + $"{HttpUtility.UrlEncode(idsToEncode)}/revisions" + $"?key={_apiKey}&{apiParams}"; var response = _httpClient.GetAsync(url).Result.Content.ReadAsStringAsync().Result; var apiResult = response.DeserializeJson <Data <Post> >().ValidateApiResponse(); return(apiResult); }
private void accessFilterButton_Click(object sender, EventArgs e) { string exceptionMsg = "TagPatternA BitOffset:"; try { if (m_AppForm.m_ReaderAPI.IsConnected && userFilter_CB.Checked) { if (null == m_PostFilter) { m_PostFilter = new Symbol.RFID3.PostFilter(); } m_PostFilter.MatchPattern = (MATCH_PATTERN)matchPattern_CB.SelectedIndex; /* * Tag Pattern A */ m_PostFilter.TagPatternA.MemoryBank = (MEMORY_BANK)memBank_CB1.SelectedIndex; m_PostFilter.TagPatternA.BitOffset = ushort.Parse(offset_TB1.Text); exceptionMsg = "TagPatternA Mask:"; ushort maskLengthA = (ushort)(tagMask_TB1.Text.Length / 2); byte[] filterMaskA = new byte[maskLengthA]; for (int index = 0; index < maskLengthA; index++) { filterMaskA[index] = byte.Parse(tagMask_TB1.Text.Substring(index * 2, 2), System.Globalization.NumberStyles.HexNumber); } m_PostFilter.TagPatternA.TagMask = filterMaskA; m_PostFilter.TagPatternA.TagMaskBitCount = (uint)maskLengthA * 8; exceptionMsg = "TagPatternA Pattern:"; ushort dataLengthA = (ushort)(MembankData_TB1.Text.Length / 2); byte[] memoryBankDataA = new byte[dataLengthA]; for (int index = 0; index < dataLengthA; index++) { memoryBankDataA[index] = byte.Parse(MembankData_TB1.Text.Substring(index * 2, 2), System.Globalization.NumberStyles.HexNumber); } m_PostFilter.TagPatternA.TagPattern = memoryBankDataA; m_PostFilter.TagPatternA.TagPatternBitCount = (uint)dataLengthA * 8; if (m_PostFilter.MatchPattern != MATCH_PATTERN.A) { /* * Tag Pattern B */ exceptionMsg = "TagPatternB BitOffset:"; m_PostFilter.TagPatternB.MemoryBank = (MEMORY_BANK)memBank_CB2.SelectedIndex; m_PostFilter.TagPatternB.BitOffset = ushort.Parse(offset_TB2.Text); ushort maskLengthB = (ushort)(tagMask_TB2.Text.Length / 2); byte[] filterMaskB = new byte[maskLengthB]; exceptionMsg = "TagPatternB Mask:"; for (int index = 0; index < maskLengthB; index++) { filterMaskB[index] = byte.Parse(tagMask_TB2.Text.Substring(index * 2, 2), System.Globalization.NumberStyles.HexNumber); } m_PostFilter.TagPatternB.TagMask = filterMaskB; m_PostFilter.TagPatternB.TagMaskBitCount = (uint)maskLengthB * 8; ushort dataLengthB = (ushort)(MembankData_TB2.Text.Length / 2); byte[] memoryBankDataB = new byte[dataLengthB]; exceptionMsg = "TagPatternB Pattern:"; for (int index = 0; index < dataLengthB; index++) { memoryBankDataB[index] = byte.Parse(MembankData_TB2.Text.Substring(index * 2, 2), System.Globalization.NumberStyles.HexNumber); } m_PostFilter.TagPatternB.TagPattern = memoryBankDataB; m_PostFilter.TagPatternB.TagPatternBitCount = (uint)dataLengthB * 8; } } else if (!userFilter_CB.Checked) { m_PostFilter = null; } this.Close(); } catch (Exception ex) { this.m_AppForm.notifyUser(exceptionMsg + ex.Message, "Access Filter"); } }
/// <summary> /// Asynchronously retrieves submission posts. /// </summary> /// <remarks> /// See: http://www.tumblr.com/docs/en/api/v2#blog-submissions /// </remarks> /// <param name="blogName"> /// The name of the blog for which to retrieve submission posts. /// </param> /// <param name="startIndex"> /// The post number to start at. Pass 0 to start from the first post. /// </param> /// <param name="filter"> /// A <see cref="PostFilter"/> to apply. /// </param> /// <returns> /// A <see cref="Task{T}"/> that can be used to track the operation. If the task succeeds, the <see cref="Task{T}.Result"/> will /// carry an array of posts. Otherwise <see cref="Task.Exception"/> will carry a <see cref="TumblrException"/> /// representing the error occurred during the call. /// </returns> /// <exception cref="ObjectDisposedException"> /// The object has been disposed. /// </exception> /// <exception cref="ArgumentNullException"> /// <paramref name="blogName"/> is <b>null</b>. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="blogName"/> is empty. /// </exception> /// <exception cref="ArgumentOutOfRangeException"> /// <paramref name="startIndex"/> is less than 0. /// </exception> /// <exception cref="InvalidOperationException"> /// This <see cref="TumblrClient"/> instance does not have an OAuth token specified. /// </exception> public Task<BasePost[]> GetSubmissionPostsAsync(string blogName, long startIndex = 0, PostFilter filter = PostFilter.Html) { if (disposed) throw new ObjectDisposedException("TumblrClient"); if (blogName == null) throw new ArgumentNullException("blogName"); if (blogName.Length == 0) throw new ArgumentException("Blog name cannot be empty.", "blogName"); if (startIndex < 0) throw new ArgumentOutOfRangeException("startIndex", "startIndex must be greater or equal to zero."); if (OAuthToken == null) throw new InvalidOperationException("GetSubmissionPostsAsync method requires an OAuth token to be specified."); MethodParameterSet parameters = new MethodParameterSet(); parameters.Add("offset", startIndex); parameters.Add("filter", filter.ToString().ToLowerInvariant(), "html"); return CallApiMethodAsync<PostCollection, BasePost[]>( new BlogMethod(blogName, "posts/submission", OAuthToken, HttpMethod.Get, parameters), r => r.Posts, CancellationToken.None); }
/// <summary> /// Asynchronously retrieves published posts from a blog. /// </summary> /// <remarks> /// See: http://www.tumblr.com/docs/en/api/v2#posts /// </remarks> /// <param name="blogName"> /// The name of the blog. /// </param> /// <param name="startIndex"> /// The offset at which to start retrieving the posts. Use 0 to start retrieving from the latest post. /// </param> /// <param name="count"> /// The number of posts to retrieve. Must be between 1 and 20. /// </param> /// <param name="type"> /// The <see cref="PostType"/> to retrieve. /// </param> /// <param name="includeReblogInfo"> /// Whether or not to include reblog info with the posts. /// </param> /// <param name="includeNotesInfo"> /// Whether or not to include notes info with the posts. /// </param> /// <param name="filter"> /// A <see cref="PostFilter"/> to apply. /// </param> /// <param name="tag"> /// A tag to filter by. /// </param> /// <returns> /// A <see cref="Task{T}"/> that can be used to track the operation. If the task succeeds, the <see cref="Task{T}.Result"/> will /// carry a <see cref="Posts"/> instance. Otherwise <see cref="Task.Exception"/> will carry a <see cref="TumblrException"/> /// representing the error occurred during the call. /// </returns> /// <exception cref="ObjectDisposedException"> /// The object has been disposed. /// </exception> /// <exception cref="ArgumentNullException"> /// <paramref name="blogName"/> is <b>null</b>. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="blogName"/> is empty. /// </exception> /// <exception cref="ArgumentOutOfRangeException"> /// <list type="bullet"> /// <item> /// <description> /// <paramref name="startIndex"/> is less than 0. /// </description> /// </item> /// <item> /// <description> /// <paramref name="count"/> is less than 1 or greater than 20. /// </description> /// </item> /// </list> /// </exception> public Task<Posts> GetPostsAsync(string blogName, long startIndex = 0, int count = 20, PostType type = PostType.All, bool includeReblogInfo = false, bool includeNotesInfo = false, PostFilter filter = PostFilter.Html, string tag = null) { if (disposed) throw new ObjectDisposedException("TumblrClient"); if (blogName == null) throw new ArgumentNullException("blogName"); if (blogName.Length == 0) throw new ArgumentException("Blog name cannot be empty.", "blogName"); if (startIndex < 0) throw new ArgumentOutOfRangeException("startIndex", "startIndex must be greater or equal to zero."); if (count < 1 || count > 20) throw new ArgumentOutOfRangeException("count", "count must be between 1 and 20."); string methodName = null; switch (type) { case PostType.Text: methodName = "posts/text"; break; case PostType.Quote: methodName = "posts/quote"; break; case PostType.Link: methodName = "posts/link"; break; case PostType.Answer: methodName = "posts/answer"; break; case PostType.Video: methodName = "posts/video"; break; case PostType.Audio: methodName = "posts/audio"; break; case PostType.Photo: methodName = "posts/photo"; break; case PostType.Chat: methodName = "posts/chat"; break; case PostType.All: default: methodName = "posts"; break; } MethodParameterSet parameters = new MethodParameterSet(); parameters.Add("api_key", apiKey); parameters.Add("offset", startIndex, 0); parameters.Add("limit", count, 0); parameters.Add("reblog_info", includeReblogInfo, false); parameters.Add("notes_info", includeNotesInfo, false); parameters.Add("filter", filter.ToString().ToLowerInvariant(), "html"); parameters.Add("tag", tag); return CallApiMethodAsync<Posts>( new BlogMethod(blogName, methodName, null, HttpMethod.Get, parameters), CancellationToken.None); }
/// <summary> /// Asynchronously retrieves posts that have been tagged with a specific <paramref name="tag"/>. /// </summary> /// <remarks> /// See: http://www.tumblr.com/docs/en/api/v2#m-up-tagged /// </remarks> /// <param name="tag"> /// The tag on the posts to retrieve. /// </param> /// <param name="before"> /// The timestamp of when to retrieve posts before. /// </param> /// <param name="count"> /// The number of posts to retrieve. /// </param> /// <param name="filter"> /// A <see cref="PostFilter"/>. /// </param> /// <returns> /// A <see cref="Task{T}"/> that can be used to track the operation. If the task succeeds, the <see cref="Task{T}.Result"/> will /// carry an array of posts. Otherwise <see cref="Task.Exception"/> will carry a <see cref="TumblrException"/> /// representing the error occurred during the call. /// </returns> /// <exception cref="ObjectDisposedException"> /// The object has been disposed. /// </exception> /// <exception cref="ArgumentNullException"> /// <paramref name="tag"/> is <b>null</b>. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="tag"/> is empty. /// </exception> /// <exception cref="InvalidOperationException"> /// This <see cref="TumblrClient"/> instance does not have an OAuth token specified. /// </exception> /// <exception cref="ArgumentOutOfRangeException"> /// <paramref name="count"/> is less than 1 or greater than 20. /// </exception> public Task<BasePost[]> GetTaggedPostsAsync(string tag, DateTime? before = null, int count = 20, PostFilter filter = PostFilter.Html) { if (disposed) throw new ObjectDisposedException("TumblrClient"); if (tag == null) throw new ArgumentNullException("tag"); if (tag.Length == 0) throw new ArgumentException("Tag cannot be empty.", "tag"); if (count < 1 || count > 20) throw new ArgumentOutOfRangeException("count", "count must be between 1 and 20."); MethodParameterSet parameters = new MethodParameterSet(); parameters.Add("api_key", apiKey); parameters.Add("tag", tag); parameters.Add("before", before.HasValue ? DateTimeHelper.ToTimestamp(before.Value).ToString() : null, null); parameters.Add("limit", count, 0); parameters.Add("filter", filter.ToString().ToLowerInvariant(), "html"); return CallApiMethodAsync<BasePost[]>( new ApiMethod("https://api.tumblr.com/v2/tagged", OAuthToken, HttpMethod.Get, parameters), CancellationToken.None, new JsonConverter[] { new PostArrayConverter() }); }
private string BuilderSearchPostCondition(PostFilter filter, IEnumerable<Guid> excludeRoleIDs, SqlQuery query, bool startWithWhere) { SqlConditionBuilder condition; if (startWithWhere) condition = new SqlConditionBuilder(SqlConditionStart.Where); else condition = new SqlConditionBuilder(SqlConditionStart.None); condition += (filter.ForumID == null ? "" : ("AND [ForumID] = @ForumID ")); condition += "AND PostType <> 1 "; condition += (filter.UserID == null ? "" : ("AND [UserID] = @UserID ")); condition += (filter.PostID == null ? "" : ("AND [PostID] = @PostID ")); condition += (string.IsNullOrEmpty(filter.CreateIP) ? "" : ("AND [IPAddress] = @CreateIP ")); if (filter.IsUnapproved != null && filter.IsUnapproved.Value) condition += (" AND [SortOrder] > " + SortOrder_Unapproved); else if (filter.IsUnapproved != null && filter.IsUnapproved.Value == false) condition += (" AND [ThreadStatus] < " + SortOrder_Unapproved); condition += (filter.BeginDate == null ? "" : ("AND [CreateDate] > @BeginDate ")); condition += (filter.EndDate == null ? "" : ("AND [CreateDate] < @EndDate ")); if (string.IsNullOrEmpty(filter.KeyWord) == false) { if (filter.SearchMode == SearchArticleMethod.Subject) { condition += " AND [Subject] LIKE '%'+@keyword+'%' "; } else if (filter.SearchMode == SearchArticleMethod.FullText) { condition += " AND [Content] LIKE '%'+@keyword+'%' "; } else { condition += " AND ([Subject] LIKE '%'+@keyword+'%' OR [Content] LIKE '%'+@keyword+'%') "; } query.CreateParameter<string>("@keyword", filter.KeyWord, SqlDbType.NVarChar, 256); } condition.AppendAnd(DaoUtil.GetExcludeRoleSQL("[UserID]", excludeRoleIDs, query)); if (filter.ForumID != null) query.CreateParameter<int?>("@ForumID", filter.ForumID, SqlDbType.Int); if (string.IsNullOrEmpty(filter.CreateIP) == false) query.CreateParameter<string>("@CreateIP", filter.CreateIP, SqlDbType.NVarChar, 64); if (filter.PostID != null) query.CreateParameter<int?>("@PostID", filter.PostID, SqlDbType.Int); if (filter.UserID != null) query.CreateParameter<int?>("@UserID", filter.UserID, SqlDbType.Int); if (filter.BeginDate != null) query.CreateParameter<DateTime?>("@BeginDate", filter.BeginDate, SqlDbType.DateTime); if (filter.EndDate != null) query.CreateParameter<DateTime?>("@EndDate", filter.EndDate, SqlDbType.DateTime); return condition.ToString(); }
/// <summary> /// Asynchronously retrieves posts that have been tagged with a specific <paramref name="tag"/>. /// </summary> /// <remarks> /// See: http://www.tumblr.com/docs/en/api/v2#m-up-tagged /// </remarks> /// <param name="tag"> /// The tag on the posts to retrieve. /// </param> /// <param name="before"> /// The timestamp of when to retrieve posts before. /// </param> /// <param name="count"> /// The number of posts to retrieve. /// </param> /// <param name="filter"> /// A <see cref="PostFilter"/>. /// </param> /// <returns> /// A <see cref="Task{T}"/> that can be used to track the operation. If the task succeeds, the <see cref="Task{T}.Result"/> will /// carry an array of posts. Otherwise <see cref="Task.Exception"/> will carry a <see cref="TumblrException"/> /// representing the error occurred during the call. /// </returns> /// <exception cref="ObjectDisposedException"> /// The object has been disposed. /// </exception> /// <exception cref="ArgumentNullException"> /// <paramref name="tag"/> is <b>null</b>. /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="tag"/> is empty. /// </exception> /// <exception cref="InvalidOperationException"> /// This <see cref="TumblrClient"/> instance does not have an OAuth token specified. /// </exception> /// <exception cref="ArgumentOutOfRangeException"> /// <paramref name="count"/> is less than 1 or greater than 20. /// </exception> public Task<BasePost[]> GetTaggedPostsAsync(string tag, DateTime before, int count = 20, PostFilter filter = PostFilter.Html) { if (disposed) throw new ObjectDisposedException("TumblrClient"); if (tag == null) throw new ArgumentNullException("tag"); if (tag.Length == 0) throw new ArgumentException("Tag cannot be empty.", "tag"); if (count < 1 || count > 20) throw new ArgumentOutOfRangeException("count", "count must be between 1 and 20."); MethodParameterSet parameters = new MethodParameterSet(); parameters.Add("api_key", apiKey); parameters.Add("tag", tag); return CallApiMethodAsync<BasePost[]>( new ApiMethod("http://api.tumblr.com/v2/tagged", OAuthToken, HttpMethod.Get, parameters), CancellationToken.None, new List<JsonConverter>() { new PostArrayConverter() }); }
public override PostCollectionV5 GetPosts(int pageNumber, PostFilter filter, Guid[] excludeRoleIDs, ref int totalCount) { using (SqlQuery query = new SqlQuery()) { query.Pager.IsDesc = filter.IsDesc; query.Pager.SortField = "PostID"; query.Pager.PageNumber = pageNumber; query.Pager.PageSize = filter.PageSize; query.Pager.TotalRecords = totalCount; query.Pager.SelectCount = true; query.Pager.TableName = "[bx_Posts]"; query.Pager.Condition = BuilderSearchPostCondition(filter, excludeRoleIDs, query, false); PostCollectionV5 posts; using (XSqlDataReader reader = query.ExecuteReader()) { posts = new PostCollectionV5(reader); if (reader.NextResult()) { if (reader.Read()) totalCount = reader.Get<int>(0); } return posts; } } }
public override DeleteResult DeleteSearchPosts(PostFilter filter, IEnumerable<Guid> excludeRoleIDs, bool getDeleteResult, int topCount, out int deletedCount, out List<int> threadIDs) { using (SqlQuery query = new SqlQuery()) { string conditon = BuilderSearchPostCondition(filter, excludeRoleIDs, query, false); query.CommandText = @" DECLARE @Table table(TempPostID int,TempTopicID int,TempUserID int,TempForumID int,TempThreadStatus tinyint); INSERT INTO @Table SELECT TOP (@TopCount) [PostID],[ThreadID],[UserID],[ForumID],[ThreadStatus] FROM [bx_Posts] WHERE " + conditon + @"; SELECT DISTINCT TempTopicID FROM @Table; "; if (getDeleteResult) { query.CommandText += @" SELECT [TempUserID],[TempForumID],COUNT(*) AS [Count] FROM @Table WHERE TempThreadStatus<4 GROUP BY [TempUserID],[TempForumID];"; } query.CommandText = query.CommandText + @" DELETE [bx_Posts] WHERE PostID IN(SELECT TempPostID FROM @Table); SELECT @@ROWCOUNT; "; query.CreateTopParameter("@TopCount", topCount); threadIDs = new List<int>(); deletedCount = 0; using (XSqlDataReader reader = query.ExecuteReader()) { DeleteResult deleteResult = new DeleteResult(); while (reader.Read()) { int threadID = reader.Get<int>("TempTopicID"); if (threadIDs.Contains(threadID) == false) threadIDs.Add(threadID); } if (getDeleteResult) { if (reader.NextResult()) { while (reader.Read()) { deleteResult.Add(reader.Get<int>("TempUserID"), reader.Get<int>("Count"), reader.Get<int>("TempForumID")); } } } if (reader.NextResult()) { while (reader.Read()) { deletedCount = reader.Get<int>(0); } } return deleteResult; } } }