Skip to content

Commit 686a185

Browse files
committed
[server] fix API contribution bindings
1 parent cdc1027 commit 686a185

File tree

3 files changed

+42
-39
lines changed

3 files changed

+42
-39
lines changed

components/server/src/api/server.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { UserService as UserServiceDefinition } from "@gitpod/public-api/lib/git
1414
import { WorkspacesService as WorkspacesServiceDefinition } from "@gitpod/public-api/lib/gitpod/experimental/v1/workspaces_connectweb";
1515
import express from "express";
1616
import * as http from "http";
17-
import { inject, injectable } from "inversify";
17+
import { inject, injectable, interfaces } from "inversify";
1818
import { AddressInfo } from "net";
1919
import { APIHelloService } from "./dummy";
2020
import { APIStatsService } from "./stats";
@@ -65,4 +65,13 @@ export class API {
6565
);
6666
return router;
6767
}
68+
69+
static contribute(bind: interfaces.Bind): void {
70+
bind(APIHelloService).toSelf().inSingletonScope();
71+
bind(APIUserService).toSelf().inSingletonScope();
72+
bind(APITeamsService).toSelf().inSingletonScope();
73+
bind(APIWorkspacesService).toSelf().inSingletonScope();
74+
bind(APIStatsService).toSelf().inSingletonScope();
75+
bind(API).toSelf().inSingletonScope();
76+
}
6877
}

components/server/src/api/teams.spec.db.ts

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,23 @@
33
* Licensed under the GNU Affero General Public License (AGPL).
44
* See License.AGPL.txt in the project root for license information.
55
*/
6-
import { suite, test, timeout } from "@testdeck/mocha";
7-
import { APIUserService } from "./user";
8-
import { Container } from "inversify";
9-
import { TeamDB, TypeORM, UserDB, testContainer } from "@gitpod/gitpod-db/lib";
10-
import { API } from "./server";
11-
import * as http from "http";
12-
import { createConnectTransport } from "@bufbuild/connect-node";
136
import { Code, ConnectError, PromiseClient, createPromiseClient } from "@bufbuild/connect";
14-
import { AddressInfo } from "net";
7+
import { createConnectTransport } from "@bufbuild/connect-node";
8+
import { Timestamp } from "@bufbuild/protobuf";
9+
import { TeamDB, TypeORM, UserDB, testContainer } from "@gitpod/gitpod-db/lib";
10+
import { DBTeam } from "@gitpod/gitpod-db/lib/typeorm/entity/db-team";
1511
import { TeamsService as TeamsServiceDefinition } from "@gitpod/public-api/lib/gitpod/experimental/v1/teams_connectweb";
16-
import { UserAuthentication } from "../user/user-authentication";
17-
import { APITeamsService } from "./teams";
18-
import { v4 as uuidv4 } from "uuid";
19-
import * as chai from "chai";
2012
import { GetTeamRequest, Team, TeamMember, TeamRole } from "@gitpod/public-api/lib/gitpod/experimental/v1/teams_pb";
21-
import { DBTeam } from "@gitpod/gitpod-db/lib/typeorm/entity/db-team";
13+
import { suite, test, timeout } from "@testdeck/mocha";
14+
import * as chai from "chai";
15+
import * as http from "http";
16+
import { Container } from "inversify";
17+
import { AddressInfo } from "net";
2218
import { Connection } from "typeorm";
23-
import { Timestamp } from "@bufbuild/protobuf";
24-
import { APIWorkspacesService } from "./workspaces";
25-
import { APIStatsService } from "./stats";
19+
import { v4 as uuidv4 } from "uuid";
20+
import { UserAuthentication } from "../user/user-authentication";
2621
import { WorkspaceService } from "../workspace/workspace-service";
22+
import { API } from "./server";
2723

2824
const expect = chai.expect;
2925

