aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Models/Http
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-08-09 21:48:12 +0800
committerGitHub <noreply@github.com>2019-08-09 21:48:12 +0800
commit38ff45fcc0b58a95ad52ba43a8be4ff466694269 (patch)
treef1cf455b758e8bf0265d4db0e42a404e9877b321 /Timeline/Models/Http
parente283a3e745bad05a55c572646d7b20fbaaeb522d (diff)
parentea8397bafe24b5c9ab814891eb3a293a07ca217e (diff)
downloadtimeline-38ff45fcc0b58a95ad52ba43a8be4ff466694269.tar.gz
timeline-38ff45fcc0b58a95ad52ba43a8be4ff466694269.tar.bz2
timeline-38ff45fcc0b58a95ad52ba43a8be4ff466694269.zip
Merge pull request #38 from crupest/null-request-field
Do 3 things.
Diffstat (limited to 'Timeline/Models/Http')
-rw-r--r--Timeline/Models/Http/Common.cs51
-rw-r--r--Timeline/Models/Http/Token.cs32
-rw-r--r--Timeline/Models/Http/User.cs26
3 files changed, 109 insertions, 0 deletions
diff --git a/Timeline/Models/Http/Common.cs b/Timeline/Models/Http/Common.cs
new file mode 100644
index 00000000..b4932754
--- /dev/null
+++ b/Timeline/Models/Http/Common.cs
@@ -0,0 +1,51 @@
+namespace Timeline.Models.Http
+{
+ public class CommonResponse
+ {
+ public static class ErrorCodes
+ {
+ /// <summary>
+ /// Used when the model is invaid.
+ /// For example a required field is null.
+ /// </summary>
+ public const int InvalidModel = -100;
+ }
+
+ public static CommonResponse InvalidModel(string message)
+ {
+ return new CommonResponse(ErrorCodes.InvalidModel, message);
+ }
+
+ public CommonResponse()
+ {
+
+ }
+
+ public CommonResponse(int code, string message)
+ {
+ Code = code;
+ Message = message;
+ }
+
+ public int Code { get; set; }
+ public string Message { get; set; }
+ }
+
+ public static class CommonPutResponse
+ {
+ public const int CreatedCode = 0;
+ public const int ModifiedCode = 1;
+
+ public static CommonResponse Created { get; } = new CommonResponse(CreatedCode, "A new item is created.");
+ public static CommonResponse Modified { get; } = new CommonResponse(ModifiedCode, "An existent item is modified.");
+ }
+
+ public static class CommonDeleteResponse
+ {
+ public const int DeletedCode = 0;
+ public const int NotExistsCode = 1;
+
+ public static CommonResponse Deleted { get; } = new CommonResponse(DeletedCode, "An existent item is deleted.");
+ public static CommonResponse NotExists { get; } = new CommonResponse(NotExistsCode, "The item does not exist.");
+ }
+}
diff --git a/Timeline/Models/Http/Token.cs b/Timeline/Models/Http/Token.cs
new file mode 100644
index 00000000..68a66d0a
--- /dev/null
+++ b/Timeline/Models/Http/Token.cs
@@ -0,0 +1,32 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Timeline.Models.Http
+{
+ public class CreateTokenRequest
+ {
+ [Required]
+ public string Username { get; set; }
+ [Required]
+ public string Password { get; set; }
+ // in days, optional
+ [Range(1, 365)]
+ public int? ExpireOffset { get; set; }
+ }
+
+ public class CreateTokenResponse
+ {
+ public string Token { get; set; }
+ public UserInfo User { get; set; }
+ }
+
+ public class VerifyTokenRequest
+ {
+ [Required]
+ public string Token { get; set; }
+ }
+
+ public class VerifyTokenResponse
+ {
+ public UserInfo User { get; set; }
+ }
+}
diff --git a/Timeline/Models/Http/User.cs b/Timeline/Models/Http/User.cs
new file mode 100644
index 00000000..d45543fb
--- /dev/null
+++ b/Timeline/Models/Http/User.cs
@@ -0,0 +1,26 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Timeline.Models.Http
+{
+ public class UserPutRequest
+ {
+ [Required]
+ public string Password { get; set; }
+ [Required]
+ public bool? Administrator { get; set; }
+ }
+
+ public class UserPatchRequest
+ {
+ public string Password { get; set; }
+ public bool? Administrator { get; set; }
+ }
+
+ public class ChangePasswordRequest
+ {
+ [Required]
+ public string OldPassword { get; set; }
+ [Required]
+ public string NewPassword { get; set; }
+ }
+}