memory-bank/components/content-service.md
The Content Service is a core component of Gitpod that manages various types of content within the platform, including workspace content, blobs, logs, and IDE plugins. It provides a set of gRPC services that handle storage, retrieval, and management of different content types.
The primary purposes of the Content Service are:
The Content Service operates as a gRPC server that exposes several services:
Each service is implemented as a separate module but shares common storage configuration and infrastructure.
main.go: Entry point that calls the Execute function from the cmd packagecmd/root.go: Defines the root command and basic service configurationcmd/run.go: Implements the main server functionality, setting up all servicescmd/test.go: Contains test functionalitypkg/service/: Contains implementations of the various servicescomponents/common-go:lib: Common Go utilities used across Gitpodcomponents/content-service-api/go:lib: API definitions for the content serviceDeleteUserContent: Deletes all content associated with a userUploadUrl: Provides a URL for uploading content via HTTP PUTDownloadUrl: Provides a URL for downloading content via HTTP GETDelete: Deletes uploaded contentWorkspaceDownloadURL: Provides a URL for downloading workspace contentDeleteWorkspace: Deletes the content of a single workspaceWorkspaceSnapshotExists: Checks whether a workspace snapshot exists(API details not examined, but likely handles log storage and retrieval)
(API details not examined, but likely handles IDE plugin content)
The Content Service is configured via a JSON configuration file that includes:
The Content Service integrates with:
The Content Service is typically used to: