diff options
| author | Bobby <[email protected]> | 2026-03-29 22:52:46 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-03-29 22:52:46 +0530 |
| commit | 9eb9b7f4bd552a641235764f66483e1f940fcfd9 (patch) | |
| tree | da520b923b5e6758d5457b6233dd6671fc640914 /nexus/api | |
| parent | 65a143a0871c35989b7c7ea6723d39a0585c089e (diff) | |
| download | echoes-of-vaelun-main.tar.xz echoes-of-vaelun-main.zip | |
Diffstat (limited to 'nexus/api')
| -rw-r--r-- | nexus/api/account/account.go | 20 | ||||
| -rw-r--r-- | nexus/api/auth/auth.go | 69 | ||||
| -rw-r--r-- | nexus/api/characters/characters.go | 66 | ||||
| -rw-r--r-- | nexus/api/characters/messages.go | 3 | ||||
| -rw-r--r-- | nexus/api/realms/realms.go | 23 |
5 files changed, 181 insertions, 0 deletions
diff --git a/nexus/api/account/account.go b/nexus/api/account/account.go new file mode 100644 index 0000000..42f8836 --- /dev/null +++ b/nexus/api/account/account.go @@ -0,0 +1,20 @@ +package account
+
+import (
+ "nexus/services/account"
+ "nexus/utils/meta"
+ "nexus/utils/shortcuts"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func Show(context *fiber.Ctx) error {
+ return shortcuts.JSON(context, meta.Account(context).ToResponse())
+}
+
+func Delete(context *fiber.Ctx) error {
+ if serviceErr := account.Delete(meta.Account(context).ID); serviceErr != nil {
+ return serviceErr
+ }
+ return shortcuts.NoContent(context)
+}
diff --git a/nexus/api/auth/auth.go b/nexus/api/auth/auth.go new file mode 100644 index 0000000..36f2e5f --- /dev/null +++ b/nexus/api/auth/auth.go @@ -0,0 +1,69 @@ +package auth
+
+import (
+ "nexus/services/auth"
+ authTypes "nexus/types/auth"
+ "nexus/utils/meta"
+ "nexus/utils/shortcuts"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func Register(context *fiber.Ctx) error {
+ body, err := meta.Body[authTypes.RegisterRequest](context)
+ if err != nil {
+ return shortcuts.ServiceError(fiber.StatusBadRequest, err.Error())
+ }
+
+ account, serviceErr := auth.Register(body)
+ if serviceErr != nil {
+ return serviceErr
+ }
+
+ return shortcuts.Created(context, account.ToResponse())
+}
+
+func Login(context *fiber.Ctx) error {
+ body, err := meta.Body[authTypes.LoginRequest](context)
+ if err != nil {
+ return shortcuts.ServiceError(fiber.StatusBadRequest, err.Error())
+ }
+
+ req := meta.Request(context)
+
+ session, serviceErr := auth.Login(body, req.IP, req.Header("User-Agent"))
+ if serviceErr != nil {
+ return serviceErr
+ }
+
+ return shortcuts.JSON(context, authTypes.TokenResponse{
+ AuthToken: session.AuthToken,
+ RefreshToken: session.RefreshToken,
+ })
+}
+
+func Refresh(context *fiber.Ctx) error {
+ body, err := meta.Body[authTypes.RefreshRequest](context)
+ if err != nil {
+ return shortcuts.ServiceError(fiber.StatusBadRequest, err.Error())
+ }
+
+ req := meta.Request(context)
+
+ session, serviceErr := auth.Refresh(body.RefreshToken, req.IP, req.Header("User-Agent"))
+ if serviceErr != nil {
+ return serviceErr
+ }
+
+ return shortcuts.JSON(context, authTypes.TokenResponse{
+ AuthToken: session.AuthToken,
+ RefreshToken: session.RefreshToken,
+ })
+}
+
+func Logout(context *fiber.Ctx) error {
+ if serviceErr := auth.Logout(shortcuts.BearerToken(context)); serviceErr != nil {
+ return serviceErr
+ }
+ return shortcuts.NoContent(context)
+}
diff --git a/nexus/api/characters/characters.go b/nexus/api/characters/characters.go new file mode 100644 index 0000000..4443212 --- /dev/null +++ b/nexus/api/characters/characters.go @@ -0,0 +1,66 @@ +package characters
+
+import (
+ "nexus/services/character"
+ characterTypes "nexus/types/character"
+ "nexus/utils/meta"
+ "nexus/utils/shortcuts"
+
+ "github.com/gofiber/fiber/v2"
+ "github.com/google/uuid"
+)
+
+func Index(context *fiber.Ctx) error {
+ characters, serviceErr := character.GetAllForAccount(meta.Account(context).ID)
+ if serviceErr != nil {
+ return serviceErr
+ }
+
+ response := make([]characterTypes.Response, len(characters))
+ for i, c := range characters {
+ response[i] = c.ToResponse()
+ }
+
+ return shortcuts.JSON(context, response)
+}
+
+func Show(context *fiber.Ctx) error {
+ id, err := uuid.Parse(meta.Request(context).Param("id"))
+ if err != nil {
+ return shortcuts.ServiceError(fiber.StatusBadRequest, InvalidCharacterID)
+ }
+
+ c, serviceErr := character.GetByID(id, meta.Account(context).ID)
+ if serviceErr != nil {
+ return serviceErr
+ }
+
+ return shortcuts.JSON(context, c.ToResponse())
+}
+
+func Create(context *fiber.Ctx) error {
+ body, err := meta.Body[characterTypes.CreateRequest](context)
+ if err != nil {
+ return shortcuts.ServiceError(fiber.StatusBadRequest, err.Error())
+ }
+
+ c, serviceErr := character.Create(meta.Account(context).ID, body)
+ if serviceErr != nil {
+ return serviceErr
+ }
+
+ return shortcuts.Created(context, c.ToResponse())
+}
+
+func Delete(context *fiber.Ctx) error {
+ id, err := uuid.Parse(meta.Request(context).Param("id"))
+ if err != nil {
+ return shortcuts.ServiceError(fiber.StatusBadRequest, InvalidCharacterID)
+ }
+
+ if serviceErr := character.Delete(id, meta.Account(context).ID); serviceErr != nil {
+ return serviceErr
+ }
+
+ return shortcuts.NoContent(context)
+}
diff --git a/nexus/api/characters/messages.go b/nexus/api/characters/messages.go new file mode 100644 index 0000000..f8bdb02 --- /dev/null +++ b/nexus/api/characters/messages.go @@ -0,0 +1,3 @@ +package characters
+
+const InvalidCharacterID = "invalid character id"
diff --git a/nexus/api/realms/realms.go b/nexus/api/realms/realms.go new file mode 100644 index 0000000..025949f --- /dev/null +++ b/nexus/api/realms/realms.go @@ -0,0 +1,23 @@ +package realms
+
+import (
+ "nexus/repositories/realm"
+ realmTypes "nexus/types/realm"
+ "nexus/utils/shortcuts"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func Index(context *fiber.Ctx) error {
+ realms, err := realm.FindAll()
+ if err != nil {
+ return shortcuts.ServiceError(fiber.StatusInternalServerError, err.Error())
+ }
+
+ response := make([]realmTypes.Response, len(realms))
+ for i, r := range realms {
+ response[i] = r.ToResponse()
+ }
+
+ return shortcuts.JSON(context, response)
+}
|
