aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Controllers/TimelineController.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-02-22 21:33:42 +0800
committerGitHub <noreply@github.com>2020-02-22 21:33:42 +0800
commit4475246be00d0f9d1a5df6c181589ed0b2a7009b (patch)
tree1897dc26074fb5b8aba2e2493b4c393279f6d4b4 /Timeline/Controllers/TimelineController.cs
parent77c28a63bdd742a46bcf780ae3819c18b7fbf9d2 (diff)
parent98dabdd9462384353389a6834b9e71a3e40330a2 (diff)
downloadtimeline-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/TimelineController.cs')
-rw-r--r--Timeline/Controllers/TimelineController.cs34
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);
}