aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Controllers/TimelinePostController.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-02-06 17:43:03 +0800
committercrupest <crupest@outlook.com>2021-02-06 17:43:03 +0800
commit5bf2cebd80a33e3fd6d5ed59e10a76f4d2d5be91 (patch)
treeb8288479b527888cc21cd01cc24343036b57c6ab /BackEnd/Timeline/Controllers/TimelinePostController.cs
parent3591f59453846e235ce77e15adde6092dbbedac3 (diff)
downloadtimeline-5bf2cebd80a33e3fd6d5ed59e10a76f4d2d5be91.tar.gz
timeline-5bf2cebd80a33e3fd6d5ed59e10a76f4d2d5be91.tar.bz2
timeline-5bf2cebd80a33e3fd6d5ed59e10a76f4d2d5be91.zip
...
Diffstat (limited to 'BackEnd/Timeline/Controllers/TimelinePostController.cs')
-rw-r--r--BackEnd/Timeline/Controllers/TimelinePostController.cs77
1 files changed, 37 insertions, 40 deletions
diff --git a/BackEnd/Timeline/Controllers/TimelinePostController.cs b/BackEnd/Timeline/Controllers/TimelinePostController.cs
index 0148f56e..4dab2a44 100644
--- a/BackEnd/Timeline/Controllers/TimelinePostController.cs
+++ b/BackEnd/Timeline/Controllers/TimelinePostController.cs
@@ -162,54 +162,51 @@ namespace Timeline.Controllers
return StatusCode(StatusCodes.Status403Forbidden, ErrorResponse.Common.Forbid());
}
- var content = body.Content;
+ var requestContent = body.Content;
- TimelinePostEntity post;
+ TimelinePostCreateRequestContent createContent;
- TimelinePostCommonProperties properties = new TimelinePostCommonProperties { Color = body.Color, Time = body.Time };
-
- if (content.Type == TimelinePostContentTypes.Text)
+ switch (requestContent.Type)
{
- var text = content.Text;
- if (text == null)
- {
- return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_TextContentTextRequired));
- }
- post = await _postService.CreateTextPost(timelineId, userId, text, properties);
+ case TimelinePostContentTypes.Text:
+ if (requestContent.Text is null)
+ {
+ return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_TextContentTextRequired));
+ }
+ createContent = new TimelinePostCreateRequestTextContent(requestContent.Text);
+ break;
+ case TimelinePostContentTypes.Image:
+ if (requestContent.Data is null)
+ return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_ImageContentDataRequired));
+
+ // decode base64
+ byte[] data;
+ try
+ {
+ data = Convert.FromBase64String(requestContent.Data);
+ }
+ catch (FormatException)
+ {
+ return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_ImageContentDataNotBase64));
+ }
+
+ createContent = new TimelinePostCreateRequestImageContent(data);
+ break;
+ default:
+ return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_ContentUnknownType));
+
}
- else if (content.Type == TimelinePostContentTypes.Image)
- {
- var base64Data = content.Data;
- if (base64Data == null)
- {
- return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_ImageContentDataRequired));
- }
- byte[] data;
- try
- {
- data = Convert.FromBase64String(base64Data);
- }
- catch (FormatException)
- {
- return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_ImageContentDataNotBase64));
- }
- try
- {
- post = await _postService.CreateImagePost(timelineId, userId, data, properties);
- }
- catch (ImageException)
- {
- return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_ImageContentDataNotImage));
- }
+ try
+ {
+ var post = await _postService.CreatePost(timelineId, userId, new TimelinePostCreateRequest(createContent) { Time = body.Time, Color = body.Color });
+ var result = await _timelineMapper.MapToHttp(post, timeline, Url);
+ return result;
}
- else
+ catch (ImageException)
{
- return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_ContentUnknownType));
+ return BadRequest(ErrorResponse.Common.CustomMessage_InvalidModel(Resources.Messages.TimelineController_ImageContentDataNotImage));
}
-
- var result = await _timelineMapper.MapToHttp(post, timeline, Url);
- return result;
}
/// <summary>