diff options
author | crupest <crupest@outlook.com> | 2020-02-22 21:33:42 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-22 21:33:42 +0800 |
commit | 4475246be00d0f9d1a5df6c181589ed0b2a7009b (patch) | |
tree | 1897dc26074fb5b8aba2e2493b4c393279f6d4b4 /Timeline/Controllers | |
parent | 77c28a63bdd742a46bcf780ae3819c18b7fbf9d2 (diff) | |
parent | 98dabdd9462384353389a6834b9e71a3e40330a2 (diff) | |
download | timeline-4475246be00d0f9d1a5df6c181589ed0b2a7009b.tar.gz timeline-4475246be00d0f9d1a5df6c181589ed0b2a7009b.tar.bz2 timeline-4475246be00d0f9d1a5df6c181589ed0b2a7009b.zip |
Merge pull request #60 from crupest/dev
Add visibility query filter in get timelines api.
Diffstat (limited to 'Timeline/Controllers')
-rw-r--r-- | Timeline/Controllers/TimelineController.cs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/Timeline/Controllers/TimelineController.cs b/Timeline/Controllers/TimelineController.cs index 47b3696c..9ada16e0 100644 --- a/Timeline/Controllers/TimelineController.cs +++ b/Timeline/Controllers/TimelineController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
+using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
@@ -29,8 +30,37 @@ namespace Timeline.Controllers }
[HttpGet("timelines")]
- public async Task<ActionResult<List<TimelineInfo>>> TimelineList([FromQuery][Username] string? relate, [FromQuery][RegularExpression("(own)|(join)")] string? relateType)
+ public async Task<ActionResult<List<TimelineInfo>>> TimelineList([FromQuery][Username] string? relate, [FromQuery][RegularExpression("(own)|(join)")] string? relateType, [FromQuery] string? visibility)
{
+ List<TimelineVisibility>? visibilityFilter = null;
+ if (visibility != null)
+ {
+ visibilityFilter = new List<TimelineVisibility>();
+ var items = visibility.Split('|');
+ foreach (var item in items)
+ {
+ if (item.Equals(nameof(TimelineVisibility.Private), StringComparison.OrdinalIgnoreCase))
+ {
+ if (!visibilityFilter.Contains(TimelineVisibility.Private))
+ visibilityFilter.Add(TimelineVisibility.Private);
+ }
+ else if (item.Equals(nameof(TimelineVisibility.Register), StringComparison.OrdinalIgnoreCase))
+ {
+ if (!visibilityFilter.Contains(TimelineVisibility.Register))
+ visibilityFilter.Add(TimelineVisibility.Register);
+ }
+ else if (item.Equals(nameof(TimelineVisibility.Public), StringComparison.OrdinalIgnoreCase))
+ {
+ if (!visibilityFilter.Contains(TimelineVisibility.Public))
+ visibilityFilter.Add(TimelineVisibility.Public);
+ }
+ else
+ {
+ return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_QueryVisibilityUnknown, item));
+ }
+ }
+ }
+
TimelineUserRelationship? relationship = null;
if (relate != null)
{
@@ -51,7 +81,7 @@ namespace Timeline.Controllers }
}
- var result = await _service.GetTimelines(relationship);
+ var result = await _service.GetTimelines(relationship, visibilityFilter);
result.ForEach(t => t.FillLinks(Url));
return Ok(result);
}
|