aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Models/Http
diff options
context:
space:
mode:
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..3259a448
--- /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; }
+ }
+}