@@ -37,11 +33,7 @@ export class APITeamsServiceSpec {
3733

3834
async before() {
3935
this.container = testContainer.createChild();
40-
this.container.bind(API).toSelf().inSingletonScope();
41-
this.container.bind(APIUserService).toSelf().inSingletonScope();
42-
this.container.bind(APITeamsService).toSelf().inSingletonScope();
43-
this.container.bind(APIWorkspacesService).toSelf().inSingletonScope();
44-
this.container.bind(APIStatsService).toSelf().inSingletonScope();
36+
API.contribute(this.container.bind.bind(this.container));
4537

4638
this.container.bind(WorkspaceService).toConstantValue({} as WorkspaceService);
4739
this.container.bind(UserAuthentication).toConstantValue({} as UserAuthentication);

components/server/src/container-module.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import { ContainerModule } from "inversify";
88

9+
import { RedisPublisher, newRedisClient } from "@gitpod/gitpod-db/lib";
910
import { IAnalyticsWriter } from "@gitpod/gitpod-protocol/lib/analytics";
1011
import { GitpodFileParser } from "@gitpod/gitpod-protocol/lib/gitpod-file-parser";
1112
import { PrometheusClientCallMetrics } from "@gitpod/gitpod-protocol/lib/messaging/client-call-metrics";
@@ -32,8 +33,10 @@ import {
3233
WorkspaceManagerClientProviderSource,
3334
} from "@gitpod/ws-manager/lib/client-provider-source";
3435
import * as grpc from "@grpc/grpc-js";
36+
import { Redis } from "ioredis";
3537
import { createChannel, createClient, createClientFactory } from "nice-grpc";
3638
import { retryMiddleware } from "nice-grpc-client-middleware-retry";
39+
import { APIHelloService } from "./api/dummy";
3740
import { API } from "./api/server";
3841
import { APIStatsService } from "./api/stats";
3942
import { APITeamsService } from "./api/teams";
@@ -50,10 +53,14 @@ import { AuthJWT, SignInJWT } from "./auth/jwt";
5053
import { LoginCompletionHandler } from "./auth/login-completion-handler";
5154
import { VerificationService } from "./auth/verification-service";
5255
import { Authorizer, createInitializingAuthorizer } from "./authorization/authorizer";
56+
import { RelationshipUpdater } from "./authorization/relationship-updater";
57+
import { RelationshipUpdateJob } from "./authorization/relationship-updater-job";
5358
import { SpiceDBClientProvider, spiceDBConfigFromEnv } from "./authorization/spicedb";
59+
import { SpiceDBAuthorizer } from "./authorization/spicedb-authorizer";
5460
import { BillingModes } from "./billing/billing-mode";
5561
import { EntitlementService, EntitlementServiceImpl } from "./billing/entitlement-service";
5662
import { EntitlementServiceUBP } from "./billing/entitlement-service-ubp";
63+
import { StripeService } from "./billing/stripe-service";
5764
import { BitbucketAppSupport } from "./bitbucket/bitbucket-app-support";
5865
import { CodeSyncService } from "./code-sync/code-sync-service";
5966
import { Config, ConfigFile } from "./config";
@@ -71,9 +78,12 @@ import { WebhookEventGarbageCollector } from "./jobs/webhook-gc";
7178
import { WorkspaceGarbageCollector } from "./jobs/workspace-gc";
7279
import { LinkedInService } from "./linkedin-service";
7380
import { LivenessController } from "./liveness/liveness-controller";
81+
import { RedisSubscriber } from "./messaging/redis-subscriber";
7482
import { MonitoringEndpointsApp } from "./monitoring-endpoints";
7583
import { OAuthController } from "./oauth-server/oauth-controller";
7684
import { OneTimeSecretServer } from "./one-time-secret-server";
85+
import { OrganizationService } from "./orgs/organization-service";
86+
import { UsageService } from "./orgs/usage-service";
7787
import { BitbucketApp } from "./prebuilds/bitbucket-app";
7888
import { BitbucketServerApp } from "./prebuilds/bitbucket-server-app";
7989
import { GithubApp } from "./prebuilds/github-app";
@@ -85,20 +95,23 @@ import { PrebuildManager } from "./prebuilds/prebuild-manager";
8595
import { PrebuildStatusMaintainer } from "./prebuilds/prebuilt-status-maintainer";
8696
import { StartPrebuildContextParser } from "./prebuilds/start-prebuild-context-parser";
8797
import { ProjectsService } from "./projects/projects-service";
98+
import { ScmService } from "./projects/scm-service";
8899
import { RedisMutex } from "./redis/mutex";
89100
import { Server } from "./server";
90101
import { SessionHandler } from "./session-handler";
91102
import { ContentServiceStorageClient } from "./storage/content-service-client";
92103
import { StorageClient } from "./storage/storage-client";
93104
import { AuthorizationService, AuthorizationServiceImpl } from "./user/authorization-service";
105+
import { EnvVarService } from "./user/env-var-service";
106+
import { GitpodTokenService } from "./user/gitpod-token-service";
94107
import { NewsletterSubscriptionController } from "./user/newsletter-subscription-controller";
95-
import { StripeService } from "./billing/stripe-service";
108+
import { SSHKeyService } from "./user/sshkey-service";
96109
import { TokenProvider } from "./user/token-provider";
97110
import { TokenService } from "./user/token-service";
98-
import { UsageService } from "./orgs/usage-service";
111+
import { UserAuthentication } from "./user/user-authentication";
99112
import { ServerFactory, UserController } from "./user/user-controller";
100113
import { UserDeletionService } from "./user/user-deletion-service";
101-
import { UserAuthentication } from "./user/user-authentication";
114+
import { UserService } from "./user/user-service";
102115
import { contentServiceBinder } from "./util/content-service-sugar";
103116
import { WebsocketConnectionManager } from "./websocket/websocket-connection-manager";
104117
import { ConfigProvider } from "./workspace/config-provider";
@@ -119,21 +132,8 @@ import { SnapshotService } from "./workspace/snapshot-service";
119132
import { WorkspaceClusterImagebuilderClientProvider } from "./workspace/workspace-cluster-imagebuilder-client-provider";
120133
import { WorkspaceDownloadService } from "./workspace/workspace-download-service";
121134
import { WorkspaceFactory } from "./workspace/workspace-factory";
122-
import { WorkspaceStarter } from "./workspace/workspace-starter";
123-
import { SpiceDBAuthorizer } from "./authorization/spicedb-authorizer";
124-
import { OrganizationService } from "./orgs/organization-service";
125-
import { RedisSubscriber } from "./messaging/redis-subscriber";
126-
import { Redis } from "ioredis";
127-
import { RedisPublisher, newRedisClient } from "@gitpod/gitpod-db/lib";
128-
import { UserService } from "./user/user-service";
129-
import { RelationshipUpdater } from "./authorization/relationship-updater";
130135
import { WorkspaceService } from "./workspace/workspace-service";
131-
import { SSHKeyService } from "./user/sshkey-service";
132-
import { GitpodTokenService } from "./user/gitpod-token-service";
133-
import { EnvVarService } from "./user/env-var-service";
134-
import { ScmService } from "./projects/scm-service";
135-
import { RelationshipUpdateJob } from "./authorization/relationship-updater-job";
136-
import { APIHelloService } from "./api/dummy";
136+
import { WorkspaceStarter } from "./workspace/workspace-starter";
137137

138138
export const productionContainerModule = new ContainerModule(
139139
(bind, unbind, isBound, rebind, unbindAsync, onActivation, onDeactivation) => {
@@ -331,6 +331,8 @@ export const productionContainerModule = new ContainerModule(
331331
bind(RelationshipUpdater).toSelf().inSingletonScope();
332332

333333
// grpc / Connect API
334+
API.contribute(bind);
335+
334336
bind(APIHelloService).toSelf().inSingletonScope();
335337
bind(APIUserService).toSelf().inSingletonScope();
336338
bind(APITeamsService).toSelf().inSingletonScope();

0 commit comments

Comments
 (0)