diff --git a/.gitignore b/.gitignore
index 9e23ac2..55a4f20 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
/dist
-/uploads
\ No newline at end of file
+/uploads
+
+.DS_Store
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 31fd3c4..1df2743 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,8 +4,8 @@
-
-
+
+
@@ -23,7 +23,7 @@
@@ -50,7 +50,7 @@
"RunOnceActivity.go.migrated.go.modules.settings": "true",
"RunOnceActivity.go.modules.automatic.dependencies.download": "true",
"RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true",
- "git-widget-placeholder": "master",
+ "git-widget-placeholder": "refactor/dealer",
"go.import.settings.migrated": "true",
"go.sdk.automatically.set": "true",
"last_opened_file_path": "/Users/littlesheep/Documents/Projects/Hydrogen/Passport/web/src/components/admin",
@@ -88,6 +88,7 @@
+
@@ -151,10 +152,6 @@
-
-
-
-
@@ -176,7 +173,11 @@
-
+
+
+
+
+
true
diff --git a/go.mod b/go.mod
index 3d5a56e..3492e42 100644
--- a/go.mod
+++ b/go.mod
@@ -6,16 +6,14 @@ toolchain go1.22.1
require (
firebase.google.com/go v3.13.0+incompatible
+ git.solsynth.dev/hydrogen/dealer v0.0.0-20240716024524-cfb73fde1951
git.solsynth.dev/hydrogen/paperclip v0.0.0-20240622051057-0f56dba45745
github.com/go-playground/validator/v10 v10.17.0
- github.com/gofiber/contrib/websocket v1.3.0
github.com/gofiber/fiber/v2 v2.52.4
github.com/golang-jwt/jwt/v5 v5.2.0
github.com/google/uuid v1.6.0
- github.com/hashicorp/consul/api v1.29.1
github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible
github.com/json-iterator/go v1.1.12
- github.com/mbobakov/grpc-consul-resolver v1.5.3
github.com/nicksnyder/go-i18n/v2 v2.4.0
github.com/robfig/cron/v3 v3.0.1
github.com/rs/zerolog v1.31.0
@@ -24,7 +22,6 @@ require (
github.com/spf13/viper v1.18.2
github.com/sujit-baniya/flash v0.1.8
golang.org/x/crypto v0.24.0
- golang.org/x/text v0.16.0
google.golang.org/api v0.183.0
google.golang.org/grpc v1.64.0
google.golang.org/protobuf v1.34.2
@@ -44,7 +41,6 @@ require (
cloud.google.com/go/storage v1.41.0 // indirect
github.com/andybalholm/brotli v1.1.0 // indirect
github.com/armon/go-metrics v0.4.1 // indirect
- github.com/fasthttp/websocket v1.5.8 // indirect
github.com/fatih/color v1.17.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
@@ -61,6 +57,7 @@ require (
github.com/google/s2a-go v0.1.7 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.4 // indirect
+ github.com/hashicorp/consul/api v1.29.1 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-hclog v1.6.3 // indirect
@@ -83,6 +80,7 @@ require (
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
+ github.com/mbobakov/grpc-consul-resolver v1.5.3 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
@@ -93,7 +91,6 @@ require (
github.com/rivo/uniseg v0.4.7 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
- github.com/savsgio/gotils v0.0.0-20240303185622-093b76447511 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
@@ -115,6 +112,7 @@ require (
golang.org/x/oauth2 v0.21.0 // indirect
golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.21.0 // indirect
+ golang.org/x/text v0.16.0 // indirect
golang.org/x/time v0.5.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240604185151-ef581f913117 // indirect
diff --git a/go.sum b/go.sum
index a1c5a95..776d28f 100644
--- a/go.sum
+++ b/go.sum
@@ -17,6 +17,20 @@ cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RB
cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80=
firebase.google.com/go v3.13.0+incompatible h1:3TdYC3DDi6aHn20qoRkxwGqNgdjtblwVAyRLQwGn/+4=
firebase.google.com/go v3.13.0+incompatible/go.mod h1:xlah6XbEyW6tbfSklcfe5FHJIwjt8toICdV5Wh9ptHs=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715120403-4e96bb2cd519 h1:HR0JxkVIeN8xyasy99a0i+Vfy46uW1KthPVamCjOTPg=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715120403-4e96bb2cd519/go.mod h1:eZwAwP7ahL7TO8GWBlYFYDdjlna+8zHYbDfNabnuUEU=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715142037-d7f5053fc74b h1:7pwMvP+zfl5rn08+Wg1rtcSqq1MtEN72wEmluvhBYIA=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715142037-d7f5053fc74b/go.mod h1:eZwAwP7ahL7TO8GWBlYFYDdjlna+8zHYbDfNabnuUEU=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715153944-44861dc01ffb h1:8/dP5qj47UPD9TZFkYH1syRCHSUo16TDutcuMK13eQY=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715153944-44861dc01ffb/go.mod h1:eZwAwP7ahL7TO8GWBlYFYDdjlna+8zHYbDfNabnuUEU=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715154151-74c9ce063b4e h1:mkV/bshMqDTA3jUwsbb3MxN0d+U0I38S/teeRMoPNsk=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715154151-74c9ce063b4e/go.mod h1:eZwAwP7ahL7TO8GWBlYFYDdjlna+8zHYbDfNabnuUEU=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715154526-59bda7a4117a h1:ozV2DWlcSCLfq3941W6C7vVGlgIQ9PH2TXfnHvSms4o=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715154526-59bda7a4117a/go.mod h1:eZwAwP7ahL7TO8GWBlYFYDdjlna+8zHYbDfNabnuUEU=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715154745-ab0b491f45ff h1:Bzcu+n1YFD09SGoGxuFnqT56u3kK66sQ/vF8PEhbPJQ=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240715154745-ab0b491f45ff/go.mod h1:eZwAwP7ahL7TO8GWBlYFYDdjlna+8zHYbDfNabnuUEU=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240716024524-cfb73fde1951 h1:RgZJK4PXhrjhUX75BclBCg2xfetMkswcMwMqfTBtryQ=
+git.solsynth.dev/hydrogen/dealer v0.0.0-20240716024524-cfb73fde1951/go.mod h1:eZwAwP7ahL7TO8GWBlYFYDdjlna+8zHYbDfNabnuUEU=
git.solsynth.dev/hydrogen/paperclip v0.0.0-20240622051057-0f56dba45745 h1:40BUsQMNXjqHyytkyF9py1HjTAWlRgO6R57YXUrHNy4=
git.solsynth.dev/hydrogen/paperclip v0.0.0-20240622051057-0f56dba45745/go.mod h1:FsQGSLTl0gvo+9Jmbot02S72suyF9tFTrzDj70Xhifo=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
@@ -56,8 +70,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/fasthttp/websocket v1.5.8 h1:k5DpirKkftIF/w1R8ZzjSgARJrs54Je9YJK37DL/Ah8=
-github.com/fasthttp/websocket v1.5.8/go.mod h1:d08g8WaT6nnyvg9uMm8K9zMYyDjfKyj3170AtPRuVU0=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
@@ -95,8 +107,6 @@ github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrt
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
-github.com/gofiber/contrib/websocket v1.3.0 h1:XADFAGorer1VJ1bqC4UkCjqS37kwRTV0415+050NrMk=
-github.com/gofiber/contrib/websocket v1.3.0/go.mod h1:xguaOzn2ZZ759LavtosEP+rcxIgBEE/rdumPINhR+Xo=
github.com/gofiber/fiber/v2 v2.36.0/go.mod h1:tgCr+lierLwLoVHHO/jn3Niannv34WRkQETU8wiL9fQ=
github.com/gofiber/fiber/v2 v2.52.4 h1:P+T+4iK7VaqUsq2PALYEfBBo6bJZ4q3FP8cZ84EggTM=
github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
@@ -328,8 +338,6 @@ github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6g
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA=
github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
-github.com/savsgio/gotils v0.0.0-20240303185622-093b76447511 h1:KanIMPX0QdEdB4R3CiimCAbxFrhB3j7h0/OvpYGVQa8=
-github.com/savsgio/gotils v0.0.0-20240303185622-093b76447511/go.mod h1:sM7Mt7uEoCeFSCBM+qBrqvEo+/9vdmj19wzp3yzUhmg=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/sideshow/apns2 v0.23.0 h1:lpkikaZ995GIcKk6AFsYzHyezCrsrfEDvUWcWkEGErY=
diff --git a/pkg/hyper/auth.go b/pkg/hyper/auth.go
deleted file mode 100644
index 2684317..0000000
--- a/pkg/hyper/auth.go
+++ /dev/null
@@ -1,63 +0,0 @@
-package hyper
-
-import (
- "context"
- "fmt"
- "git.solsynth.dev/hydrogen/passport/pkg/proto"
- "google.golang.org/grpc"
- "time"
-)
-
-func (v *HyperConn) DoAuthenticate(atk, rtk string) (acc *proto.Userinfo, accessTk string, refreshTk string, err error) {
- ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
- defer cancel()
-
- var in *grpc.ClientConn
- in, err = v.DiscoverServiceGRPC("Hydrogen.Passport")
- if err != nil {
- return
- }
-
- var reply *proto.AuthReply
- reply, err = proto.NewAuthClient(in).Authenticate(ctx, &proto.AuthRequest{
- AccessToken: atk,
- RefreshToken: &rtk,
- })
- if err != nil {
- return
- }
- if reply != nil {
- acc = reply.GetUserinfo()
- accessTk = reply.GetAccessToken()
- refreshTk = reply.GetRefreshToken()
- if !reply.IsValid {
- err = fmt.Errorf("invalid authorization context")
- return
- }
- }
-
- return
-}
-
-func (v *HyperConn) DoCheckPerm(atk string, key string, val []byte) error {
- ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
- defer cancel()
-
- in, err := v.DiscoverServiceGRPC("Hydrogen.Passport")
- if err != nil {
- return err
- }
-
- reply, err := proto.NewAuthClient(in).CheckPerm(ctx, &proto.CheckPermRequest{
- Token: atk,
- Key: key,
- Value: val,
- })
- if err != nil {
- return err
- } else if !reply.GetIsValid() {
- return fmt.Errorf("missing permission: %s", key)
- }
-
- return nil
-}
diff --git a/pkg/hyper/auth_adaptor.go b/pkg/hyper/auth_adaptor.go
deleted file mode 100644
index 7c3e92d..0000000
--- a/pkg/hyper/auth_adaptor.go
+++ /dev/null
@@ -1,69 +0,0 @@
-package hyper
-
-import (
- "git.solsynth.dev/hydrogen/passport/pkg/proto"
- "github.com/gofiber/fiber/v2"
- jsoniter "github.com/json-iterator/go"
- "strings"
- "time"
-)
-
-const CookieAtk = "__hydrogen_atk"
-const CookieRtk = "__hydrogen_rtk"
-
-func (v *HyperConn) AuthMiddleware(c *fiber.Ctx) error {
- var atk string
- if cookie := c.Cookies(CookieAtk); len(cookie) > 0 {
- atk = cookie
- }
- if header := c.Get(fiber.HeaderAuthorization); len(header) > 0 {
- tk := strings.Replace(header, "Bearer", "", 1)
- atk = strings.TrimSpace(tk)
- }
- if tk := c.Query("tk"); len(tk) > 0 {
- atk = strings.TrimSpace(tk)
- }
-
- c.Locals("p_token", atk)
-
- rtk := c.Cookies(CookieRtk)
- if user, newAtk, newRtk, err := v.DoAuthenticate(atk, rtk); err == nil {
- if newAtk != atk {
- c.Cookie(&fiber.Cookie{
- Name: CookieAtk,
- Value: newAtk,
- SameSite: "Lax",
- Expires: time.Now().Add(60 * time.Minute),
- Path: "/",
- })
- c.Cookie(&fiber.Cookie{
- Name: CookieRtk,
- Value: newRtk,
- SameSite: "Lax",
- Expires: time.Now().Add(24 * 30 * time.Hour),
- Path: "/",
- })
- }
- c.Locals("p_user", user)
- }
-
- return c.Next()
-}
-
-func (v *HyperConn) EnsureAuthenticated(c *fiber.Ctx) error {
- if _, ok := c.Locals("p_user").(*proto.Userinfo); !ok {
- return fiber.NewError(fiber.StatusUnauthorized)
- }
- return nil
-}
-
-func (v *HyperConn) EnsureGrantedPerm(c *fiber.Ctx, key string, val any) error {
- if err := v.EnsureAuthenticated(c); err != nil {
- return err
- }
- encodedVal, _ := jsoniter.Marshal(val)
- if err := v.DoCheckPerm(c.Locals("p_token").(string), key, encodedVal); err != nil {
- return fiber.NewError(fiber.StatusForbidden, err.Error())
- }
- return nil
-}
diff --git a/pkg/hyper/conn.go b/pkg/hyper/conn.go
deleted file mode 100644
index 951d2d6..0000000
--- a/pkg/hyper/conn.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package hyper
-
-import (
- "context"
- "fmt"
- "google.golang.org/grpc"
- "google.golang.org/grpc/credentials/insecure"
- health "google.golang.org/grpc/health/grpc_health_v1"
- "time"
-
- _ "github.com/mbobakov/grpc-consul-resolver"
-)
-
-type HyperConn struct {
- Addr string
-
- cacheGrpcConn map[string]*grpc.ClientConn
-}
-
-func NewHyperConn(addr string) *HyperConn {
- return &HyperConn{
- Addr: addr,
-
- cacheGrpcConn: make(map[string]*grpc.ClientConn),
- }
-}
-
-func (v *HyperConn) DiscoverServiceGRPC(name string) (*grpc.ClientConn, error) {
- if val, ok := v.cacheGrpcConn[name]; ok {
- ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
- defer cancel()
- if _, err := health.NewHealthClient(val).Check(ctx, &health.HealthCheckRequest{
- Service: name,
- }); err == nil {
- return val, nil
- } else {
- delete(v.cacheGrpcConn, name)
- }
- }
-
- target := fmt.Sprintf("consul://%s/%s", v.Addr, name)
- conn, err := grpc.NewClient(
- target,
- grpc.WithTransportCredentials(insecure.NewCredentials()),
- grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy": "round_robin"}`),
- )
- if err == nil {
- v.cacheGrpcConn[name] = conn
- }
- return conn, err
-}
diff --git a/pkg/internal/database/migrator.go b/pkg/internal/database/migrator.go
index 68a7133..8eea6a1 100644
--- a/pkg/internal/database/migrator.go
+++ b/pkg/internal/database/migrator.go
@@ -10,7 +10,7 @@ var AutoMaintainRange = []any{
&models.AuthFactor{},
&models.AccountProfile{},
&models.AccountContact{},
- &models.AccountFriendship{},
+ &models.AccountRelationship{},
&models.Status{},
&models.Badge{},
&models.Realm{},
diff --git a/pkg/internal/gap/server.go b/pkg/internal/gap/server.go
index 859a738..2fcf780 100644
--- a/pkg/internal/gap/server.go
+++ b/pkg/internal/gap/server.go
@@ -2,51 +2,41 @@ package gap
import (
"fmt"
- "strconv"
+ "git.solsynth.dev/hydrogen/dealer/pkg/hyper"
+ "git.solsynth.dev/hydrogen/dealer/pkg/proto"
+ "github.com/rs/zerolog/log"
"strings"
- "github.com/hashicorp/consul/api"
"github.com/spf13/viper"
- "google.golang.org/grpc"
- "google.golang.org/grpc/credentials/insecure"
-
- _ "github.com/mbobakov/grpc-consul-resolver"
)
-func Register() error {
- cfg := api.DefaultConfig()
- cfg.Address = viper.GetString("consul.addr")
-
- client, err := api.NewClient(cfg)
- if err != nil {
- return err
- }
+var H *hyper.HyperConn
+func RegisterService() error {
grpcBind := strings.SplitN(viper.GetString("grpc_bind"), ":", 2)
+ httpBind := strings.SplitN(viper.GetString("bind"), ":", 2)
outboundIp, _ := GetOutboundIP()
- port, _ := strconv.Atoi(grpcBind[1])
- registration := new(api.AgentServiceRegistration)
- registration.ID = viper.GetString("id")
- registration.Name = "Hydrogen.Passport"
- registration.Address = outboundIp.String()
- registration.Port = port
- registration.Check = &api.AgentServiceCheck{
- GRPC: fmt.Sprintf("%s:%s", outboundIp, grpcBind[1]),
- Timeout: "5s",
- Interval: "1m",
- DeregisterCriticalServiceAfter: "3m",
+ grpcOutbound := fmt.Sprintf("%s:%s", outboundIp, grpcBind[1])
+ httpOutbound := fmt.Sprintf("%s:%s", outboundIp, httpBind[1])
+
+ var err error
+ H, err = hyper.NewHyperConn(viper.GetString("dealer.addr"), &proto.ServiceInfo{
+ Id: viper.GetString("id"),
+ Type: hyper.ServiceTypeAuthProvider,
+ Label: "Passport",
+ GrpcAddr: grpcOutbound,
+ HttpAddr: &httpOutbound,
+ })
+ if err == nil {
+ go func() {
+ err := H.KeepRegisterService()
+ if err != nil {
+ log.Error().Err(err).Msg("An error occurred while registering service...")
+ }
+ }()
}
- return client.Agent().ServiceRegister(registration)
-}
-
-func DiscoverPaperclip() (*grpc.ClientConn, error) {
- target := fmt.Sprintf("consul://%s/Hydrogen.Paperclip", viper.GetString("consul.addr"))
- return grpc.NewClient(
- target,
- grpc.WithTransportCredentials(insecure.NewCredentials()),
- grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy": "round_robin"}`),
- )
+ return err
}
diff --git a/pkg/internal/grpc/auth.go b/pkg/internal/grpc/auth.go
index 792716f..3474f15 100644
--- a/pkg/internal/grpc/auth.go
+++ b/pkg/internal/grpc/auth.go
@@ -2,11 +2,11 @@ package grpc
import (
"context"
+ "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
+ "git.solsynth.dev/hydrogen/dealer/pkg/proto"
"git.solsynth.dev/hydrogen/passport/pkg/internal/services"
- "git.solsynth.dev/hydrogen/passport/pkg/proto"
jsoniter "github.com/json-iterator/go"
- "github.com/samber/lo"
)
func (v *Server) Authenticate(_ context.Context, in *proto.AuthRequest) (*proto.AuthReply, error) {
@@ -19,7 +19,7 @@ func (v *Server) Authenticate(_ context.Context, in *proto.AuthRequest) (*proto.
user := ctx.Account
rawPerms, _ := jsoniter.Marshal(perms)
- userinfo := &proto.Userinfo{
+ userinfo := &proto.UserInfo{
Id: uint64(user.ID),
Name: user.Name,
Nick: user.Nick,
@@ -35,17 +35,19 @@ func (v *Server) Authenticate(_ context.Context, in *proto.AuthRequest) (*proto.
}
return &proto.AuthReply{
- IsValid: true,
- AccessToken: &atk,
- RefreshToken: &rtk,
- Permissions: rawPerms,
- TicketId: lo.ToPtr(uint64(ctx.Ticket.ID)),
- Userinfo: userinfo,
+ IsValid: true,
+ Info: &proto.AuthInfo{
+ NewAccessToken: &atk,
+ NewRefreshToken: &rtk,
+ Permissions: rawPerms,
+ TicketId: uint64(ctx.Ticket.ID),
+ Info: userinfo,
+ },
}, nil
}
}
-func (v *Server) CheckPerm(_ context.Context, in *proto.CheckPermRequest) (*proto.CheckPermReply, error) {
+func (v *Server) EnsurePermGranted(_ context.Context, in *proto.CheckPermRequest) (*proto.CheckPermResponse, error) {
claims, err := services.DecodeJwt(in.GetToken())
if err != nil {
return nil, err
@@ -64,7 +66,26 @@ func (v *Server) CheckPerm(_ context.Context, in *proto.CheckPermRequest) (*prot
perms := services.FilterPermNodes(heldPerms, ctx.Ticket.Claims)
valid := services.HasPermNode(perms, in.GetKey(), value)
- return &proto.CheckPermReply{
+ return &proto.CheckPermResponse{
+ IsValid: valid,
+ }, nil
+}
+
+func (v *Server) EnsureUserPermGranted(_ context.Context, in *proto.CheckUserPermRequest) (*proto.CheckUserPermResponse, error) {
+ relation, err := services.GetRelationWithTwoNode(uint(in.GetUserId()), uint(in.GetOtherId()))
+ if err != nil {
+ return &proto.CheckUserPermResponse{
+ IsValid: false,
+ }, nil
+ }
+
+ defaultPerm := relation.Status == models.RelationshipFriend
+
+ var value any
+ _ = jsoniter.Unmarshal(in.GetValue(), &value)
+ valid := services.HasPermNodeWithDefault(relation.PermNodes, in.GetKey(), value, defaultPerm)
+
+ return &proto.CheckUserPermResponse{
IsValid: valid,
}, nil
}
diff --git a/pkg/internal/grpc/friendships.go b/pkg/internal/grpc/friendships.go
deleted file mode 100644
index 9551ca0..0000000
--- a/pkg/internal/grpc/friendships.go
+++ /dev/null
@@ -1,46 +0,0 @@
-package grpc
-
-import (
- "context"
- "fmt"
- "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
- "git.solsynth.dev/hydrogen/passport/pkg/internal/services"
- "git.solsynth.dev/hydrogen/passport/pkg/proto"
- "github.com/samber/lo"
-)
-
-func (v *Server) ListFriendship(_ context.Context, request *proto.FriendshipLookupRequest) (*proto.ListFriendshipResponse, error) {
- account, err := services.GetAccount(uint(request.GetAccountId()))
- if err != nil {
- return nil, err
- }
- friends, err := services.ListFriend(account, models.FriendshipStatus(request.GetStatus()))
- if err != nil {
- return nil, err
- }
-
- return &proto.ListFriendshipResponse{
- Data: lo.Map(friends, func(item models.AccountFriendship, index int) *proto.FriendshipResponse {
- return &proto.FriendshipResponse{
- AccountId: uint64(item.AccountID),
- RelatedId: uint64(item.RelatedID),
- Status: uint32(item.Status),
- }
- }),
- }, nil
-}
-
-func (v *Server) GetFriendship(ctx context.Context, request *proto.FriendshipTwoSideLookupRequest) (*proto.FriendshipResponse, error) {
- friend, err := services.GetFriendWithTwoSides(uint(request.GetAccountId()), uint(request.GetRelatedId()))
- if err != nil {
- return nil, err
- } else if friend.Status != models.FriendshipStatus(request.GetStatus()) {
- return nil, fmt.Errorf("status mismatch")
- }
-
- return &proto.FriendshipResponse{
- AccountId: uint64(friend.AccountID),
- RelatedId: uint64(friend.RelatedID),
- Status: uint32(friend.Status),
- }, nil
-}
diff --git a/pkg/internal/grpc/notifier.go b/pkg/internal/grpc/notifier.go
new file mode 100644
index 0000000..9c6476f
--- /dev/null
+++ b/pkg/internal/grpc/notifier.go
@@ -0,0 +1,47 @@
+package grpc
+
+import (
+ "context"
+ "fmt"
+ jsoniter "github.com/json-iterator/go"
+
+ "git.solsynth.dev/hydrogen/dealer/pkg/proto"
+ "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
+ "git.solsynth.dev/hydrogen/passport/pkg/internal/services"
+)
+
+func (v *Server) NotifyUser(_ context.Context, in *proto.NotifyUserRequest) (*proto.NotifyResponse, error) {
+ var err error
+ var user models.Account
+ if user, err = services.GetAccount(uint(in.GetUserId())); err != nil {
+ return nil, fmt.Errorf("unable to get account: %v", err)
+ }
+
+ var metadata map[string]any
+ _ = jsoniter.Unmarshal(in.GetNotify().GetMetadata(), &metadata)
+
+ notification := models.Notification{
+ Topic: in.GetNotify().GetTopic(),
+ Title: in.GetNotify().GetTitle(),
+ Subtitle: in.GetNotify().Subtitle,
+ Body: in.GetNotify().GetBody(),
+ Metadata: metadata,
+ IsRealtime: in.GetNotify().GetIsRealtime(),
+ IsForcePush: in.GetNotify().GetIsForcePush(),
+ AccountID: user.ID,
+ }
+
+ if notification.IsRealtime {
+ if err := services.PushNotification(notification); err != nil {
+ return nil, err
+ }
+ } else {
+ if err := services.NewNotification(notification); err != nil {
+ return nil, err
+ }
+ }
+
+ return &proto.NotifyResponse{
+ IsSuccess: true,
+ }, nil
+}
diff --git a/pkg/internal/grpc/notify.go b/pkg/internal/grpc/notify.go
deleted file mode 100644
index 482c7aa..0000000
--- a/pkg/internal/grpc/notify.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package grpc
-
-import (
- "context"
- jsoniter "github.com/json-iterator/go"
-
- "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
- "git.solsynth.dev/hydrogen/passport/pkg/internal/services"
- "git.solsynth.dev/hydrogen/passport/pkg/proto"
- "github.com/samber/lo"
-)
-
-func (v *Server) NotifyUser(_ context.Context, in *proto.NotifyRequest) (*proto.NotifyReply, error) {
- client, err := services.GetThirdClientWithSecret(in.GetClientId(), in.GetClientSecret())
- if err != nil {
- return nil, err
- }
-
- var user models.Account
- if user, err = services.GetAccount(uint(in.GetRecipientId())); err != nil {
- return nil, err
- }
-
- var metadata map[string]any
- _ = jsoniter.Unmarshal(in.GetMetadata(), &metadata)
-
- links := lo.Map(in.GetLinks(), func(item *proto.NotifyLink, index int) models.NotificationLink {
- return models.NotificationLink{
- Label: item.Label,
- Url: item.Url,
- }
- })
-
- notification := models.Notification{
- Type: lo.Ternary(len(in.GetType()) > 0, in.GetType(), "common"),
- Subject: in.GetSubject(),
- Content: in.GetContent(),
- Metadata: metadata,
- Links: links,
- IsRealtime: in.GetIsRealtime(),
- IsForcePush: in.GetIsForcePush(),
- RecipientID: user.ID,
- SenderID: &client.ID,
- }
-
- if in.GetIsRealtime() {
- if err := services.PushNotification(notification); err != nil {
- return nil, err
- }
- } else {
- if err := services.NewNotification(notification); err != nil {
- return nil, err
- }
- }
-
- return &proto.NotifyReply{IsSent: true}, nil
-}
diff --git a/pkg/internal/grpc/realms.go b/pkg/internal/grpc/realms.go
index 345048b..a9d6e59 100644
--- a/pkg/internal/grpc/realms.go
+++ b/pkg/internal/grpc/realms.go
@@ -3,23 +3,22 @@ package grpc
import (
"context"
"fmt"
+ "git.solsynth.dev/hydrogen/dealer/pkg/proto"
"git.solsynth.dev/hydrogen/passport/pkg/internal/database"
"git.solsynth.dev/hydrogen/passport/pkg/internal/models"
"git.solsynth.dev/hydrogen/passport/pkg/internal/services"
- "git.solsynth.dev/hydrogen/passport/pkg/proto"
"github.com/samber/lo"
- "google.golang.org/protobuf/types/known/emptypb"
)
-func (v *Server) ListCommunityRealm(ctx context.Context, empty *emptypb.Empty) (*proto.ListRealmResponse, error) {
+func (v *Server) ListCommunityRealm(ctx context.Context, empty *proto.ListRealmRequest) (*proto.ListRealmResponse, error) {
realms, err := services.ListCommunityRealm()
if err != nil {
return nil, err
}
return &proto.ListRealmResponse{
- Data: lo.Map(realms, func(item models.Realm, index int) *proto.RealmResponse {
- return &proto.RealmResponse{
+ Data: lo.Map(realms, func(item models.Realm, index int) *proto.RealmInfo {
+ return &proto.RealmInfo{
Id: uint64(item.ID),
Alias: item.Alias,
Name: item.Name,
@@ -31,7 +30,7 @@ func (v *Server) ListCommunityRealm(ctx context.Context, empty *emptypb.Empty) (
}, nil
}
-func (v *Server) ListAvailableRealm(ctx context.Context, request *proto.RealmLookupWithUserRequest) (*proto.ListRealmResponse, error) {
+func (v *Server) ListAvailableRealm(ctx context.Context, request *proto.LookupUserRealmRequest) (*proto.ListRealmResponse, error) {
account, err := services.GetAccount(uint(request.GetUserId()))
if err != nil {
return nil, fmt.Errorf("unable to find target account: %v", err)
@@ -42,8 +41,8 @@ func (v *Server) ListAvailableRealm(ctx context.Context, request *proto.RealmLoo
}
return &proto.ListRealmResponse{
- Data: lo.Map(realms, func(item models.Realm, index int) *proto.RealmResponse {
- return &proto.RealmResponse{
+ Data: lo.Map(realms, func(item models.Realm, index int) *proto.RealmInfo {
+ return &proto.RealmInfo{
Id: uint64(item.ID),
Alias: item.Alias,
Name: item.Name,
@@ -55,7 +54,7 @@ func (v *Server) ListAvailableRealm(ctx context.Context, request *proto.RealmLoo
}, nil
}
-func (v *Server) ListOwnedRealm(ctx context.Context, request *proto.RealmLookupWithUserRequest) (*proto.ListRealmResponse, error) {
+func (v *Server) ListOwnedRealm(ctx context.Context, request *proto.LookupUserRealmRequest) (*proto.ListRealmResponse, error) {
account, err := services.GetAccount(uint(request.GetUserId()))
if err != nil {
return nil, fmt.Errorf("unable to find target account: %v", err)
@@ -66,8 +65,8 @@ func (v *Server) ListOwnedRealm(ctx context.Context, request *proto.RealmLookupW
}
return &proto.ListRealmResponse{
- Data: lo.Map(realms, func(item models.Realm, index int) *proto.RealmResponse {
- return &proto.RealmResponse{
+ Data: lo.Map(realms, func(item models.Realm, index int) *proto.RealmInfo {
+ return &proto.RealmInfo{
Id: uint64(item.ID),
Alias: item.Alias,
Name: item.Name,
@@ -79,7 +78,7 @@ func (v *Server) ListOwnedRealm(ctx context.Context, request *proto.RealmLookupW
}, nil
}
-func (v *Server) GetRealm(ctx context.Context, request *proto.RealmLookupRequest) (*proto.RealmResponse, error) {
+func (v *Server) GetRealm(ctx context.Context, request *proto.LookupRealmRequest) (*proto.RealmInfo, error) {
var realm models.Realm
tx := database.C.Model(&models.Realm{})
@@ -100,7 +99,7 @@ func (v *Server) GetRealm(ctx context.Context, request *proto.RealmLookupRequest
return nil, err
}
- return &proto.RealmResponse{
+ return &proto.RealmInfo{
Id: uint64(realm.ID),
Alias: realm.Alias,
Name: realm.Name,
@@ -122,8 +121,8 @@ func (v *Server) ListRealmMember(ctx context.Context, request *proto.RealmMember
}
return &proto.ListRealmMemberResponse{
- Data: lo.Map(members, func(item models.RealmMember, index int) *proto.RealmMemberResponse {
- return &proto.RealmMemberResponse{
+ Data: lo.Map(members, func(item models.RealmMember, index int) *proto.RealmMemberInfo {
+ return &proto.RealmMemberInfo{
RealmId: uint64(item.RealmID),
UserId: uint64(item.AccountID),
PowerLevel: int32(item.PowerLevel),
@@ -132,7 +131,7 @@ func (v *Server) ListRealmMember(ctx context.Context, request *proto.RealmMember
}, nil
}
-func (v *Server) GetRealmMember(ctx context.Context, request *proto.RealmMemberLookupRequest) (*proto.RealmMemberResponse, error) {
+func (v *Server) GetRealmMember(ctx context.Context, request *proto.RealmMemberLookupRequest) (*proto.RealmMemberInfo, error) {
var member models.RealmMember
tx := database.C.Where("realm_id = ?", request.GetRealmId())
if request.UserId != nil {
@@ -143,9 +142,26 @@ func (v *Server) GetRealmMember(ctx context.Context, request *proto.RealmMemberL
return nil, err
}
- return &proto.RealmMemberResponse{
+ return &proto.RealmMemberInfo{
RealmId: uint64(member.RealmID),
UserId: uint64(member.AccountID),
PowerLevel: int32(member.PowerLevel),
}, nil
}
+
+func (v *Server) CheckRealmMemberPerm(ctx context.Context, request *proto.CheckRealmPermRequest) (*proto.CheckRealmPermResponse, error) {
+ var member models.RealmMember
+ tx := database.C.
+ Where("realm_id = ?", request.GetRealmId()).
+ Where("account_id = ?", request.GetUserId())
+
+ if err := tx.First(&member).Error; err != nil {
+ return &proto.CheckRealmPermResponse{
+ IsSuccess: false,
+ }, nil
+ }
+
+ return &proto.CheckRealmPermResponse{
+ IsSuccess: member.PowerLevel >= int(request.GetPowerLevel()),
+ }, nil
+}
diff --git a/pkg/internal/grpc/server.go b/pkg/internal/grpc/server.go
index f143759..a156a3b 100644
--- a/pkg/internal/grpc/server.go
+++ b/pkg/internal/grpc/server.go
@@ -4,7 +4,7 @@ import (
"google.golang.org/grpc/reflection"
"net"
- "git.solsynth.dev/hydrogen/passport/pkg/proto"
+ "git.solsynth.dev/hydrogen/dealer/pkg/proto"
"github.com/spf13/viper"
"google.golang.org/grpc"
)
@@ -13,9 +13,8 @@ import health "google.golang.org/grpc/health/grpc_health_v1"
type Server struct {
proto.UnimplementedAuthServer
- proto.UnimplementedNotifyServer
- proto.UnimplementedFriendshipsServer
- proto.UnimplementedRealmsServer
+ proto.UnimplementedNotifierServer
+ proto.UnimplementedRealmServer
health.UnimplementedHealthServer
srv *grpc.Server
@@ -26,11 +25,10 @@ func NewServer() *Server {
srv: grpc.NewServer(),
}
- proto.RegisterAuthServer(server.srv, &Server{})
- proto.RegisterNotifyServer(server.srv, &Server{})
- proto.RegisterFriendshipsServer(server.srv, &Server{})
- proto.RegisterRealmsServer(server.srv, &Server{})
- health.RegisterHealthServer(server.srv, &Server{})
+ proto.RegisterAuthServer(server.srv, server)
+ proto.RegisterNotifierServer(server.srv, server)
+ proto.RegisterRealmServer(server.srv, server)
+ health.RegisterHealthServer(server.srv, server)
reflection.Register(server.srv)
diff --git a/pkg/internal/i18n/bundle.go b/pkg/internal/i18n/bundle.go
deleted file mode 100644
index fc1edcb..0000000
--- a/pkg/internal/i18n/bundle.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package i18n
-
-import (
- jsoniter "github.com/json-iterator/go"
- "github.com/nicksnyder/go-i18n/v2/i18n"
- "golang.org/x/text/language"
-)
-
-var Bundle *i18n.Bundle
-
-func InitInternationalization() {
- Bundle = i18n.NewBundle(language.English)
- Bundle.RegisterUnmarshalFunc("json", jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal)
- Bundle.LoadMessageFileFS(FS, "locale.en.json")
- Bundle.LoadMessageFileFS(FS, "locale.zh.json")
-}
diff --git a/pkg/internal/i18n/embed.go b/pkg/internal/i18n/embed.go
deleted file mode 100644
index 8f02e11..0000000
--- a/pkg/internal/i18n/embed.go
+++ /dev/null
@@ -1,6 +0,0 @@
-package i18n
-
-import "embed"
-
-//go:embed locale.*.json
-var FS embed.FS
diff --git a/pkg/internal/i18n/locale.en.json b/pkg/internal/i18n/locale.en.json
deleted file mode 100644
index ca7fb39..0000000
--- a/pkg/internal/i18n/locale.en.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "next": "Next",
- "email": "Email",
- "username": "Username",
- "nickname": "Nickname",
- "password": "Password",
- "unknown": "Unknown",
- "apply": "Apply",
- "back": "Back",
- "approve": "Approve",
- "decline": "Decline",
- "magicToken": "Magic Token",
- "signinTitle": "Sign In",
- "signinCaption": "Sign in to Solarpass to explore entire Solar Network. Explore posts, discover communities, talk with your best friends. All these things in the Solar Network!",
- "signinRequired": "You need to sign in before do that.",
- "signupTitle": "Sign Up",
- "signupCaption": "Sign up to create an account on Solarpass, then you can explore the entire Solar Network! Enjoy the next-generation Internet Ecosystem!",
- "authorizeTitle": "Authorize",
- "authorizeCaption": "One Solarpass, get entire network.",
- "mfaTitle": "Multi Factor Authenticate",
- "mfaCaption": "We need use one more way to verify it is you.",
- "mfaFactorEmail": "OTP through your email"
-}
\ No newline at end of file
diff --git a/pkg/internal/i18n/locale.zh.json b/pkg/internal/i18n/locale.zh.json
deleted file mode 100644
index 2e38ccb..0000000
--- a/pkg/internal/i18n/locale.zh.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "next": "下一步",
- "email": "邮件地址",
- "username": "用户名",
- "nickname": "昵称",
- "password": "密码",
- "unknown": "未知",
- "apply": "应用",
- "back": "返回",
- "approve": "接受",
- "decline": "拒绝",
- "magicToken": "魔法令牌",
- "signinTitle": "登陆",
- "signinCaption": "登陆 Solarpass 以探索整个 Solar Network,浏览帖子、探索社区、和你的好朋友聊八卦,一切尽在 Solar Network!",
- "signinRequired": "你需要在那之前登陆",
- "signupTitle": "注册",
- "signupCaption": "注册以在 Solarpass 创建一个账号,之后你就可以探索整个 Solar Network,享受下一代互联网生态系统!",
- "authorizeTitle": "授权",
- "authorizeCaption": "一个 Solarpass,整个网络。",
- "mfaTitle": "多因素验证",
- "mfaCaption": "我们需要另一个方法来确认你是你。",
- "mfaFactorEmail": "电子邮寄一次性验证码"
-}
diff --git a/pkg/internal/i18n/middleware.go b/pkg/internal/i18n/middleware.go
deleted file mode 100644
index 3e2d990..0000000
--- a/pkg/internal/i18n/middleware.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package i18n
-
-import (
- "github.com/gofiber/fiber/v2"
- "github.com/nicksnyder/go-i18n/v2/i18n"
-)
-
-func I18nMiddleware(c *fiber.Ctx) error {
- accept := c.Get(fiber.HeaderAcceptLanguage)
- localizer := i18n.NewLocalizer(Bundle, accept)
-
- c.Locals("localizer", localizer)
-
- return c.Next()
-}
diff --git a/pkg/internal/models/accounts.go b/pkg/internal/models/accounts.go
index cefd894..7f492c5 100644
--- a/pkg/internal/models/accounts.go
+++ b/pkg/internal/models/accounts.go
@@ -21,26 +21,25 @@ type Account struct {
SuspendedAt *time.Time `json:"suspended_at"`
PermNodes datatypes.JSONMap `json:"perm_nodes"`
- Profile AccountProfile `json:"profile"`
- Statuses []Status `json:"statuses"`
- Badges []Badge `json:"badges"`
+ Profile AccountProfile `json:"profile,omitempty"`
+ Contacts []AccountContact `json:"contacts,omitempty"`
+ Statuses []Status `json:"statuses,omitempty"`
+ Badges []Badge `json:"badges,omitempty"`
- Contacts []AccountContact `json:"contacts"`
- RealmIdentities []RealmMember `json:"realm_identities"`
+ Identities []RealmMember `json:"identities,omitempty"`
- Tickets []AuthTicket `json:"tickets"`
- Factors []AuthFactor `json:"factors"`
+ Tickets []AuthTicket `json:"tickets,omitempty"`
+ Factors []AuthFactor `json:"factors,omitempty"`
- Events []ActionEvent `json:"events"`
+ Events []ActionEvent `json:"events,omitempty"`
MagicTokens []MagicToken `json:"-"`
- ThirdClients []ThirdClient `json:"clients"`
+ ThirdClients []ThirdClient `json:"clients,omitempty"`
- Notifications []Notification `json:"notifications" gorm:"foreignKey:RecipientID"`
- NotifySubscribers []NotificationSubscriber `json:"notify_subscribers"`
+ Notifications []Notification `json:"notifications,omitempty"`
+ NotifySubscribers []NotificationSubscriber `json:"notify_subscribers,omitempty"`
- Friendships []AccountFriendship `json:"friendships" gorm:"foreignKey:AccountID"`
- RelatedFriendships []AccountFriendship `json:"related_friendships" gorm:"foreignKey:RelatedID"`
+ Relations []AccountRelationship `json:"relations,omitempty" gorm:"foreignKey:AccountID"`
}
func (v Account) GetAvatar() *string {
diff --git a/pkg/internal/models/clients.go b/pkg/internal/models/clients.go
index 7c2a1f7..c77070a 100644
--- a/pkg/internal/models/clients.go
+++ b/pkg/internal/models/clients.go
@@ -5,14 +5,12 @@ import "gorm.io/datatypes"
type ThirdClient struct {
BaseModel
- Alias string `json:"alias" gorm:"uniqueIndex"`
- Name string `json:"name"`
- Description string `json:"description"`
- Secret string `json:"secret"`
- Urls datatypes.JSONSlice[string] `json:"urls"`
- Callbacks datatypes.JSONSlice[string] `json:"callbacks"`
- Sessions []AuthTicket `json:"tickets" gorm:"foreignKey:ClientID"`
- Notifications []Notification `json:"notifications" gorm:"foreignKey:SenderID"`
- IsDraft bool `json:"is_draft"`
- AccountID *uint `json:"account_id"`
+ Alias string `json:"alias" gorm:"uniqueIndex"`
+ Name string `json:"name"`
+ Description string `json:"description"`
+ Secret string `json:"secret"`
+ Urls datatypes.JSONSlice[string] `json:"urls"`
+ Callbacks datatypes.JSONSlice[string] `json:"callbacks"`
+ IsDraft bool `json:"is_draft"`
+ AccountID *uint `json:"account_id"`
}
diff --git a/pkg/internal/models/friendships.go b/pkg/internal/models/friendships.go
deleted file mode 100644
index da5d1ca..0000000
--- a/pkg/internal/models/friendships.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package models
-
-type FriendshipStatus = int8
-
-const (
- FriendshipPending = FriendshipStatus(iota)
- FriendshipActive
- FriendshipBlocked
-)
-
-type AccountFriendship struct {
- BaseModel
-
- AccountID uint `json:"account_id"`
- RelatedID uint `json:"related_id"`
- BlockedBy *uint `json:"blocked_by"`
- Account Account `json:"account"`
- Related Account `json:"related"`
- Status FriendshipStatus `json:"status"`
-}
diff --git a/pkg/internal/models/notifications.go b/pkg/internal/models/notifications.go
index b3858d1..05d2832 100644
--- a/pkg/internal/models/notifications.go
+++ b/pkg/internal/models/notifications.go
@@ -7,15 +7,16 @@ import (
type Notification struct {
BaseModel
- Type string `json:"type"`
- Subject string `json:"subject"`
- Content string `json:"content"`
- Metadata datatypes.JSONMap `json:"metadata"`
- Links datatypes.JSONSlice[NotificationLink] `json:"links"`
- IsRealtime bool `json:"is_realtime" gorm:"-"`
- IsForcePush bool `json:"is_force_push" gorm:"-"`
- SenderID *uint `json:"sender_id"`
- RecipientID uint `json:"recipient_id"`
+ Topic string `json:"topic"`
+ Title string `json:"title"`
+ Subtitle *string `json:"subtitle"`
+ Body string `json:"body"`
+ Metadata datatypes.JSONMap `json:"metadata"`
+ AccountID uint `json:"account_id"`
+ SenderID *uint `json:"sender_id"`
+
+ IsRealtime bool `json:"is_realtime" gorm:"-"`
+ IsForcePush bool `json:"is_force_push" gorm:"-"`
}
// NotificationLink Used to embed into notify and render actions
diff --git a/pkg/internal/models/relationships.go b/pkg/internal/models/relationships.go
new file mode 100644
index 0000000..7884908
--- /dev/null
+++ b/pkg/internal/models/relationships.go
@@ -0,0 +1,22 @@
+package models
+
+import "gorm.io/datatypes"
+
+type RelationshipStatus = int8
+
+const (
+ RelationshipPending = RelationshipStatus(iota)
+ RelationshipFriend
+ RelationshipBlocked
+)
+
+type AccountRelationship struct {
+ BaseModel
+
+ AccountID uint `json:"account_id"`
+ RelatedID uint `json:"related_id"`
+ Account Account `json:"account"`
+ Related Account `json:"related"`
+ Status RelationshipStatus `json:"status"`
+ PermNodes datatypes.JSONMap `json:"perm_nodes"`
+}
diff --git a/pkg/internal/server/admin/notify_api.go b/pkg/internal/server/admin/notify_api.go
index 9c034e0..98e8e86 100644
--- a/pkg/internal/server/admin/notify_api.go
+++ b/pkg/internal/server/admin/notify_api.go
@@ -11,13 +11,13 @@ import (
func notifyAllUser(c *fiber.Ctx) error {
var data struct {
- Type string `json:"type" validate:"required"`
- Subject string `json:"subject" validate:"required,max=1024"`
- Content string `json:"content" validate:"required,max=4096"`
- Metadata map[string]any `json:"metadata"`
- Links []models.NotificationLink `json:"links"`
- IsForcePush bool `json:"is_force_push"`
- IsRealtime bool `json:"is_realtime"`
+ Topic string `json:"type" validate:"required"`
+ Title string `json:"subject" validate:"required,max=1024"`
+ Subtitle *string `json:"subtitle" validate:"max=1024"`
+ Body string `json:"content" validate:"required,max=4096"`
+ Metadata map[string]any `json:"metadata"`
+ IsForcePush bool `json:"is_force_push"`
+ IsRealtime bool `json:"is_realtime"`
}
if err := exts.BindAndValidate(c, &data); err != nil {
@@ -41,13 +41,13 @@ func notifyAllUser(c *fiber.Ctx) error {
go func() {
for _, user := range users {
notification := models.Notification{
- Type: data.Type,
- Subject: data.Subject,
- Content: data.Content,
- Links: data.Links,
+ Topic: data.Topic,
+ Subtitle: data.Subtitle,
+ Title: data.Title,
+ Body: data.Body,
IsRealtime: data.IsRealtime,
IsForcePush: data.IsForcePush,
- RecipientID: user.ID,
+ AccountID: user.ID,
}
if data.IsRealtime {
@@ -67,14 +67,14 @@ func notifyAllUser(c *fiber.Ctx) error {
func notifyOneUser(c *fiber.Ctx) error {
var data struct {
- Type string `json:"type" validate:"required"`
- Subject string `json:"subject" validate:"required,max=1024"`
- Content string `json:"content" validate:"required,max=4096"`
- Metadata map[string]any `json:"metadata"`
- Links []models.NotificationLink `json:"links"`
- IsForcePush bool `json:"is_force_push"`
- IsRealtime bool `json:"is_realtime"`
- UserID uint `json:"user_id"`
+ Topic string `json:"type" validate:"required"`
+ Title string `json:"subject" validate:"required,max=1024"`
+ Subtitle *string `json:"subtitle" validate:"max=1024"`
+ Body string `json:"content" validate:"required,max=4096"`
+ Metadata map[string]any `json:"metadata"`
+ IsForcePush bool `json:"is_force_push"`
+ IsRealtime bool `json:"is_realtime"`
+ UserID uint `json:"user_id" validate:"required"`
}
if err := exts.BindAndValidate(c, &data); err != nil {
@@ -97,13 +97,13 @@ func notifyOneUser(c *fiber.Ctx) error {
}
notification := models.Notification{
- Type: data.Type,
- Subject: data.Subject,
- Content: data.Content,
- Links: data.Links,
+ Topic: data.Topic,
+ Subtitle: data.Subtitle,
+ Title: data.Title,
+ Body: data.Body,
IsRealtime: data.IsRealtime,
IsForcePush: data.IsForcePush,
- RecipientID: user.ID,
+ AccountID: user.ID,
}
if data.IsRealtime {
diff --git a/pkg/internal/server/api/avatar_api.go b/pkg/internal/server/api/avatar_api.go
index 2d0be4f..e6105c6 100644
--- a/pkg/internal/server/api/avatar_api.go
+++ b/pkg/internal/server/api/avatar_api.go
@@ -3,6 +3,7 @@ package api
import (
"context"
"fmt"
+ "git.solsynth.dev/hydrogen/dealer/pkg/hyper"
"git.solsynth.dev/hydrogen/paperclip/pkg/proto"
"git.solsynth.dev/hydrogen/passport/pkg/internal/database"
"git.solsynth.dev/hydrogen/passport/pkg/internal/gap"
@@ -27,7 +28,7 @@ func setAvatar(c *fiber.Ctx) error {
return err
}
- pc, err := gap.DiscoverPaperclip()
+ pc, err := gap.H.GetServiceGrpcConn(hyper.ServiceTypeFileProvider)
if err != nil {
return fiber.NewError(fiber.StatusInternalServerError, "attachments services was not available")
}
@@ -63,7 +64,7 @@ func setBanner(c *fiber.Ctx) error {
return err
}
- pc, err := gap.DiscoverPaperclip()
+ pc, err := gap.H.GetServiceGrpcConn(hyper.ServiceTypeFileProvider)
if err != nil {
return fiber.NewError(fiber.StatusInternalServerError, "attachments services was not available")
}
diff --git a/pkg/internal/server/api/index.go b/pkg/internal/server/api/index.go
index 36af62d..a1dc76f 100644
--- a/pkg/internal/server/api/index.go
+++ b/pkg/internal/server/api/index.go
@@ -1,8 +1,6 @@
package api
import (
- "git.solsynth.dev/hydrogen/passport/pkg/internal/server/exts"
- "github.com/gofiber/contrib/websocket"
"github.com/gofiber/fiber/v2"
)
@@ -44,14 +42,14 @@ func MapAPIs(app *fiber.App) {
me.Put("/status", editStatus)
me.Delete("/status", clearStatus)
- friends := me.Group("/friends").Name("Friends")
+ friends := me.Group("/relations").Name("Relations")
{
- friends.Get("/", listFriendship)
- friends.Get("/:relatedId", getFriendship)
+ friends.Get("/", listRelationship)
+ friends.Get("/:relatedId", getRelationship)
friends.Post("/", makeFriendship)
friends.Post("/:relatedId", makeFriendship)
- friends.Put("/:relatedId", editFriendship)
- friends.Delete("/:relatedId", deleteFriendship)
+ friends.Put("/:relatedId", editRelationship)
+ friends.Delete("/:relatedId", deleteRelationship)
}
}
@@ -99,13 +97,6 @@ func MapAPIs(app *fiber.App) {
developers.Post("/notify", notifyUser)
}
- api.Use(func(c *fiber.Ctx) error {
- if err := exts.EnsureAuthenticated(c); err != nil {
- return err
- }
- return c.Next()
- }).Get("/ws", websocket.New(listenWebsocket))
-
api.All("/*", func(c *fiber.Ctx) error {
return fiber.ErrNotFound
})
diff --git a/pkg/internal/server/api/notifications_api.go b/pkg/internal/server/api/notifications_api.go
index 9c2bf6f..25a6e70 100644
--- a/pkg/internal/server/api/notifications_api.go
+++ b/pkg/internal/server/api/notifications_api.go
@@ -17,7 +17,7 @@ func getNotifications(c *fiber.Ctx) error {
}
user := c.Locals("user").(models.Account)
- tx := database.C.Where(&models.Notification{RecipientID: user.ID}).Model(&models.Notification{})
+ tx := database.C.Where(&models.Notification{AccountID: user.ID}).Model(&models.Notification{})
var count int64
var notifications []models.Notification
@@ -52,8 +52,8 @@ func markNotificationRead(c *fiber.Ctx) error {
var notify models.Notification
if err := database.C.Where(&models.Notification{
- BaseModel: models.BaseModel{ID: uint(id)},
- RecipientID: user.ID,
+ BaseModel: models.BaseModel{ID: uint(id)},
+ AccountID: user.ID,
}).First(¬ify).Error; err != nil {
return fiber.NewError(fiber.StatusNotFound, err.Error())
}
diff --git a/pkg/internal/server/api/notify_api.go b/pkg/internal/server/api/notify_api.go
index 680b9d0..89a3d48 100644
--- a/pkg/internal/server/api/notify_api.go
+++ b/pkg/internal/server/api/notify_api.go
@@ -9,16 +9,16 @@ import (
func notifyUser(c *fiber.Ctx) error {
var data struct {
- ClientID string `json:"client_id" validate:"required"`
- ClientSecret string `json:"client_secret" validate:"required"`
- Type string `json:"type" validate:"required"`
- Subject string `json:"subject" validate:"required,max=1024"`
- Content string `json:"content" validate:"required,max=4096"`
- Metadata map[string]any `json:"metadata"`
- Links []models.NotificationLink `json:"links"`
- IsForcePush bool `json:"is_force_push"`
- IsRealtime bool `json:"is_realtime"`
- UserID uint `json:"user_id" validate:"required"`
+ ClientID string `json:"client_id" validate:"required"`
+ ClientSecret string `json:"client_secret" validate:"required"`
+ Topic string `json:"type" validate:"required"`
+ Title string `json:"subject" validate:"required,max=1024"`
+ Subtitle *string `json:"subtitle" validate:"max=1024"`
+ Body string `json:"content" validate:"required,max=4096"`
+ Metadata map[string]any `json:"metadata"`
+ IsForcePush bool `json:"is_force_push"`
+ IsRealtime bool `json:"is_realtime"`
+ UserID uint `json:"user_id" validate:"required"`
}
if err := exts.BindAndValidate(c, &data); err != nil {
@@ -36,13 +36,13 @@ func notifyUser(c *fiber.Ctx) error {
}
notification := models.Notification{
- Type: data.Type,
- Subject: data.Subject,
- Content: data.Content,
- Links: data.Links,
+ Topic: data.Topic,
+ Subtitle: data.Subtitle,
+ Title: data.Title,
+ Body: data.Body,
IsRealtime: data.IsRealtime,
IsForcePush: data.IsForcePush,
- RecipientID: user.ID,
+ AccountID: user.ID,
SenderID: &client.ID,
}
diff --git a/pkg/internal/server/api/friendships_api.go b/pkg/internal/server/api/relationships_api.go
similarity index 71%
rename from pkg/internal/server/api/friendships_api.go
rename to pkg/internal/server/api/relationships_api.go
index d68482f..da3cece 100644
--- a/pkg/internal/server/api/friendships_api.go
+++ b/pkg/internal/server/api/relationships_api.go
@@ -7,7 +7,7 @@ import (
"github.com/gofiber/fiber/v2"
)
-func listFriendship(c *fiber.Ctx) error {
+func listRelationship(c *fiber.Ctx) error {
if err := exts.EnsureAuthenticated(c); err != nil {
return err
}
@@ -15,13 +15,13 @@ func listFriendship(c *fiber.Ctx) error {
status := c.QueryInt("status", -1)
var err error
- var friends []models.AccountFriendship
+ var friends []models.AccountRelationship
if status < 0 {
- if friends, err = services.ListAllFriend(user); err != nil {
+ if friends, err = services.ListAllRelationship(user); err != nil {
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
}
} else {
- if friends, err = services.ListFriend(user, models.FriendshipStatus(status)); err != nil {
+ if friends, err = services.ListRelationshipWithFilter(user, models.RelationshipStatus(status)); err != nil {
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
}
}
@@ -29,7 +29,7 @@ func listFriendship(c *fiber.Ctx) error {
return c.JSON(friends)
}
-func getFriendship(c *fiber.Ctx) error {
+func getRelationship(c *fiber.Ctx) error {
if err := exts.EnsureAuthenticated(c); err != nil {
return err
}
@@ -41,7 +41,7 @@ func getFriendship(c *fiber.Ctx) error {
return fiber.NewError(fiber.StatusNotFound, err.Error())
}
- if friend, err := services.GetFriendWithTwoSides(user.ID, related.ID); err != nil {
+ if friend, err := services.GetRelationWithTwoNode(user.ID, related.ID); err != nil {
return fiber.NewError(fiber.StatusNotFound, err.Error())
} else {
return c.JSON(friend)
@@ -72,7 +72,7 @@ func makeFriendship(c *fiber.Ctx) error {
return fiber.NewError(fiber.StatusBadRequest, "must one of username or user id")
}
- friend, err := services.NewFriend(user, related, models.FriendshipPending)
+ friend, err := services.NewFriend(user, related)
if err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
} else {
@@ -80,7 +80,7 @@ func makeFriendship(c *fiber.Ctx) error {
}
}
-func editFriendship(c *fiber.Ctx) error {
+func editRelationship(c *fiber.Ctx) error {
if err := exts.EnsureAuthenticated(c); err != nil {
return err
}
@@ -88,33 +88,30 @@ func editFriendship(c *fiber.Ctx) error {
relatedId, _ := c.ParamsInt("relatedId", 0)
var data struct {
- Status uint8 `json:"status"`
+ Status uint8 `json:"status"`
+ PermNodes map[string]any `json:"perm_nodes"`
}
if err := exts.BindAndValidate(c, &data); err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
}
- related, err := services.GetAccount(uint(relatedId))
- if err != nil {
- return fiber.NewError(fiber.StatusNotFound, err.Error())
- }
- friendship, err := services.GetFriendWithTwoSides(user.ID, related.ID)
+ relationship, err := services.GetRelationWithTwoNode(user.ID, uint(relatedId))
if err != nil {
return fiber.NewError(fiber.StatusNotFound, err.Error())
}
- originalStatus := friendship.Status
- friendship.Status = models.FriendshipStatus(data.Status)
+ relationship.Status = models.RelationshipStatus(data.Status)
+ relationship.PermNodes = data.PermNodes
- if friendship, err := services.EditFriendWithCheck(friendship, user, originalStatus); err != nil {
+ if friendship, err := services.EditRelationship(relationship); err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
} else {
return c.JSON(friendship)
}
}
-func deleteFriendship(c *fiber.Ctx) error {
+func deleteRelationship(c *fiber.Ctx) error {
if err := exts.EnsureAuthenticated(c); err != nil {
return err
}
@@ -125,14 +122,14 @@ func deleteFriendship(c *fiber.Ctx) error {
if err != nil {
return fiber.NewError(fiber.StatusNotFound, err.Error())
}
- friendship, err := services.GetFriendWithTwoSides(user.ID, related.ID)
+ relationship, err := services.GetRelationWithTwoNode(user.ID, related.ID)
if err != nil {
return fiber.NewError(fiber.StatusNotFound, err.Error())
}
- if err := services.DeleteFriend(friendship); err != nil {
+ if err := services.DeleteRelationship(relationship); err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
} else {
- return c.JSON(friendship)
+ return c.JSON(relationship)
}
}
diff --git a/pkg/internal/server/api/ws.go b/pkg/internal/server/api/ws.go
deleted file mode 100644
index 4ecf40f..0000000
--- a/pkg/internal/server/api/ws.go
+++ /dev/null
@@ -1,82 +0,0 @@
-package api
-
-import (
- "fmt"
- "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
- "git.solsynth.dev/hydrogen/passport/pkg/internal/services"
- "github.com/gofiber/contrib/websocket"
- jsoniter "github.com/json-iterator/go"
- "github.com/rs/zerolog/log"
- "github.com/samber/lo"
-)
-
-func listenWebsocket(c *websocket.Conn) {
- user := c.Locals("user").(models.Account)
-
- // Push connection
- services.ClientRegister(user, c)
- log.Debug().Uint("user", user.ID).Msg("New websocket connection established...")
-
- // Event loop
- var task models.UnifiedCommand
-
- var messageType int
- var payload []byte
- var packet []byte
- var err error
-
- for {
- if messageType, packet, err = c.ReadMessage(); err != nil {
- break
- } else if err := jsoniter.Unmarshal(packet, &task); err != nil {
- _ = c.WriteMessage(messageType, models.UnifiedCommand{
- Action: "error",
- Message: "unable to unmarshal your command, requires json request",
- }.Marshal())
- continue
- } else {
- payload, _ = jsoniter.Marshal(task.Payload)
- }
-
- var message *models.UnifiedCommand
- switch task.Action {
- case "kex.request":
- var req struct {
- RequestID string `json:"request_id"`
- KeypairID string `json:"keypair_id"`
- Algorithm string `json:"algorithm"`
- OwnerID uint `json:"owner_id"`
- Deadline int64 `json:"deadline"`
- }
- _ = jsoniter.Unmarshal(payload, &req)
- if len(req.RequestID) <= 0 || len(req.KeypairID) <= 0 || req.OwnerID <= 0 {
- message = lo.ToPtr(models.UnifiedCommandFromError(fmt.Errorf("invalid request")))
- }
- services.KexRequest(c, req.RequestID, req.KeypairID, req.Algorithm, req.OwnerID, req.Deadline)
- case "kex.provide":
- var req struct {
- RequestID string `json:"request_id"`
- KeypairID string `json:"keypair_id"`
- Algorithm string `json:"algorithm"`
- PublicKey []byte `json:"public_key"`
- }
- _ = jsoniter.Unmarshal(payload, &req)
- if len(req.RequestID) <= 0 || len(req.KeypairID) <= 0 {
- message = lo.ToPtr(models.UnifiedCommandFromError(fmt.Errorf("invalid request")))
- }
- services.KexProvide(user.ID, req.RequestID, req.KeypairID, packet)
- default:
- message = lo.ToPtr(models.UnifiedCommandFromError(fmt.Errorf("unknown action")))
- }
-
- if message != nil {
- if err = c.WriteMessage(messageType, message.Marshal()); err != nil {
- break
- }
- }
- }
-
- // Pop connection
- services.ClientUnregister(user, c)
- log.Debug().Uint("user", user.ID).Msg("A websocket connection disconnected...")
-}
diff --git a/pkg/internal/server/exts/auth.go b/pkg/internal/server/exts/auth.go
index 4d5241a..9c2de08 100644
--- a/pkg/internal/server/exts/auth.go
+++ b/pkg/internal/server/exts/auth.go
@@ -2,7 +2,7 @@ package exts
import (
"fmt"
- "git.solsynth.dev/hydrogen/passport/pkg/hyper"
+ "git.solsynth.dev/hydrogen/dealer/pkg/hyper"
"git.solsynth.dev/hydrogen/passport/pkg/internal/models"
"git.solsynth.dev/hydrogen/passport/pkg/internal/services"
"github.com/gofiber/fiber/v2"
diff --git a/pkg/internal/server/exts/cookies.go b/pkg/internal/server/exts/cookies.go
index 32afd7c..d8ccaf2 100644
--- a/pkg/internal/server/exts/cookies.go
+++ b/pkg/internal/server/exts/cookies.go
@@ -1,7 +1,7 @@
package exts
import (
- "git.solsynth.dev/hydrogen/passport/pkg/hyper"
+ "git.solsynth.dev/hydrogen/dealer/pkg/hyper"
"github.com/gofiber/fiber/v2"
"github.com/spf13/viper"
"time"
diff --git a/pkg/internal/server/server.go b/pkg/internal/server/server.go
index b95bdd5..d52a1b1 100644
--- a/pkg/internal/server/server.go
+++ b/pkg/internal/server/server.go
@@ -9,7 +9,6 @@ import (
"path/filepath"
"strings"
- "git.solsynth.dev/hydrogen/passport/pkg/internal/i18n"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/favicon"
@@ -59,7 +58,6 @@ func NewServer() *HTTPApp {
}))
app.Use(exts.AuthMiddleware)
- app.Use(i18n.I18nMiddleware)
admin.MapAdminAPIs(app)
api.MapAPIs(app)
diff --git a/pkg/internal/services/accounts.go b/pkg/internal/services/accounts.go
index 580da38..e6cbc38 100644
--- a/pkg/internal/services/accounts.go
+++ b/pkg/internal/services/accounts.go
@@ -209,7 +209,7 @@ func DeleteAccount(id uint) error {
&models.MagicToken{},
&models.ThirdClient{},
&models.NotificationSubscriber{},
- &models.AccountFriendship{},
+ &models.AccountRelationship{},
} {
if err := tx.Delete(model, "account_id = ?", id).Error; err != nil {
tx.Rollback()
diff --git a/pkg/internal/services/connections.go b/pkg/internal/services/connections.go
deleted file mode 100644
index 87484e9..0000000
--- a/pkg/internal/services/connections.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package services
-
-import (
- "sync"
-
- "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
- "github.com/gofiber/contrib/websocket"
-)
-
-var (
- wsMutex sync.Mutex
- wsConn = make(map[uint]map[*websocket.Conn]bool)
-)
-
-func ClientRegister(user models.Account, conn *websocket.Conn) {
- wsMutex.Lock()
- if wsConn[user.ID] == nil {
- wsConn[user.ID] = make(map[*websocket.Conn]bool)
- }
- wsConn[user.ID][conn] = true
- wsMutex.Unlock()
-}
-
-func ClientUnregister(user models.Account, conn *websocket.Conn) {
- wsMutex.Lock()
- if wsConn[user.ID] == nil {
- wsConn[user.ID] = make(map[*websocket.Conn]bool)
- }
- delete(wsConn[user.ID], conn)
- wsMutex.Unlock()
-
- if status, err := GetStatus(user.ID); err != nil || !status.IsInvisible {
- if len(wsConn[user.ID]) == 0 {
- _ = SetAccountLastSeen(user.ID)
- }
- }
-}
diff --git a/pkg/internal/services/e2ee.go b/pkg/internal/services/e2ee.go
deleted file mode 100644
index a119625..0000000
--- a/pkg/internal/services/e2ee.go
+++ /dev/null
@@ -1,82 +0,0 @@
-package services
-
-import (
- "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
- "github.com/gofiber/contrib/websocket"
- "github.com/gofiber/fiber/v2"
- "time"
-)
-
-type kexRequest struct {
- OwnerID uint
- Conn *websocket.Conn
- Deadline time.Time
-}
-
-var kexRequests = make(map[string]map[string]kexRequest)
-
-func KexRequest(conn *websocket.Conn, requestId, keypairId, algorithm string, ownerId uint, deadline int64) {
- if kexRequests[keypairId] == nil {
- kexRequests[keypairId] = make(map[string]kexRequest)
- }
-
- ddl := time.Now().Add(time.Second * time.Duration(deadline))
- request := kexRequest{
- OwnerID: ownerId,
- Conn: conn,
- Deadline: ddl,
- }
-
- flag := false
- for c := range wsConn[ownerId] {
- if c == conn {
- continue
- }
-
- if c.WriteMessage(1, models.UnifiedCommand{
- Action: "kex.request",
- Payload: fiber.Map{
- "request_id": requestId,
- "keypair_id": keypairId,
- "algorithm": algorithm,
- "owner_id": ownerId,
- "deadline": deadline,
- },
- }.Marshal()) == nil {
- flag = true
- }
- }
-
- if flag {
- kexRequests[keypairId][requestId] = request
- }
-}
-
-func KexProvide(userId uint, requestId, keypairId string, pkt []byte) {
- if kexRequests[keypairId] == nil {
- return
- }
-
- val, ok := kexRequests[keypairId][requestId]
- if !ok {
- return
- } else if val.OwnerID != userId {
- return
- } else {
- _ = val.Conn.WriteMessage(1, pkt)
- }
-}
-
-func KexCleanup() {
- if len(kexRequests) <= 0 {
- return
- }
-
- for kp, data := range kexRequests {
- for idx, req := range data {
- if req.Deadline.Unix() <= time.Now().Unix() {
- delete(kexRequests[kp], idx)
- }
- }
- }
-}
diff --git a/pkg/internal/services/friendships.go b/pkg/internal/services/friendships.go
deleted file mode 100644
index 89d0385..0000000
--- a/pkg/internal/services/friendships.go
+++ /dev/null
@@ -1,125 +0,0 @@
-package services
-
-import (
- "errors"
- "fmt"
-
- "git.solsynth.dev/hydrogen/passport/pkg/internal/database"
- "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
- "gorm.io/gorm"
-)
-
-func ListAllFriend(anyside models.Account) ([]models.AccountFriendship, error) {
- var relationships []models.AccountFriendship
- if err := database.C.
- Where("account_id = ? OR related_id = ?", anyside.ID, anyside.ID).
- Preload("Account").
- Preload("Related").
- Find(&relationships).Error; err != nil {
- return relationships, err
- }
-
- return relationships, nil
-}
-
-func ListFriend(anyside models.Account, status models.FriendshipStatus) ([]models.AccountFriendship, error) {
- var relationships []models.AccountFriendship
- if err := database.C.
- Where("(account_id = ? OR related_id = ?) AND status = ?", anyside.ID, anyside.ID, status).
- Preload("Account").
- Preload("Related").
- Find(&relationships).Error; err != nil {
- return relationships, err
- }
-
- return relationships, nil
-}
-
-func GetFriend(anysideId uint) (models.AccountFriendship, error) {
- var relationship models.AccountFriendship
- if err := database.C.
- Where(&models.AccountFriendship{AccountID: anysideId}).
- Or(&models.AccountFriendship{RelatedID: anysideId}).
- Preload("Account").
- Preload("Related").
- First(&relationship).Error; err != nil {
- return relationship, err
- }
-
- return relationship, nil
-}
-
-func GetFriendWithTwoSides(userId, relatedId uint, noPreload ...bool) (models.AccountFriendship, error) {
- var tx *gorm.DB
- if len(noPreload) > 0 && noPreload[0] {
- tx = database.C
- } else {
- tx = database.C.Preload("Account").Preload("Related")
- }
-
- var relationship models.AccountFriendship
- if err := tx.
- Where(&models.AccountFriendship{AccountID: userId, RelatedID: relatedId}).
- Or(&models.AccountFriendship{RelatedID: userId, AccountID: relatedId}).
- First(&relationship).Error; err != nil {
- return relationship, err
- }
-
- return relationship, nil
-}
-
-func NewFriend(user models.Account, related models.Account, status models.FriendshipStatus) (models.AccountFriendship, error) {
- relationship := models.AccountFriendship{
- AccountID: user.ID,
- RelatedID: related.ID,
- Status: status,
- }
-
- if user.ID == related.ID {
- return relationship, fmt.Errorf("you cannot make friendship with yourself")
- } else if _, err := GetFriendWithTwoSides(user.ID, related.ID, true); err == nil || !errors.Is(err, gorm.ErrRecordNotFound) {
- return relationship, fmt.Errorf("you already have a friendship with him or her")
- }
-
- if err := database.C.Save(&relationship).Error; err != nil {
- return relationship, err
- } else {
- _ = NewNotification(models.Notification{
- Subject: fmt.Sprintf("New friend request from %s", user.Name),
- Content: fmt.Sprintf("You got a new friend request from %s. Go to your settings and decide how to deal it.", user.Nick),
- RecipientID: related.ID,
- })
- }
-
- return relationship, nil
-}
-
-func EditFriendWithCheck(relationship models.AccountFriendship, user models.Account, originalStatus models.FriendshipStatus) (models.AccountFriendship, error) {
- if relationship.Status != originalStatus {
- if originalStatus == models.FriendshipBlocked && relationship.BlockedBy != nil && user.ID != *relationship.BlockedBy {
- return relationship, fmt.Errorf("the friendship has been blocked by the otherside, you cannot modify it status")
- }
- if relationship.Status == models.FriendshipPending && relationship.RelatedID != user.ID {
- return relationship, fmt.Errorf("only related person can accept friendship")
- }
- }
- if originalStatus != models.FriendshipBlocked && relationship.Status == models.FriendshipBlocked {
- relationship.BlockedBy = &user.ID
- }
-
- return EditFriend(relationship)
-}
-
-func EditFriend(relationship models.AccountFriendship) (models.AccountFriendship, error) {
- if err := database.C.Save(&relationship).Error; err != nil {
- return relationship, err
- }
- return relationship, nil
-}
-
-func DeleteFriend(relationship models.AccountFriendship) error {
- if err := database.C.Delete(&relationship).Error; err != nil {
- return err
- }
- return nil
-}
diff --git a/pkg/internal/services/notifications.go b/pkg/internal/services/notifications.go
index 61ad21f..ba70bc3 100644
--- a/pkg/internal/services/notifications.go
+++ b/pkg/internal/services/notifications.go
@@ -2,7 +2,11 @@ package services
import (
"context"
+ "fmt"
+ "git.solsynth.dev/hydrogen/dealer/pkg/proto"
+ "git.solsynth.dev/hydrogen/passport/pkg/internal/gap"
"reflect"
+ "time"
"firebase.google.com/go/messaging"
"git.solsynth.dev/hydrogen/passport/pkg/internal/database"
@@ -56,25 +60,33 @@ func NewNotification(notification models.Notification) error {
return nil
}
-// PushNotification will push the notification what ever it is exists record in the database
-// Recommend push another goroutine when you need to push a lot of notification
-// And just use block statement when you just push one notification, the time of create a new sub-process is much more than push notification
+// PushNotification will push the notification whatever it exists record in the
+// database Recommend pushing another goroutine when you need to push a lot of
+// notifications And just use a block statement when you just push one
+// notification.
+// The time of creating a new subprocess is much more than push notification.
func PushNotification(notification models.Notification) error {
- for conn := range wsConn[notification.RecipientID] {
- _ = conn.WriteMessage(1, models.UnifiedCommand{
+ ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
+ defer cancel()
+ _, err := proto.NewStreamControllerClient(gap.H.GetDealerGrpcConn()).PushStream(ctx, &proto.PushStreamRequest{
+ UserId: uint64(notification.AccountID),
+ Body: models.UnifiedCommand{
Action: "notifications.new",
Payload: notification,
- }.Marshal())
+ }.Marshal(),
+ })
+ if err != nil {
+ return fmt.Errorf("failed to push via websocket: %v", err)
}
// Skip push notification
- if GetStatusDisturbable(notification.RecipientID) != nil {
+ if GetStatusDisturbable(notification.AccountID) != nil {
return nil
}
var subscribers []models.NotificationSubscriber
if err := database.C.Where(&models.NotificationSubscriber{
- AccountID: notification.RecipientID,
+ AccountID: notification.AccountID,
}).Find(&subscribers).Error; err != nil {
return err
}
@@ -92,8 +104,8 @@ func PushNotification(notification models.Notification) error {
message := &messaging.Message{
Notification: &messaging.Notification{
- Title: notification.Subject,
- Body: notification.Content,
+ Title: notification.Title,
+ Body: notification.Body,
},
Token: subscriber.DeviceToken,
}
@@ -111,10 +123,10 @@ func PushNotification(notification models.Notification) error {
if ExtAPNS != nil {
data, err := payload2.
NewPayload().
- AlertTitle(notification.Subject).
- AlertBody(notification.Content).
+ AlertTitle(notification.Title).
+ AlertBody(notification.Body).
Sound("default").
- Category(notification.Type).
+ Category(notification.Topic).
MarshalJSON()
if err != nil {
log.Warn().Err(err).Msg("An error occurred when preparing to notify subscriber via APNs...")
diff --git a/pkg/internal/services/perms.go b/pkg/internal/services/perms.go
index 0ea3316..55ebb1e 100644
--- a/pkg/internal/services/perms.go
+++ b/pkg/internal/services/perms.go
@@ -14,6 +14,13 @@ func HasPermNode(perms map[string]any, requiredKey string, requiredValue any) bo
return false
}
+func HasPermNodeWithDefault(perms map[string]any, requiredKey string, requiredValue any, defaultValue any) bool {
+ if heldValue, ok := perms[requiredKey]; ok {
+ return ComparePermNode(heldValue, requiredValue)
+ }
+ return ComparePermNode(defaultValue, requiredValue)
+}
+
func ComparePermNode(held any, required any) bool {
heldValue := reflect.ValueOf(held)
requiredValue := reflect.ValueOf(required)
diff --git a/pkg/internal/services/realms.go b/pkg/internal/services/realms.go
index 46b81da..5a894e9 100644
--- a/pkg/internal/services/realms.go
+++ b/pkg/internal/services/realms.go
@@ -97,9 +97,14 @@ func AddRealmMember(user models.Account, affected models.Account, target models.
} else if member.PowerLevel < 50 {
return fmt.Errorf("only realm moderator can add people")
}
- friendship, err := GetFriendWithTwoSides(affected.ID, user.ID)
- if err != nil || friendship.Status != models.FriendshipActive {
- return fmt.Errorf("you only can add your friends to your realm")
+ rel, err := GetRelationWithTwoNode(affected.ID, user.ID)
+ if err != nil || HasPermNodeWithDefault(
+ rel.PermNodes,
+ "RealmAdd",
+ true,
+ rel.Status == models.RelationshipFriend,
+ ) {
+ return fmt.Errorf("you unable to add this user to your realm")
}
}
diff --git a/pkg/internal/services/relationships.go b/pkg/internal/services/relationships.go
new file mode 100644
index 0000000..200d57e
--- /dev/null
+++ b/pkg/internal/services/relationships.go
@@ -0,0 +1,118 @@
+package services
+
+import (
+ "errors"
+ "fmt"
+
+ "git.solsynth.dev/hydrogen/passport/pkg/internal/database"
+ "git.solsynth.dev/hydrogen/passport/pkg/internal/models"
+ "gorm.io/gorm"
+)
+
+func ListAllRelationship(user models.Account) ([]models.AccountRelationship, error) {
+ var relationships []models.AccountRelationship
+ if err := database.C.
+ Where("account_id = ?", user.ID).
+ Preload("Account").
+ Preload("Related").
+ Find(&relationships).Error; err != nil {
+ return relationships, err
+ }
+
+ return relationships, nil
+}
+
+func ListRelationshipWithFilter(user models.Account, status models.RelationshipStatus) ([]models.AccountRelationship, error) {
+ var relationships []models.AccountRelationship
+ if err := database.C.
+ Where("account_id = ? AND status = ?", user.ID, status).
+ Preload("Account").
+ Preload("Related").
+ Find(&relationships).Error; err != nil {
+ return relationships, err
+ }
+
+ return relationships, nil
+}
+
+func GetRelationship(otherId uint) (models.AccountRelationship, error) {
+ var relationship models.AccountRelationship
+ if err := database.C.
+ Where(&models.AccountRelationship{AccountID: otherId}).
+ Preload("Account").
+ Preload("Related").
+ First(&relationship).Error; err != nil {
+ return relationship, err
+ }
+
+ return relationship, nil
+}
+
+func GetRelationWithTwoNode(userId, relatedId uint, noPreload ...bool) (models.AccountRelationship, error) {
+ var tx *gorm.DB
+ if len(noPreload) > 0 && noPreload[0] {
+ tx = database.C
+ } else {
+ tx = database.C.Preload("Account").Preload("Related")
+ }
+
+ var relationship models.AccountRelationship
+ if err := tx.
+ Where(&models.AccountRelationship{AccountID: userId, RelatedID: relatedId}).
+ First(&relationship).Error; err != nil {
+ return relationship, err
+ }
+
+ return relationship, nil
+}
+
+func NewFriend(userA models.Account, userB models.Account, skipPending ...bool) (models.AccountRelationship, error) {
+ relA := models.AccountRelationship{
+ AccountID: userA.ID,
+ RelatedID: userB.ID,
+ Status: models.RelationshipFriend,
+ }
+ relB := models.AccountRelationship{
+ AccountID: userB.ID,
+ RelatedID: userA.ID,
+ Status: models.RelationshipPending,
+ }
+
+ if len(skipPending) > 0 && skipPending[0] {
+ relB.Status = models.RelationshipFriend
+ }
+
+ if userA.ID == userB.ID {
+ return relA, fmt.Errorf("you cannot make friendship with yourself")
+ } else if _, err := GetRelationWithTwoNode(userA.ID, userB.ID, true); err == nil || !errors.Is(err, gorm.ErrRecordNotFound) {
+ return relA, fmt.Errorf("you already have a friendship with him or her")
+ }
+
+ if err := database.C.Save(&relA).Error; err != nil {
+ return relA, err
+ } else if err = database.C.Save(&relB).Error; err != nil {
+ return relA, err
+ } else {
+ _ = NewNotification(models.Notification{
+ Title: fmt.Sprintf("New friend request from %s", userA.Name),
+ Body: fmt.Sprintf("You got a new friend request from %s. Go to your settings and decide how to deal it.", userA.Nick),
+ AccountID: userB.ID,
+ })
+ }
+
+ return relA, nil
+}
+
+func EditRelationship(relationship models.AccountRelationship) (models.AccountRelationship, error) {
+ if err := database.C.Save(&relationship).Error; err != nil {
+ return relationship, err
+ }
+ return relationship, nil
+}
+
+func DeleteRelationship(relationship models.AccountRelationship) error {
+ if err := database.C.Delete(&relationship).Error; err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/pkg/internal/services/statuses.go b/pkg/internal/services/statuses.go
index 813ac3a..cc9f90b 100644
--- a/pkg/internal/services/statuses.go
+++ b/pkg/internal/services/statuses.go
@@ -1,7 +1,10 @@
package services
import (
+ "context"
"fmt"
+ "git.solsynth.dev/hydrogen/dealer/pkg/proto"
+ "git.solsynth.dev/hydrogen/passport/pkg/internal/gap"
"time"
"git.solsynth.dev/hydrogen/passport/pkg/internal/database"
@@ -32,7 +35,16 @@ func GetStatus(uid uint) (models.Status, error) {
}
func GetUserOnline(uid uint) bool {
- return wsConn[uid] != nil && len(wsConn[uid]) > 0
+ pc := proto.NewStreamControllerClient(gap.H.GetDealerGrpcConn())
+ ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
+ defer cancel()
+ resp, err := pc.CountStreamConnection(ctx, &proto.CountConnectionRequest{
+ UserId: uint64(uid),
+ })
+ if err != nil {
+ return false
+ }
+ return resp.Count > 0
}
func GetStatusDisturbable(uid uint) error {
@@ -49,7 +61,7 @@ func GetStatusDisturbable(uid uint) error {
func GetStatusOnline(uid uint) error {
status, err := GetStatus(uid)
- isOnline := wsConn[uid] != nil && len(wsConn[uid]) > 0
+ isOnline := GetUserOnline(uid)
if isOnline && err != nil {
return nil
} else if err == nil && status.IsInvisible {
diff --git a/pkg/main.go b/pkg/main.go
index d44e178..2e920df 100644
--- a/pkg/main.go
+++ b/pkg/main.go
@@ -7,8 +7,6 @@ import (
"os/signal"
"syscall"
- "git.solsynth.dev/hydrogen/passport/pkg/internal/i18n"
-
"git.solsynth.dev/hydrogen/passport/pkg/internal/grpc"
"git.solsynth.dev/hydrogen/passport/pkg/internal/server"
"git.solsynth.dev/hydrogen/passport/pkg/internal/services"
@@ -37,8 +35,6 @@ func main() {
log.Panic().Err(err).Msg("An error occurred when loading settings.")
}
- i18n.InitInternationalization()
-
// Connect to database
if err := database.NewGorm(); err != nil {
log.Fatal().Err(err).Msg("An error occurred when connect to database.")
@@ -47,7 +43,7 @@ func main() {
}
// Connect other services
- if err := gap.Register(); err != nil {
+ if err := gap.RegisterService(); err != nil {
log.Error().Err(err).Msg("An error occurred when registering service to gateway...")
}
if err := services.SetupFirebase(); err != nil {
@@ -69,7 +65,6 @@ func main() {
quartz.AddFunc("@every 60m", services.DoAutoDatabaseCleanup)
quartz.AddFunc("@every 60s", services.RecycleAuthContext)
quartz.AddFunc("@every 60m", services.RecycleUnConfirmAccount)
- quartz.AddFunc("@every 5m", services.KexCleanup)
quartz.AddFunc("@every 60s", services.SaveEventChanges)
quartz.Start()
diff --git a/pkg/proto/auth.pb.go b/pkg/proto/auth.pb.go
deleted file mode 100644
index a102b24..0000000
--- a/pkg/proto/auth.pb.go
+++ /dev/null
@@ -1,554 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: auth.proto
-
-package proto
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type Userinfo struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Nick string `protobuf:"bytes,3,opt,name=nick,proto3" json:"nick,omitempty"`
- Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"`
- Avatar string `protobuf:"bytes,5,opt,name=avatar,proto3" json:"avatar,omitempty"`
- Banner string `protobuf:"bytes,6,opt,name=banner,proto3" json:"banner,omitempty"`
- Description *string `protobuf:"bytes,7,opt,name=description,proto3,oneof" json:"description,omitempty"`
-}
-
-func (x *Userinfo) Reset() {
- *x = Userinfo{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *Userinfo) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Userinfo) ProtoMessage() {}
-
-func (x *Userinfo) ProtoReflect() protoreflect.Message {
- mi := &file_auth_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use Userinfo.ProtoReflect.Descriptor instead.
-func (*Userinfo) Descriptor() ([]byte, []int) {
- return file_auth_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Userinfo) GetId() uint64 {
- if x != nil {
- return x.Id
- }
- return 0
-}
-
-func (x *Userinfo) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *Userinfo) GetNick() string {
- if x != nil {
- return x.Nick
- }
- return ""
-}
-
-func (x *Userinfo) GetEmail() string {
- if x != nil {
- return x.Email
- }
- return ""
-}
-
-func (x *Userinfo) GetAvatar() string {
- if x != nil {
- return x.Avatar
- }
- return ""
-}
-
-func (x *Userinfo) GetBanner() string {
- if x != nil {
- return x.Banner
- }
- return ""
-}
-
-func (x *Userinfo) GetDescription() string {
- if x != nil && x.Description != nil {
- return *x.Description
- }
- return ""
-}
-
-type AuthRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"`
- RefreshToken *string `protobuf:"bytes,2,opt,name=refresh_token,json=refreshToken,proto3,oneof" json:"refresh_token,omitempty"`
-}
-
-func (x *AuthRequest) Reset() {
- *x = AuthRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AuthRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AuthRequest) ProtoMessage() {}
-
-func (x *AuthRequest) ProtoReflect() protoreflect.Message {
- mi := &file_auth_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AuthRequest.ProtoReflect.Descriptor instead.
-func (*AuthRequest) Descriptor() ([]byte, []int) {
- return file_auth_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *AuthRequest) GetAccessToken() string {
- if x != nil {
- return x.AccessToken
- }
- return ""
-}
-
-func (x *AuthRequest) GetRefreshToken() string {
- if x != nil && x.RefreshToken != nil {
- return *x.RefreshToken
- }
- return ""
-}
-
-type AuthReply struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- IsValid bool `protobuf:"varint,1,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"`
- AccessToken *string `protobuf:"bytes,2,opt,name=access_token,json=accessToken,proto3,oneof" json:"access_token,omitempty"`
- RefreshToken *string `protobuf:"bytes,3,opt,name=refresh_token,json=refreshToken,proto3,oneof" json:"refresh_token,omitempty"`
- Userinfo *Userinfo `protobuf:"bytes,4,opt,name=userinfo,proto3,oneof" json:"userinfo,omitempty"`
- Permissions []byte `protobuf:"bytes,5,opt,name=permissions,proto3,oneof" json:"permissions,omitempty"`
- TicketId *uint64 `protobuf:"varint,6,opt,name=ticket_id,json=ticketId,proto3,oneof" json:"ticket_id,omitempty"`
-}
-
-func (x *AuthReply) Reset() {
- *x = AuthReply{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *AuthReply) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AuthReply) ProtoMessage() {}
-
-func (x *AuthReply) ProtoReflect() protoreflect.Message {
- mi := &file_auth_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use AuthReply.ProtoReflect.Descriptor instead.
-func (*AuthReply) Descriptor() ([]byte, []int) {
- return file_auth_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *AuthReply) GetIsValid() bool {
- if x != nil {
- return x.IsValid
- }
- return false
-}
-
-func (x *AuthReply) GetAccessToken() string {
- if x != nil && x.AccessToken != nil {
- return *x.AccessToken
- }
- return ""
-}
-
-func (x *AuthReply) GetRefreshToken() string {
- if x != nil && x.RefreshToken != nil {
- return *x.RefreshToken
- }
- return ""
-}
-
-func (x *AuthReply) GetUserinfo() *Userinfo {
- if x != nil {
- return x.Userinfo
- }
- return nil
-}
-
-func (x *AuthReply) GetPermissions() []byte {
- if x != nil {
- return x.Permissions
- }
- return nil
-}
-
-func (x *AuthReply) GetTicketId() uint64 {
- if x != nil && x.TicketId != nil {
- return *x.TicketId
- }
- return 0
-}
-
-type CheckPermRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
- Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
- Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *CheckPermRequest) Reset() {
- *x = CheckPermRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CheckPermRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CheckPermRequest) ProtoMessage() {}
-
-func (x *CheckPermRequest) ProtoReflect() protoreflect.Message {
- mi := &file_auth_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CheckPermRequest.ProtoReflect.Descriptor instead.
-func (*CheckPermRequest) Descriptor() ([]byte, []int) {
- return file_auth_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *CheckPermRequest) GetToken() string {
- if x != nil {
- return x.Token
- }
- return ""
-}
-
-func (x *CheckPermRequest) GetKey() string {
- if x != nil {
- return x.Key
- }
- return ""
-}
-
-func (x *CheckPermRequest) GetValue() []byte {
- if x != nil {
- return x.Value
- }
- return nil
-}
-
-type CheckPermReply struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- IsValid bool `protobuf:"varint,1,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"`
-}
-
-func (x *CheckPermReply) Reset() {
- *x = CheckPermReply{}
- if protoimpl.UnsafeEnabled {
- mi := &file_auth_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *CheckPermReply) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CheckPermReply) ProtoMessage() {}
-
-func (x *CheckPermReply) ProtoReflect() protoreflect.Message {
- mi := &file_auth_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use CheckPermReply.ProtoReflect.Descriptor instead.
-func (*CheckPermReply) Descriptor() ([]byte, []int) {
- return file_auth_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *CheckPermReply) GetIsValid() bool {
- if x != nil {
- return x.IsValid
- }
- return false
-}
-
-var File_auth_proto protoreflect.FileDescriptor
-
-var file_auth_proto_rawDesc = []byte{
- 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x22, 0xbf, 0x01, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f,
- 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69,
- 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16,
- 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x25,
- 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x0b, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74,
- 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65,
- 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65,
- 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01,
- 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x6f,
- 0x6b, 0x65, 0x6e, 0x22, 0xc1, 0x02, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6c,
- 0x79, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0c,
- 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65,
- 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f,
- 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x72,
- 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30,
- 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66,
- 0x6f, 0x48, 0x02, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01,
- 0x12, 0x25, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x03, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
- 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x69, 0x63, 0x6b, 0x65,
- 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x08, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x63,
- 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72,
- 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09,
- 0x5f, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x65,
- 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x69,
- 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x50, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b,
- 0x50, 0x65, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74,
- 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65,
- 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2b, 0x0a, 0x0e, 0x43, 0x68, 0x65,
- 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x69,
- 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69,
- 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x32, 0x7d, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x36,
- 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x12,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x52,
- 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50,
- 0x65, 0x72, 0x6d, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x65, 0x63,
- 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x52, 0x65,
- 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_auth_proto_rawDescOnce sync.Once
- file_auth_proto_rawDescData = file_auth_proto_rawDesc
-)
-
-func file_auth_proto_rawDescGZIP() []byte {
- file_auth_proto_rawDescOnce.Do(func() {
- file_auth_proto_rawDescData = protoimpl.X.CompressGZIP(file_auth_proto_rawDescData)
- })
- return file_auth_proto_rawDescData
-}
-
-var file_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_auth_proto_goTypes = []interface{}{
- (*Userinfo)(nil), // 0: proto.Userinfo
- (*AuthRequest)(nil), // 1: proto.AuthRequest
- (*AuthReply)(nil), // 2: proto.AuthReply
- (*CheckPermRequest)(nil), // 3: proto.CheckPermRequest
- (*CheckPermReply)(nil), // 4: proto.CheckPermReply
-}
-var file_auth_proto_depIdxs = []int32{
- 0, // 0: proto.AuthReply.userinfo:type_name -> proto.Userinfo
- 1, // 1: proto.Auth.Authenticate:input_type -> proto.AuthRequest
- 3, // 2: proto.Auth.CheckPerm:input_type -> proto.CheckPermRequest
- 2, // 3: proto.Auth.Authenticate:output_type -> proto.AuthReply
- 4, // 4: proto.Auth.CheckPerm:output_type -> proto.CheckPermReply
- 3, // [3:5] is the sub-list for method output_type
- 1, // [1:3] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_auth_proto_init() }
-func file_auth_proto_init() {
- if File_auth_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_auth_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Userinfo); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_auth_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AuthRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_auth_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AuthReply); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_auth_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CheckPermRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_auth_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CheckPermReply); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_auth_proto_msgTypes[0].OneofWrappers = []interface{}{}
- file_auth_proto_msgTypes[1].OneofWrappers = []interface{}{}
- file_auth_proto_msgTypes[2].OneofWrappers = []interface{}{}
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_auth_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 5,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_auth_proto_goTypes,
- DependencyIndexes: file_auth_proto_depIdxs,
- MessageInfos: file_auth_proto_msgTypes,
- }.Build()
- File_auth_proto = out.File
- file_auth_proto_rawDesc = nil
- file_auth_proto_goTypes = nil
- file_auth_proto_depIdxs = nil
-}
diff --git a/pkg/proto/auth.proto b/pkg/proto/auth.proto
deleted file mode 100644
index 94c8169..0000000
--- a/pkg/proto/auth.proto
+++ /dev/null
@@ -1,44 +0,0 @@
-syntax = "proto3";
-
-option go_package = ".;proto";
-
-package proto;
-
-service Auth {
- rpc Authenticate(AuthRequest) returns (AuthReply) {}
- rpc CheckPerm(CheckPermRequest) returns (CheckPermReply) {}
-}
-
-message Userinfo {
- uint64 id = 1;
- string name = 2;
- string nick = 3;
- string email = 4;
- string avatar = 5;
- string banner = 6;
- optional string description = 7;
-}
-
-message AuthRequest {
- string access_token = 1;
- optional string refresh_token = 2;
-}
-
-message AuthReply {
- bool is_valid = 1;
- optional string access_token = 2;
- optional string refresh_token = 3;
- optional Userinfo userinfo = 4;
- optional bytes permissions = 5;
- optional uint64 ticket_id = 6;
-}
-
-message CheckPermRequest {
- string token = 1;
- string key = 2;
- bytes value = 3;
-}
-
-message CheckPermReply {
- bool is_valid = 1;
-}
\ No newline at end of file
diff --git a/pkg/proto/auth_grpc.pb.go b/pkg/proto/auth_grpc.pb.go
deleted file mode 100644
index cce3c8d..0000000
--- a/pkg/proto/auth_grpc.pb.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: auth.proto
-
-package proto
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Auth_Authenticate_FullMethodName = "/proto.Auth/Authenticate"
- Auth_CheckPerm_FullMethodName = "/proto.Auth/CheckPerm"
-)
-
-// AuthClient is the client API for Auth service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type AuthClient interface {
- Authenticate(ctx context.Context, in *AuthRequest, opts ...grpc.CallOption) (*AuthReply, error)
- CheckPerm(ctx context.Context, in *CheckPermRequest, opts ...grpc.CallOption) (*CheckPermReply, error)
-}
-
-type authClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewAuthClient(cc grpc.ClientConnInterface) AuthClient {
- return &authClient{cc}
-}
-
-func (c *authClient) Authenticate(ctx context.Context, in *AuthRequest, opts ...grpc.CallOption) (*AuthReply, error) {
- out := new(AuthReply)
- err := c.cc.Invoke(ctx, Auth_Authenticate_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *authClient) CheckPerm(ctx context.Context, in *CheckPermRequest, opts ...grpc.CallOption) (*CheckPermReply, error) {
- out := new(CheckPermReply)
- err := c.cc.Invoke(ctx, Auth_CheckPerm_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// AuthServer is the server API for Auth service.
-// All implementations must embed UnimplementedAuthServer
-// for forward compatibility
-type AuthServer interface {
- Authenticate(context.Context, *AuthRequest) (*AuthReply, error)
- CheckPerm(context.Context, *CheckPermRequest) (*CheckPermReply, error)
- mustEmbedUnimplementedAuthServer()
-}
-
-// UnimplementedAuthServer must be embedded to have forward compatible implementations.
-type UnimplementedAuthServer struct {
-}
-
-func (UnimplementedAuthServer) Authenticate(context.Context, *AuthRequest) (*AuthReply, error) {
- return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented")
-}
-func (UnimplementedAuthServer) CheckPerm(context.Context, *CheckPermRequest) (*CheckPermReply, error) {
- return nil, status.Errorf(codes.Unimplemented, "method CheckPerm not implemented")
-}
-func (UnimplementedAuthServer) mustEmbedUnimplementedAuthServer() {}
-
-// UnsafeAuthServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to AuthServer will
-// result in compilation errors.
-type UnsafeAuthServer interface {
- mustEmbedUnimplementedAuthServer()
-}
-
-func RegisterAuthServer(s grpc.ServiceRegistrar, srv AuthServer) {
- s.RegisterService(&Auth_ServiceDesc, srv)
-}
-
-func _Auth_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(AuthRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(AuthServer).Authenticate(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Auth_Authenticate_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(AuthServer).Authenticate(ctx, req.(*AuthRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Auth_CheckPerm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(CheckPermRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(AuthServer).CheckPerm(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Auth_CheckPerm_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(AuthServer).CheckPerm(ctx, req.(*CheckPermRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Auth_ServiceDesc is the grpc.ServiceDesc for Auth service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Auth_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "proto.Auth",
- HandlerType: (*AuthServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "Authenticate",
- Handler: _Auth_Authenticate_Handler,
- },
- {
- MethodName: "CheckPerm",
- Handler: _Auth_CheckPerm_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "auth.proto",
-}
diff --git a/pkg/proto/friendships.pb.go b/pkg/proto/friendships.pb.go
deleted file mode 100644
index 3d7033e..0000000
--- a/pkg/proto/friendships.pb.go
+++ /dev/null
@@ -1,400 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: friendships.proto
-
-package proto
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type FriendshipLookupRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- AccountId uint64 `protobuf:"varint,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"`
- Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
-}
-
-func (x *FriendshipLookupRequest) Reset() {
- *x = FriendshipLookupRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_friendships_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FriendshipLookupRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FriendshipLookupRequest) ProtoMessage() {}
-
-func (x *FriendshipLookupRequest) ProtoReflect() protoreflect.Message {
- mi := &file_friendships_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FriendshipLookupRequest.ProtoReflect.Descriptor instead.
-func (*FriendshipLookupRequest) Descriptor() ([]byte, []int) {
- return file_friendships_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *FriendshipLookupRequest) GetAccountId() uint64 {
- if x != nil {
- return x.AccountId
- }
- return 0
-}
-
-func (x *FriendshipLookupRequest) GetStatus() uint32 {
- if x != nil {
- return x.Status
- }
- return 0
-}
-
-type FriendshipTwoSideLookupRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- AccountId uint64 `protobuf:"varint,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"`
- RelatedId uint64 `protobuf:"varint,2,opt,name=related_id,json=relatedId,proto3" json:"related_id,omitempty"`
- Status uint32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
-}
-
-func (x *FriendshipTwoSideLookupRequest) Reset() {
- *x = FriendshipTwoSideLookupRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_friendships_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FriendshipTwoSideLookupRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FriendshipTwoSideLookupRequest) ProtoMessage() {}
-
-func (x *FriendshipTwoSideLookupRequest) ProtoReflect() protoreflect.Message {
- mi := &file_friendships_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FriendshipTwoSideLookupRequest.ProtoReflect.Descriptor instead.
-func (*FriendshipTwoSideLookupRequest) Descriptor() ([]byte, []int) {
- return file_friendships_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *FriendshipTwoSideLookupRequest) GetAccountId() uint64 {
- if x != nil {
- return x.AccountId
- }
- return 0
-}
-
-func (x *FriendshipTwoSideLookupRequest) GetRelatedId() uint64 {
- if x != nil {
- return x.RelatedId
- }
- return 0
-}
-
-func (x *FriendshipTwoSideLookupRequest) GetStatus() uint32 {
- if x != nil {
- return x.Status
- }
- return 0
-}
-
-type ListFriendshipResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Data []*FriendshipResponse `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *ListFriendshipResponse) Reset() {
- *x = ListFriendshipResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_friendships_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListFriendshipResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListFriendshipResponse) ProtoMessage() {}
-
-func (x *ListFriendshipResponse) ProtoReflect() protoreflect.Message {
- mi := &file_friendships_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListFriendshipResponse.ProtoReflect.Descriptor instead.
-func (*ListFriendshipResponse) Descriptor() ([]byte, []int) {
- return file_friendships_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ListFriendshipResponse) GetData() []*FriendshipResponse {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-type FriendshipResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- AccountId uint64 `protobuf:"varint,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"`
- RelatedId uint64 `protobuf:"varint,2,opt,name=related_id,json=relatedId,proto3" json:"related_id,omitempty"`
- Status uint32 `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
-}
-
-func (x *FriendshipResponse) Reset() {
- *x = FriendshipResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_friendships_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *FriendshipResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FriendshipResponse) ProtoMessage() {}
-
-func (x *FriendshipResponse) ProtoReflect() protoreflect.Message {
- mi := &file_friendships_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use FriendshipResponse.ProtoReflect.Descriptor instead.
-func (*FriendshipResponse) Descriptor() ([]byte, []int) {
- return file_friendships_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *FriendshipResponse) GetAccountId() uint64 {
- if x != nil {
- return x.AccountId
- }
- return 0
-}
-
-func (x *FriendshipResponse) GetRelatedId() uint64 {
- if x != nil {
- return x.RelatedId
- }
- return 0
-}
-
-func (x *FriendshipResponse) GetStatus() uint32 {
- if x != nil {
- return x.Status
- }
- return 0
-}
-
-var File_friendships_proto protoreflect.FileDescriptor
-
-var file_friendships_proto_rawDesc = []byte{
- 0x0a, 0x11, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x50, 0x0a, 0x17, 0x46, 0x72,
- 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x76, 0x0a, 0x1e,
- 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x54, 0x77, 0x6f, 0x53, 0x69, 0x64,
- 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d,
- 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a,
- 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x22, 0x47, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65,
- 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d,
- 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6a, 0x0a,
- 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x49,
- 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x32, 0xb5, 0x01, 0x0a, 0x0b, 0x46, 0x72,
- 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x4c, 0x69, 0x73,
- 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1e, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x4c, 0x6f,
- 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68,
- 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0d,
- 0x47, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x12, 0x25, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70,
- 0x54, 0x77, 0x6f, 0x53, 0x69, 0x64, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x69,
- 0x65, 0x6e, 0x64, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
- file_friendships_proto_rawDescOnce sync.Once
- file_friendships_proto_rawDescData = file_friendships_proto_rawDesc
-)
-
-func file_friendships_proto_rawDescGZIP() []byte {
- file_friendships_proto_rawDescOnce.Do(func() {
- file_friendships_proto_rawDescData = protoimpl.X.CompressGZIP(file_friendships_proto_rawDescData)
- })
- return file_friendships_proto_rawDescData
-}
-
-var file_friendships_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_friendships_proto_goTypes = []interface{}{
- (*FriendshipLookupRequest)(nil), // 0: proto.FriendshipLookupRequest
- (*FriendshipTwoSideLookupRequest)(nil), // 1: proto.FriendshipTwoSideLookupRequest
- (*ListFriendshipResponse)(nil), // 2: proto.ListFriendshipResponse
- (*FriendshipResponse)(nil), // 3: proto.FriendshipResponse
-}
-var file_friendships_proto_depIdxs = []int32{
- 3, // 0: proto.ListFriendshipResponse.data:type_name -> proto.FriendshipResponse
- 0, // 1: proto.Friendships.ListFriendship:input_type -> proto.FriendshipLookupRequest
- 1, // 2: proto.Friendships.GetFriendship:input_type -> proto.FriendshipTwoSideLookupRequest
- 2, // 3: proto.Friendships.ListFriendship:output_type -> proto.ListFriendshipResponse
- 3, // 4: proto.Friendships.GetFriendship:output_type -> proto.FriendshipResponse
- 3, // [3:5] is the sub-list for method output_type
- 1, // [1:3] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_friendships_proto_init() }
-func file_friendships_proto_init() {
- if File_friendships_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_friendships_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FriendshipLookupRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_friendships_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FriendshipTwoSideLookupRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_friendships_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListFriendshipResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_friendships_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FriendshipResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_friendships_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 4,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_friendships_proto_goTypes,
- DependencyIndexes: file_friendships_proto_depIdxs,
- MessageInfos: file_friendships_proto_msgTypes,
- }.Build()
- File_friendships_proto = out.File
- file_friendships_proto_rawDesc = nil
- file_friendships_proto_goTypes = nil
- file_friendships_proto_depIdxs = nil
-}
diff --git a/pkg/proto/friendships.proto b/pkg/proto/friendships.proto
deleted file mode 100644
index c5a52f9..0000000
--- a/pkg/proto/friendships.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-syntax = "proto3";
-
-option go_package = ".;proto";
-
-package proto;
-
-service Friendships {
- rpc ListFriendship(FriendshipLookupRequest) returns (ListFriendshipResponse) {}
- rpc GetFriendship(FriendshipTwoSideLookupRequest) returns (FriendshipResponse) {}
-}
-
-message FriendshipLookupRequest {
- uint64 account_id = 1;
- uint32 status = 2;
-}
-
-message FriendshipTwoSideLookupRequest {
- uint64 account_id = 1;
- uint64 related_id = 2;
- uint32 status = 3;
-}
-
-message FriendshipResponse {
- uint64 account_id = 1;
- uint64 related_id = 2;
- uint32 status = 3;
-}
-
-message ListFriendshipResponse {
- repeated FriendshipResponse data = 1;
-}
diff --git a/pkg/proto/friendships_grpc.pb.go b/pkg/proto/friendships_grpc.pb.go
deleted file mode 100644
index a8c5bd1..0000000
--- a/pkg/proto/friendships_grpc.pb.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: friendships.proto
-
-package proto
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Friendships_ListFriendship_FullMethodName = "/proto.Friendships/ListFriendship"
- Friendships_GetFriendship_FullMethodName = "/proto.Friendships/GetFriendship"
-)
-
-// FriendshipsClient is the client API for Friendships service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type FriendshipsClient interface {
- ListFriendship(ctx context.Context, in *FriendshipLookupRequest, opts ...grpc.CallOption) (*ListFriendshipResponse, error)
- GetFriendship(ctx context.Context, in *FriendshipTwoSideLookupRequest, opts ...grpc.CallOption) (*FriendshipResponse, error)
-}
-
-type friendshipsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewFriendshipsClient(cc grpc.ClientConnInterface) FriendshipsClient {
- return &friendshipsClient{cc}
-}
-
-func (c *friendshipsClient) ListFriendship(ctx context.Context, in *FriendshipLookupRequest, opts ...grpc.CallOption) (*ListFriendshipResponse, error) {
- out := new(ListFriendshipResponse)
- err := c.cc.Invoke(ctx, Friendships_ListFriendship_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *friendshipsClient) GetFriendship(ctx context.Context, in *FriendshipTwoSideLookupRequest, opts ...grpc.CallOption) (*FriendshipResponse, error) {
- out := new(FriendshipResponse)
- err := c.cc.Invoke(ctx, Friendships_GetFriendship_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// FriendshipsServer is the server API for Friendships service.
-// All implementations must embed UnimplementedFriendshipsServer
-// for forward compatibility
-type FriendshipsServer interface {
- ListFriendship(context.Context, *FriendshipLookupRequest) (*ListFriendshipResponse, error)
- GetFriendship(context.Context, *FriendshipTwoSideLookupRequest) (*FriendshipResponse, error)
- mustEmbedUnimplementedFriendshipsServer()
-}
-
-// UnimplementedFriendshipsServer must be embedded to have forward compatible implementations.
-type UnimplementedFriendshipsServer struct {
-}
-
-func (UnimplementedFriendshipsServer) ListFriendship(context.Context, *FriendshipLookupRequest) (*ListFriendshipResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListFriendship not implemented")
-}
-func (UnimplementedFriendshipsServer) GetFriendship(context.Context, *FriendshipTwoSideLookupRequest) (*FriendshipResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method GetFriendship not implemented")
-}
-func (UnimplementedFriendshipsServer) mustEmbedUnimplementedFriendshipsServer() {}
-
-// UnsafeFriendshipsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to FriendshipsServer will
-// result in compilation errors.
-type UnsafeFriendshipsServer interface {
- mustEmbedUnimplementedFriendshipsServer()
-}
-
-func RegisterFriendshipsServer(s grpc.ServiceRegistrar, srv FriendshipsServer) {
- s.RegisterService(&Friendships_ServiceDesc, srv)
-}
-
-func _Friendships_ListFriendship_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(FriendshipLookupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(FriendshipsServer).ListFriendship(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Friendships_ListFriendship_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(FriendshipsServer).ListFriendship(ctx, req.(*FriendshipLookupRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Friendships_GetFriendship_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(FriendshipTwoSideLookupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(FriendshipsServer).GetFriendship(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Friendships_GetFriendship_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(FriendshipsServer).GetFriendship(ctx, req.(*FriendshipTwoSideLookupRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Friendships_ServiceDesc is the grpc.ServiceDesc for Friendships service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Friendships_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "proto.Friendships",
- HandlerType: (*FriendshipsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "ListFriendship",
- Handler: _Friendships_ListFriendship_Handler,
- },
- {
- MethodName: "GetFriendship",
- Handler: _Friendships_GetFriendship_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "friendships.proto",
-}
diff --git a/pkg/proto/notify.pb.go b/pkg/proto/notify.pb.go
deleted file mode 100644
index 16f4e00..0000000
--- a/pkg/proto/notify.pb.go
+++ /dev/null
@@ -1,373 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: notify.proto
-
-package proto
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type NotifyLink struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
- Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
-}
-
-func (x *NotifyLink) Reset() {
- *x = NotifyLink{}
- if protoimpl.UnsafeEnabled {
- mi := &file_notify_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NotifyLink) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NotifyLink) ProtoMessage() {}
-
-func (x *NotifyLink) ProtoReflect() protoreflect.Message {
- mi := &file_notify_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NotifyLink.ProtoReflect.Descriptor instead.
-func (*NotifyLink) Descriptor() ([]byte, []int) {
- return file_notify_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *NotifyLink) GetLabel() string {
- if x != nil {
- return x.Label
- }
- return ""
-}
-
-func (x *NotifyLink) GetUrl() string {
- if x != nil {
- return x.Url
- }
- return ""
-}
-
-type NotifyRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
- Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
- Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
- Metadata []byte `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
- Links []*NotifyLink `protobuf:"bytes,5,rep,name=links,proto3" json:"links,omitempty"`
- RecipientId uint64 `protobuf:"varint,6,opt,name=recipient_id,json=recipientId,proto3" json:"recipient_id,omitempty"`
- ClientId string `protobuf:"bytes,7,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
- ClientSecret string `protobuf:"bytes,8,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"`
- IsRealtime bool `protobuf:"varint,9,opt,name=is_realtime,json=isRealtime,proto3" json:"is_realtime,omitempty"`
- IsForcePush bool `protobuf:"varint,10,opt,name=is_force_push,json=isForcePush,proto3" json:"is_force_push,omitempty"`
-}
-
-func (x *NotifyRequest) Reset() {
- *x = NotifyRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_notify_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NotifyRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NotifyRequest) ProtoMessage() {}
-
-func (x *NotifyRequest) ProtoReflect() protoreflect.Message {
- mi := &file_notify_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NotifyRequest.ProtoReflect.Descriptor instead.
-func (*NotifyRequest) Descriptor() ([]byte, []int) {
- return file_notify_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *NotifyRequest) GetType() string {
- if x != nil {
- return x.Type
- }
- return ""
-}
-
-func (x *NotifyRequest) GetSubject() string {
- if x != nil {
- return x.Subject
- }
- return ""
-}
-
-func (x *NotifyRequest) GetContent() string {
- if x != nil {
- return x.Content
- }
- return ""
-}
-
-func (x *NotifyRequest) GetMetadata() []byte {
- if x != nil {
- return x.Metadata
- }
- return nil
-}
-
-func (x *NotifyRequest) GetLinks() []*NotifyLink {
- if x != nil {
- return x.Links
- }
- return nil
-}
-
-func (x *NotifyRequest) GetRecipientId() uint64 {
- if x != nil {
- return x.RecipientId
- }
- return 0
-}
-
-func (x *NotifyRequest) GetClientId() string {
- if x != nil {
- return x.ClientId
- }
- return ""
-}
-
-func (x *NotifyRequest) GetClientSecret() string {
- if x != nil {
- return x.ClientSecret
- }
- return ""
-}
-
-func (x *NotifyRequest) GetIsRealtime() bool {
- if x != nil {
- return x.IsRealtime
- }
- return false
-}
-
-func (x *NotifyRequest) GetIsForcePush() bool {
- if x != nil {
- return x.IsForcePush
- }
- return false
-}
-
-type NotifyReply struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- IsSent bool `protobuf:"varint,1,opt,name=is_sent,json=isSent,proto3" json:"is_sent,omitempty"`
-}
-
-func (x *NotifyReply) Reset() {
- *x = NotifyReply{}
- if protoimpl.UnsafeEnabled {
- mi := &file_notify_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *NotifyReply) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NotifyReply) ProtoMessage() {}
-
-func (x *NotifyReply) ProtoReflect() protoreflect.Message {
- mi := &file_notify_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use NotifyReply.ProtoReflect.Descriptor instead.
-func (*NotifyReply) Descriptor() ([]byte, []int) {
- return file_notify_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *NotifyReply) GetIsSent() bool {
- if x != nil {
- return x.IsSent
- }
- return false
-}
-
-var File_notify_proto protoreflect.FileDescriptor
-
-var file_notify_proto_rawDesc = []byte{
- 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x34, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c,
- 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xc6, 0x02, 0x0a, 0x0d,
- 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
- 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
- 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63,
- 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f,
- 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x12, 0x27, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c,
- 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65,
- 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a,
- 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c,
- 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12,
- 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65,
- 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x75, 0x73,
- 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65,
- 0x50, 0x75, 0x73, 0x68, 0x22, 0x26, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65,
- 0x70, 0x6c, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x32, 0x42, 0x0a, 0x06,
- 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x38, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79,
- 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4e, 0x6f, 0x74,
- 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00,
- 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
-}
-
-var (
- file_notify_proto_rawDescOnce sync.Once
- file_notify_proto_rawDescData = file_notify_proto_rawDesc
-)
-
-func file_notify_proto_rawDescGZIP() []byte {
- file_notify_proto_rawDescOnce.Do(func() {
- file_notify_proto_rawDescData = protoimpl.X.CompressGZIP(file_notify_proto_rawDescData)
- })
- return file_notify_proto_rawDescData
-}
-
-var file_notify_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_notify_proto_goTypes = []interface{}{
- (*NotifyLink)(nil), // 0: proto.NotifyLink
- (*NotifyRequest)(nil), // 1: proto.NotifyRequest
- (*NotifyReply)(nil), // 2: proto.NotifyReply
-}
-var file_notify_proto_depIdxs = []int32{
- 0, // 0: proto.NotifyRequest.links:type_name -> proto.NotifyLink
- 1, // 1: proto.Notify.NotifyUser:input_type -> proto.NotifyRequest
- 2, // 2: proto.Notify.NotifyUser:output_type -> proto.NotifyReply
- 2, // [2:3] is the sub-list for method output_type
- 1, // [1:2] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_notify_proto_init() }
-func file_notify_proto_init() {
- if File_notify_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_notify_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyLink); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_notify_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_notify_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyReply); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_notify_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 3,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_notify_proto_goTypes,
- DependencyIndexes: file_notify_proto_depIdxs,
- MessageInfos: file_notify_proto_msgTypes,
- }.Build()
- File_notify_proto = out.File
- file_notify_proto_rawDesc = nil
- file_notify_proto_goTypes = nil
- file_notify_proto_depIdxs = nil
-}
diff --git a/pkg/proto/notify.proto b/pkg/proto/notify.proto
deleted file mode 100644
index 21510fb..0000000
--- a/pkg/proto/notify.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-syntax = "proto3";
-
-option go_package = ".;proto";
-
-package proto;
-
-service Notify {
- rpc NotifyUser(NotifyRequest) returns (NotifyReply) {}
-}
-
-message NotifyLink {
- string label = 1;
- string url = 2;
-}
-
-message NotifyRequest {
- string type = 1;
- string subject = 2;
- string content = 3;
- bytes metadata = 4;
- repeated NotifyLink links = 5;
- uint64 recipient_id = 6;
- string client_id = 7;
- string client_secret = 8;
- bool is_realtime = 9;
- bool is_force_push = 10;
-}
-
-message NotifyReply {
- bool is_sent = 1;
-}
\ No newline at end of file
diff --git a/pkg/proto/notify_grpc.pb.go b/pkg/proto/notify_grpc.pb.go
deleted file mode 100644
index 7d91a01..0000000
--- a/pkg/proto/notify_grpc.pb.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: notify.proto
-
-package proto
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Notify_NotifyUser_FullMethodName = "/proto.Notify/NotifyUser"
-)
-
-// NotifyClient is the client API for Notify service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type NotifyClient interface {
- NotifyUser(ctx context.Context, in *NotifyRequest, opts ...grpc.CallOption) (*NotifyReply, error)
-}
-
-type notifyClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewNotifyClient(cc grpc.ClientConnInterface) NotifyClient {
- return ¬ifyClient{cc}
-}
-
-func (c *notifyClient) NotifyUser(ctx context.Context, in *NotifyRequest, opts ...grpc.CallOption) (*NotifyReply, error) {
- out := new(NotifyReply)
- err := c.cc.Invoke(ctx, Notify_NotifyUser_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// NotifyServer is the server API for Notify service.
-// All implementations must embed UnimplementedNotifyServer
-// for forward compatibility
-type NotifyServer interface {
- NotifyUser(context.Context, *NotifyRequest) (*NotifyReply, error)
- mustEmbedUnimplementedNotifyServer()
-}
-
-// UnimplementedNotifyServer must be embedded to have forward compatible implementations.
-type UnimplementedNotifyServer struct {
-}
-
-func (UnimplementedNotifyServer) NotifyUser(context.Context, *NotifyRequest) (*NotifyReply, error) {
- return nil, status.Errorf(codes.Unimplemented, "method NotifyUser not implemented")
-}
-func (UnimplementedNotifyServer) mustEmbedUnimplementedNotifyServer() {}
-
-// UnsafeNotifyServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to NotifyServer will
-// result in compilation errors.
-type UnsafeNotifyServer interface {
- mustEmbedUnimplementedNotifyServer()
-}
-
-func RegisterNotifyServer(s grpc.ServiceRegistrar, srv NotifyServer) {
- s.RegisterService(&Notify_ServiceDesc, srv)
-}
-
-func _Notify_NotifyUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(NotifyRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(NotifyServer).NotifyUser(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Notify_NotifyUser_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(NotifyServer).NotifyUser(ctx, req.(*NotifyRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Notify_ServiceDesc is the grpc.ServiceDesc for Notify service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Notify_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "proto.Notify",
- HandlerType: (*NotifyServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "NotifyUser",
- Handler: _Notify_NotifyUser_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "notify.proto",
-}
diff --git a/pkg/proto/realms.pb.go b/pkg/proto/realms.pb.go
deleted file mode 100644
index 59d8a4b..0000000
--- a/pkg/proto/realms.pb.go
+++ /dev/null
@@ -1,685 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// protoc-gen-go v1.33.0
-// protoc v5.26.1
-// source: realms.proto
-
-package proto
-
-import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
- reflect "reflect"
- sync "sync"
-)
-
-const (
- // Verify that this generated code is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
- // Verify that runtime/protoimpl is sufficiently up-to-date.
- _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type RealmLookupWithUserRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- UserId uint64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
-}
-
-func (x *RealmLookupWithUserRequest) Reset() {
- *x = RealmLookupWithUserRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_realms_proto_msgTypes[0]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RealmLookupWithUserRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RealmLookupWithUserRequest) ProtoMessage() {}
-
-func (x *RealmLookupWithUserRequest) ProtoReflect() protoreflect.Message {
- mi := &file_realms_proto_msgTypes[0]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RealmLookupWithUserRequest.ProtoReflect.Descriptor instead.
-func (*RealmLookupWithUserRequest) Descriptor() ([]byte, []int) {
- return file_realms_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *RealmLookupWithUserRequest) GetUserId() uint64 {
- if x != nil {
- return x.UserId
- }
- return 0
-}
-
-type RealmLookupRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Id *uint64 `protobuf:"varint,1,opt,name=id,proto3,oneof" json:"id,omitempty"`
- Alias *string `protobuf:"bytes,2,opt,name=alias,proto3,oneof" json:"alias,omitempty"`
- IsPublic *bool `protobuf:"varint,3,opt,name=is_public,json=isPublic,proto3,oneof" json:"is_public,omitempty"`
- IsCommunity *bool `protobuf:"varint,4,opt,name=is_community,json=isCommunity,proto3,oneof" json:"is_community,omitempty"`
-}
-
-func (x *RealmLookupRequest) Reset() {
- *x = RealmLookupRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_realms_proto_msgTypes[1]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RealmLookupRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RealmLookupRequest) ProtoMessage() {}
-
-func (x *RealmLookupRequest) ProtoReflect() protoreflect.Message {
- mi := &file_realms_proto_msgTypes[1]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RealmLookupRequest.ProtoReflect.Descriptor instead.
-func (*RealmLookupRequest) Descriptor() ([]byte, []int) {
- return file_realms_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *RealmLookupRequest) GetId() uint64 {
- if x != nil && x.Id != nil {
- return *x.Id
- }
- return 0
-}
-
-func (x *RealmLookupRequest) GetAlias() string {
- if x != nil && x.Alias != nil {
- return *x.Alias
- }
- return ""
-}
-
-func (x *RealmLookupRequest) GetIsPublic() bool {
- if x != nil && x.IsPublic != nil {
- return *x.IsPublic
- }
- return false
-}
-
-func (x *RealmLookupRequest) GetIsCommunity() bool {
- if x != nil && x.IsCommunity != nil {
- return *x.IsCommunity
- }
- return false
-}
-
-type RealmResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
- Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"`
- Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
- Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
- IsPublic bool `protobuf:"varint,5,opt,name=is_public,json=isPublic,proto3" json:"is_public,omitempty"`
- IsCommunity bool `protobuf:"varint,6,opt,name=is_community,json=isCommunity,proto3" json:"is_community,omitempty"`
-}
-
-func (x *RealmResponse) Reset() {
- *x = RealmResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_realms_proto_msgTypes[2]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RealmResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RealmResponse) ProtoMessage() {}
-
-func (x *RealmResponse) ProtoReflect() protoreflect.Message {
- mi := &file_realms_proto_msgTypes[2]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RealmResponse.ProtoReflect.Descriptor instead.
-func (*RealmResponse) Descriptor() ([]byte, []int) {
- return file_realms_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *RealmResponse) GetId() uint64 {
- if x != nil {
- return x.Id
- }
- return 0
-}
-
-func (x *RealmResponse) GetAlias() string {
- if x != nil {
- return x.Alias
- }
- return ""
-}
-
-func (x *RealmResponse) GetName() string {
- if x != nil {
- return x.Name
- }
- return ""
-}
-
-func (x *RealmResponse) GetDescription() string {
- if x != nil {
- return x.Description
- }
- return ""
-}
-
-func (x *RealmResponse) GetIsPublic() bool {
- if x != nil {
- return x.IsPublic
- }
- return false
-}
-
-func (x *RealmResponse) GetIsCommunity() bool {
- if x != nil {
- return x.IsCommunity
- }
- return false
-}
-
-type ListRealmResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Data []*RealmResponse `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *ListRealmResponse) Reset() {
- *x = ListRealmResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_realms_proto_msgTypes[3]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListRealmResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListRealmResponse) ProtoMessage() {}
-
-func (x *ListRealmResponse) ProtoReflect() protoreflect.Message {
- mi := &file_realms_proto_msgTypes[3]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListRealmResponse.ProtoReflect.Descriptor instead.
-func (*ListRealmResponse) Descriptor() ([]byte, []int) {
- return file_realms_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ListRealmResponse) GetData() []*RealmResponse {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-type RealmMemberLookupRequest struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- RealmId uint64 `protobuf:"varint,1,opt,name=realm_id,json=realmId,proto3" json:"realm_id,omitempty"`
- UserId *uint64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3,oneof" json:"user_id,omitempty"`
-}
-
-func (x *RealmMemberLookupRequest) Reset() {
- *x = RealmMemberLookupRequest{}
- if protoimpl.UnsafeEnabled {
- mi := &file_realms_proto_msgTypes[4]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RealmMemberLookupRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RealmMemberLookupRequest) ProtoMessage() {}
-
-func (x *RealmMemberLookupRequest) ProtoReflect() protoreflect.Message {
- mi := &file_realms_proto_msgTypes[4]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RealmMemberLookupRequest.ProtoReflect.Descriptor instead.
-func (*RealmMemberLookupRequest) Descriptor() ([]byte, []int) {
- return file_realms_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *RealmMemberLookupRequest) GetRealmId() uint64 {
- if x != nil {
- return x.RealmId
- }
- return 0
-}
-
-func (x *RealmMemberLookupRequest) GetUserId() uint64 {
- if x != nil && x.UserId != nil {
- return *x.UserId
- }
- return 0
-}
-
-type RealmMemberResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- RealmId uint64 `protobuf:"varint,1,opt,name=realm_id,json=realmId,proto3" json:"realm_id,omitempty"`
- UserId uint64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
- PowerLevel int32 `protobuf:"varint,3,opt,name=power_level,json=powerLevel,proto3" json:"power_level,omitempty"`
-}
-
-func (x *RealmMemberResponse) Reset() {
- *x = RealmMemberResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_realms_proto_msgTypes[5]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *RealmMemberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RealmMemberResponse) ProtoMessage() {}
-
-func (x *RealmMemberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_realms_proto_msgTypes[5]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use RealmMemberResponse.ProtoReflect.Descriptor instead.
-func (*RealmMemberResponse) Descriptor() ([]byte, []int) {
- return file_realms_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *RealmMemberResponse) GetRealmId() uint64 {
- if x != nil {
- return x.RealmId
- }
- return 0
-}
-
-func (x *RealmMemberResponse) GetUserId() uint64 {
- if x != nil {
- return x.UserId
- }
- return 0
-}
-
-func (x *RealmMemberResponse) GetPowerLevel() int32 {
- if x != nil {
- return x.PowerLevel
- }
- return 0
-}
-
-type ListRealmMemberResponse struct {
- state protoimpl.MessageState
- sizeCache protoimpl.SizeCache
- unknownFields protoimpl.UnknownFields
-
- Data []*RealmMemberResponse `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *ListRealmMemberResponse) Reset() {
- *x = ListRealmMemberResponse{}
- if protoimpl.UnsafeEnabled {
- mi := &file_realms_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
- }
-}
-
-func (x *ListRealmMemberResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListRealmMemberResponse) ProtoMessage() {}
-
-func (x *ListRealmMemberResponse) ProtoReflect() protoreflect.Message {
- mi := &file_realms_proto_msgTypes[6]
- if protoimpl.UnsafeEnabled && x != nil {
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- if ms.LoadMessageInfo() == nil {
- ms.StoreMessageInfo(mi)
- }
- return ms
- }
- return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListRealmMemberResponse.ProtoReflect.Descriptor instead.
-func (*ListRealmMemberResponse) Descriptor() ([]byte, []int) {
- return file_realms_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *ListRealmMemberResponse) GetData() []*RealmMemberResponse {
- if x != nil {
- return x.Data
- }
- return nil
-}
-
-var File_realms_proto protoreflect.FileDescriptor
-
-var file_realms_proto_rawDesc = []byte{
- 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x22, 0x35, 0x0a, 0x1a, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75,
- 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbe, 0x01, 0x0a, 0x12, 0x52, 0x65,
- 0x61, 0x6c, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x02,
- 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01,
- 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x88,
- 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69,
- 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x6f,
- 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69,
- 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
- 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x73,
- 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x22, 0xab, 0x01, 0x0a, 0x0d, 0x52,
- 0x65, 0x61, 0x6c, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05,
- 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69,
- 0x61, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70,
- 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50,
- 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d,
- 0x75, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43,
- 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x22, 0x3d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74,
- 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a,
- 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x18, 0x52, 0x65, 0x61, 0x6c, 0x6d,
- 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x49, 0x64, 0x12, 0x1c,
- 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48,
- 0x00, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08,
- 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x6c,
- 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x07, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65,
- 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76,
- 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x4c,
- 0x65, 0x76, 0x65, 0x6c, 0x22, 0x49, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x61, 0x6c,
- 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65,
- 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32,
- 0xde, 0x03, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x4c, 0x69,
- 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x61, 0x6c, 0x6d,
- 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x76, 0x61, 0x69,
- 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x57, 0x69,
- 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, 0x4c, 0x69, 0x73,
- 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x21, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x57,
- 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x6d,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x08, 0x47, 0x65,
- 0x74, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52,
- 0x65, 0x61, 0x6c, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0f, 0x4c, 0x69, 0x73,
- 0x74, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72,
- 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4d,
- 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
- 0x4f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65,
- 0x72, 0x12, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x4d,
- 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d,
- 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
-}
-
-var (
- file_realms_proto_rawDescOnce sync.Once
- file_realms_proto_rawDescData = file_realms_proto_rawDesc
-)
-
-func file_realms_proto_rawDescGZIP() []byte {
- file_realms_proto_rawDescOnce.Do(func() {
- file_realms_proto_rawDescData = protoimpl.X.CompressGZIP(file_realms_proto_rawDescData)
- })
- return file_realms_proto_rawDescData
-}
-
-var file_realms_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
-var file_realms_proto_goTypes = []interface{}{
- (*RealmLookupWithUserRequest)(nil), // 0: proto.RealmLookupWithUserRequest
- (*RealmLookupRequest)(nil), // 1: proto.RealmLookupRequest
- (*RealmResponse)(nil), // 2: proto.RealmResponse
- (*ListRealmResponse)(nil), // 3: proto.ListRealmResponse
- (*RealmMemberLookupRequest)(nil), // 4: proto.RealmMemberLookupRequest
- (*RealmMemberResponse)(nil), // 5: proto.RealmMemberResponse
- (*ListRealmMemberResponse)(nil), // 6: proto.ListRealmMemberResponse
- (*emptypb.Empty)(nil), // 7: google.protobuf.Empty
-}
-var file_realms_proto_depIdxs = []int32{
- 2, // 0: proto.ListRealmResponse.data:type_name -> proto.RealmResponse
- 5, // 1: proto.ListRealmMemberResponse.data:type_name -> proto.RealmMemberResponse
- 7, // 2: proto.Realms.ListCommunityRealm:input_type -> google.protobuf.Empty
- 0, // 3: proto.Realms.ListAvailableRealm:input_type -> proto.RealmLookupWithUserRequest
- 0, // 4: proto.Realms.ListOwnedRealm:input_type -> proto.RealmLookupWithUserRequest
- 1, // 5: proto.Realms.GetRealm:input_type -> proto.RealmLookupRequest
- 4, // 6: proto.Realms.ListRealmMember:input_type -> proto.RealmMemberLookupRequest
- 4, // 7: proto.Realms.GetRealmMember:input_type -> proto.RealmMemberLookupRequest
- 3, // 8: proto.Realms.ListCommunityRealm:output_type -> proto.ListRealmResponse
- 3, // 9: proto.Realms.ListAvailableRealm:output_type -> proto.ListRealmResponse
- 3, // 10: proto.Realms.ListOwnedRealm:output_type -> proto.ListRealmResponse
- 2, // 11: proto.Realms.GetRealm:output_type -> proto.RealmResponse
- 6, // 12: proto.Realms.ListRealmMember:output_type -> proto.ListRealmMemberResponse
- 5, // 13: proto.Realms.GetRealmMember:output_type -> proto.RealmMemberResponse
- 8, // [8:14] is the sub-list for method output_type
- 2, // [2:8] is the sub-list for method input_type
- 2, // [2:2] is the sub-list for extension type_name
- 2, // [2:2] is the sub-list for extension extendee
- 0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_realms_proto_init() }
-func file_realms_proto_init() {
- if File_realms_proto != nil {
- return
- }
- if !protoimpl.UnsafeEnabled {
- file_realms_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RealmLookupWithUserRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_realms_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RealmLookupRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_realms_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RealmResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_realms_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListRealmResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_realms_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RealmMemberLookupRequest); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_realms_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RealmMemberResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- file_realms_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListRealmMemberResponse); i {
- case 0:
- return &v.state
- case 1:
- return &v.sizeCache
- case 2:
- return &v.unknownFields
- default:
- return nil
- }
- }
- }
- file_realms_proto_msgTypes[1].OneofWrappers = []interface{}{}
- file_realms_proto_msgTypes[4].OneofWrappers = []interface{}{}
- type x struct{}
- out := protoimpl.TypeBuilder{
- File: protoimpl.DescBuilder{
- GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
- RawDescriptor: file_realms_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 7,
- NumExtensions: 0,
- NumServices: 1,
- },
- GoTypes: file_realms_proto_goTypes,
- DependencyIndexes: file_realms_proto_depIdxs,
- MessageInfos: file_realms_proto_msgTypes,
- }.Build()
- File_realms_proto = out.File
- file_realms_proto_rawDesc = nil
- file_realms_proto_goTypes = nil
- file_realms_proto_depIdxs = nil
-}
diff --git a/pkg/proto/realms.proto b/pkg/proto/realms.proto
deleted file mode 100644
index 98a83cd..0000000
--- a/pkg/proto/realms.proto
+++ /dev/null
@@ -1,55 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-
-option go_package = ".;proto";
-
-package proto;
-
-service Realms {
- rpc ListCommunityRealm(google.protobuf.Empty) returns (ListRealmResponse) {}
- rpc ListAvailableRealm(RealmLookupWithUserRequest) returns (ListRealmResponse) {}
- rpc ListOwnedRealm(RealmLookupWithUserRequest) returns (ListRealmResponse) {}
- rpc GetRealm(RealmLookupRequest) returns (RealmResponse) {}
- rpc ListRealmMember(RealmMemberLookupRequest) returns (ListRealmMemberResponse) {}
- rpc GetRealmMember(RealmMemberLookupRequest) returns (RealmMemberResponse) {}
-}
-
-message RealmLookupWithUserRequest {
- uint64 user_id = 1;
-}
-
-message RealmLookupRequest {
- optional uint64 id = 1;
- optional string alias = 2;
- optional bool is_public = 3;
- optional bool is_community = 4;
-}
-
-message RealmResponse {
- uint64 id = 1;
- string alias = 2;
- string name = 3;
- string description = 4;
- bool is_public = 5;
- bool is_community = 6;
-}
-
-message ListRealmResponse {
- repeated RealmResponse data = 1;
-}
-
-message RealmMemberLookupRequest {
- uint64 realm_id = 1;
- optional uint64 user_id = 2;
-}
-
-message RealmMemberResponse {
- uint64 realm_id = 1;
- uint64 user_id = 2;
- int32 power_level = 3;
-}
-
-message ListRealmMemberResponse {
- repeated RealmMemberResponse data = 1;
-}
\ No newline at end of file
diff --git a/pkg/proto/realms_grpc.pb.go b/pkg/proto/realms_grpc.pb.go
deleted file mode 100644
index b122550..0000000
--- a/pkg/proto/realms_grpc.pb.go
+++ /dev/null
@@ -1,295 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc v5.26.1
-// source: realms.proto
-
-package proto
-
-import (
- context "context"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
- emptypb "google.golang.org/protobuf/types/known/emptypb"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-const (
- Realms_ListCommunityRealm_FullMethodName = "/proto.Realms/ListCommunityRealm"
- Realms_ListAvailableRealm_FullMethodName = "/proto.Realms/ListAvailableRealm"
- Realms_ListOwnedRealm_FullMethodName = "/proto.Realms/ListOwnedRealm"
- Realms_GetRealm_FullMethodName = "/proto.Realms/GetRealm"
- Realms_ListRealmMember_FullMethodName = "/proto.Realms/ListRealmMember"
- Realms_GetRealmMember_FullMethodName = "/proto.Realms/GetRealmMember"
-)
-
-// RealmsClient is the client API for Realms service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type RealmsClient interface {
- ListCommunityRealm(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListRealmResponse, error)
- ListAvailableRealm(ctx context.Context, in *RealmLookupWithUserRequest, opts ...grpc.CallOption) (*ListRealmResponse, error)
- ListOwnedRealm(ctx context.Context, in *RealmLookupWithUserRequest, opts ...grpc.CallOption) (*ListRealmResponse, error)
- GetRealm(ctx context.Context, in *RealmLookupRequest, opts ...grpc.CallOption) (*RealmResponse, error)
- ListRealmMember(ctx context.Context, in *RealmMemberLookupRequest, opts ...grpc.CallOption) (*ListRealmMemberResponse, error)
- GetRealmMember(ctx context.Context, in *RealmMemberLookupRequest, opts ...grpc.CallOption) (*RealmMemberResponse, error)
-}
-
-type realmsClient struct {
- cc grpc.ClientConnInterface
-}
-
-func NewRealmsClient(cc grpc.ClientConnInterface) RealmsClient {
- return &realmsClient{cc}
-}
-
-func (c *realmsClient) ListCommunityRealm(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListRealmResponse, error) {
- out := new(ListRealmResponse)
- err := c.cc.Invoke(ctx, Realms_ListCommunityRealm_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *realmsClient) ListAvailableRealm(ctx context.Context, in *RealmLookupWithUserRequest, opts ...grpc.CallOption) (*ListRealmResponse, error) {
- out := new(ListRealmResponse)
- err := c.cc.Invoke(ctx, Realms_ListAvailableRealm_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *realmsClient) ListOwnedRealm(ctx context.Context, in *RealmLookupWithUserRequest, opts ...grpc.CallOption) (*ListRealmResponse, error) {
- out := new(ListRealmResponse)
- err := c.cc.Invoke(ctx, Realms_ListOwnedRealm_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *realmsClient) GetRealm(ctx context.Context, in *RealmLookupRequest, opts ...grpc.CallOption) (*RealmResponse, error) {
- out := new(RealmResponse)
- err := c.cc.Invoke(ctx, Realms_GetRealm_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *realmsClient) ListRealmMember(ctx context.Context, in *RealmMemberLookupRequest, opts ...grpc.CallOption) (*ListRealmMemberResponse, error) {
- out := new(ListRealmMemberResponse)
- err := c.cc.Invoke(ctx, Realms_ListRealmMember_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *realmsClient) GetRealmMember(ctx context.Context, in *RealmMemberLookupRequest, opts ...grpc.CallOption) (*RealmMemberResponse, error) {
- out := new(RealmMemberResponse)
- err := c.cc.Invoke(ctx, Realms_GetRealmMember_FullMethodName, in, out, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RealmsServer is the server API for Realms service.
-// All implementations must embed UnimplementedRealmsServer
-// for forward compatibility
-type RealmsServer interface {
- ListCommunityRealm(context.Context, *emptypb.Empty) (*ListRealmResponse, error)
- ListAvailableRealm(context.Context, *RealmLookupWithUserRequest) (*ListRealmResponse, error)
- ListOwnedRealm(context.Context, *RealmLookupWithUserRequest) (*ListRealmResponse, error)
- GetRealm(context.Context, *RealmLookupRequest) (*RealmResponse, error)
- ListRealmMember(context.Context, *RealmMemberLookupRequest) (*ListRealmMemberResponse, error)
- GetRealmMember(context.Context, *RealmMemberLookupRequest) (*RealmMemberResponse, error)
- mustEmbedUnimplementedRealmsServer()
-}
-
-// UnimplementedRealmsServer must be embedded to have forward compatible implementations.
-type UnimplementedRealmsServer struct {
-}
-
-func (UnimplementedRealmsServer) ListCommunityRealm(context.Context, *emptypb.Empty) (*ListRealmResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListCommunityRealm not implemented")
-}
-func (UnimplementedRealmsServer) ListAvailableRealm(context.Context, *RealmLookupWithUserRequest) (*ListRealmResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListAvailableRealm not implemented")
-}
-func (UnimplementedRealmsServer) ListOwnedRealm(context.Context, *RealmLookupWithUserRequest) (*ListRealmResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListOwnedRealm not implemented")
-}
-func (UnimplementedRealmsServer) GetRealm(context.Context, *RealmLookupRequest) (*RealmResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method GetRealm not implemented")
-}
-func (UnimplementedRealmsServer) ListRealmMember(context.Context, *RealmMemberLookupRequest) (*ListRealmMemberResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method ListRealmMember not implemented")
-}
-func (UnimplementedRealmsServer) GetRealmMember(context.Context, *RealmMemberLookupRequest) (*RealmMemberResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method GetRealmMember not implemented")
-}
-func (UnimplementedRealmsServer) mustEmbedUnimplementedRealmsServer() {}
-
-// UnsafeRealmsServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to RealmsServer will
-// result in compilation errors.
-type UnsafeRealmsServer interface {
- mustEmbedUnimplementedRealmsServer()
-}
-
-func RegisterRealmsServer(s grpc.ServiceRegistrar, srv RealmsServer) {
- s.RegisterService(&Realms_ServiceDesc, srv)
-}
-
-func _Realms_ListCommunityRealm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(emptypb.Empty)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RealmsServer).ListCommunityRealm(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Realms_ListCommunityRealm_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RealmsServer).ListCommunityRealm(ctx, req.(*emptypb.Empty))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Realms_ListAvailableRealm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RealmLookupWithUserRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RealmsServer).ListAvailableRealm(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Realms_ListAvailableRealm_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RealmsServer).ListAvailableRealm(ctx, req.(*RealmLookupWithUserRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Realms_ListOwnedRealm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RealmLookupWithUserRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RealmsServer).ListOwnedRealm(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Realms_ListOwnedRealm_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RealmsServer).ListOwnedRealm(ctx, req.(*RealmLookupWithUserRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Realms_GetRealm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RealmLookupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RealmsServer).GetRealm(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Realms_GetRealm_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RealmsServer).GetRealm(ctx, req.(*RealmLookupRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Realms_ListRealmMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RealmMemberLookupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RealmsServer).ListRealmMember(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Realms_ListRealmMember_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RealmsServer).ListRealmMember(ctx, req.(*RealmMemberLookupRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-func _Realms_GetRealmMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RealmMemberLookupRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(RealmsServer).GetRealmMember(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: Realms_GetRealmMember_FullMethodName,
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(RealmsServer).GetRealmMember(ctx, req.(*RealmMemberLookupRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
-// Realms_ServiceDesc is the grpc.ServiceDesc for Realms service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var Realms_ServiceDesc = grpc.ServiceDesc{
- ServiceName: "proto.Realms",
- HandlerType: (*RealmsServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "ListCommunityRealm",
- Handler: _Realms_ListCommunityRealm_Handler,
- },
- {
- MethodName: "ListAvailableRealm",
- Handler: _Realms_ListAvailableRealm_Handler,
- },
- {
- MethodName: "ListOwnedRealm",
- Handler: _Realms_ListOwnedRealm_Handler,
- },
- {
- MethodName: "GetRealm",
- Handler: _Realms_GetRealm_Handler,
- },
- {
- MethodName: "ListRealmMember",
- Handler: _Realms_ListRealmMember_Handler,
- },
- {
- MethodName: "GetRealmMember",
- Handler: _Realms_GetRealmMember_Handler,
- },
- },
- Streams: []grpc.StreamDesc{},
- Metadata: "realms.proto",
-}
diff --git a/settings.toml b/settings.toml
index 5fc0b4f..0d38586 100644
--- a/settings.toml
+++ b/settings.toml
@@ -22,8 +22,8 @@ use_registration_magic_token = false
database = false
print_routes = false
-[consul]
-addr = "127.0.0.1:8500"
+[dealer]
+addr = "127.0.0.1:7442"
[mailer]
name = "Alphabot "