diff --git a/main.go b/main.go index cb8211d6..d1f81e12 100644 --- a/main.go +++ b/main.go @@ -60,9 +60,9 @@ type Conf struct { GRPC conf.AddrConf `mapstructure:"grpc"` Listen conf.AddrConf `mapstructure:"listen"` Login login.Config `mapstructure:"login"` - Minis []struct{ + Minis []struct { Key string `mapstructure:"key"` - ID int `mapstructure:"id"` + ID int `mapstructure:"id"` } `mapstructure:"mini"` } @@ -144,7 +144,17 @@ func main() { roomService := pb.NewRoomServiceClient(conn) - loginEndpoints := login.NewEndpoint(ub, loginState, s, ms, ib, queue, appleClient, roomService, config.Login) + loginEndpoints := login.NewEndpoint(login.Parameters{ + Users: ub, + State: loginState, + Sessions: s, + Mail: ms, + Images: ib, + Queue: queue, + SignInWithApple: appleClient, + RoomService: roomService, + EmailRegistrationEnabled: config.Login.RegisterWithEmailEnabled, + }) loginRouter := loginEndpoints.Router() mount(r, "/v1/login", loginRouter) @@ -189,9 +199,17 @@ func main() { config.Twitter.Secret, ) - pb := linkedaccounts.NewLinkedAccountsBackend(db) + meEndpoint := me.NewEndpoint(me.Parameters{ + Users: ub, + NotificationsStorage: ns, + OauthConfig: oauth, + LinkedAccountsBackend: linkedaccounts.NewLinkedAccountsBackend(db), + StoriesBackend: storiesBackend, + Queue: queue, + ActiveUsersBackend: activeusers.NewBackend(db), + NotificationSettings: notifications.NewSettings(db), + }) - meEndpoint := me.NewEndpoint(ub, ns, oauth, pb, storiesBackend, queue, activeusers.NewBackend(db), notifications.NewSettings(db)) meRoutes := meEndpoint.Router() meRoutes.Use(amw.Middleware) diff --git a/pkg/login/endpoint.go b/pkg/login/endpoint.go index d52a0a61..5d1cfcf3 100644 --- a/pkg/login/endpoint.go +++ b/pkg/login/endpoint.go @@ -64,30 +64,32 @@ type Endpoint struct { signInWithApple apple.SignInWithApple roomService pb.RoomServiceClient - config Config + emailRegistrationEnabled bool } -func NewEndpoint( - ub *users.Backend, - state *StateManager, - manager *sessions.SessionManager, - mail *mail.Service, - ib *images.Backend, - queue *pubsub.Queue, - signInWithApple apple.SignInWithApple, - roomService pb.RoomServiceClient, - config Config, -) Endpoint { +type Parameters struct { + Users *users.Backend + State *StateManager + Sessions *sessions.SessionManager + Mail *mail.Service + Images *images.Backend + Queue *pubsub.Queue + SignInWithApple apple.SignInWithApple + RoomService pb.RoomServiceClient + EmailRegistrationEnabled bool +} + +func NewEndpoint(params Parameters) Endpoint { return Endpoint{ - users: ub, - state: state, - sessions: manager, - mail: mail, - ib: ib, - queue: queue, - signInWithApple: signInWithApple, - roomService: roomService, - config: config, + users: params.Users, + state: params.State, + sessions: params.Sessions, + mail: params.Mail, + ib: params.Images, + queue: params.Queue, + signInWithApple: params.SignInWithApple, + roomService: params.RoomService, + emailRegistrationEnabled: params.EmailRegistrationEnabled, } } @@ -148,7 +150,7 @@ func (e *Endpoint) start(w http.ResponseWriter, r *http.Request) { return } - if !e.config.RegisterWithEmailEnabled { + if !e.emailRegistrationEnabled { isRegistered, err := e.users.IsRegistered(email) if err != nil { httputil.JsonError(w, http.StatusInternalServerError, httputil.ErrorCodeInvalidRequestBody, "") diff --git a/pkg/me/endpoint.go b/pkg/me/endpoint.go index 89f54f00..8e0faa18 100644 --- a/pkg/me/endpoint.go +++ b/pkg/me/endpoint.go @@ -55,25 +55,27 @@ type Notification struct { Category notifications.NotificationCategory `json:"category"` } -func NewEndpoint( - users *users.Backend, - ns *notifications.Storage, - config *oauth1.Config, - la *linkedaccounts.Backend, - backend *stories.Backend, - queue *pubsub.Queue, - actives *activeusers.Backend, - targets *notifications.Settings, -) *Endpoint { +type Parameters struct { + Users *users.Backend + NotificationsStorage *notifications.Storage + OauthConfig *oauth1.Config + LinkedAccountsBackend *linkedaccounts.Backend + StoriesBackend *stories.Backend + Queue *pubsub.Queue + ActiveUsersBackend *activeusers.Backend + NotificationSettings *notifications.Settings +} + +func NewEndpoint(p Parameters) *Endpoint { return &Endpoint{ - users: users, - ns: ns, - oauthConfig: config, - la: la, - stories: backend, - queue: queue, - actives: actives, - targets: targets, + users: p.Users, + ns: p.NotificationsStorage, + oauthConfig: p.OauthConfig, + la: p.LinkedAccountsBackend, + stories: p.StoriesBackend, + queue: p.Queue, + actives: p.ActiveUsersBackend, + targets: p.NotificationSettings, } } diff --git a/pkg/minis/endpoint_test.go b/pkg/minis/endpoint_test.go index eee142d4..d027b005 100644 --- a/pkg/minis/endpoint_test.go +++ b/pkg/minis/endpoint_test.go @@ -156,7 +156,7 @@ func TestEndpoint_SaveScores(t *testing.T) { t.Fatal(err) } - req, err := http.NewRequest("POST", "/scores?token=" + key + "&room=" + room, bytes.NewBuffer(body)) + req, err := http.NewRequest("POST", "/scores?token="+key+"&room="+room, bytes.NewBuffer(body)) if err != nil { t.Fatal(err) }