Skip to content

Commit 1f563f4

Browse files
committed
ref(preprod): Remove ProjectPreprodArtifactImageEndpoint, use objectstore proxy directly
The objectstore proxy endpoint already sets the content type, so the dedicated image proxy endpoint is redundant. Frontend now constructs objectstore proxy URLs directly for all image fetches.
1 parent c640119 commit 1f563f4

File tree

16 files changed

+24
-262
lines changed

16 files changed

+24
-262
lines changed

src/sentry/preprod/api/endpoints/project_preprod_artifact_image.py

Lines changed: 0 additions & 67 deletions
This file was deleted.

src/sentry/preprod/api/endpoints/urls.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
from django.urls import re_path
44

55
from sentry.preprod.api.endpoints.builds import BuildsEndpoint
6-
from sentry.preprod.api.endpoints.project_preprod_artifact_image import (
7-
ProjectPreprodArtifactImageEndpoint,
8-
)
96
from sentry.preprod.api.endpoints.size_analysis.project_preprod_size_analysis_compare import (
107
ProjectPreprodArtifactSizeAnalysisCompareEndpoint,
118
)
@@ -93,11 +90,6 @@
9390
ProjectInstallablePreprodArtifactDownloadEndpoint.as_view(),
9491
name="sentry-api-0-installable-preprod-artifact-download",
9592
),
96-
re_path(
97-
r"^(?P<organization_id_or_slug>[^/]+)/(?P<project_id_or_slug>[^/]+)/files/images/(?P<image_id>[^/]+)/$",
98-
ProjectPreprodArtifactImageEndpoint.as_view(),
99-
name="sentry-api-0-project-preprod-artifact-image",
100-
),
10193
re_path(
10294
r"^(?P<organization_id_or_slug>[^/]+)/(?P<project_id_or_slug>[^/]+)/preprodartifacts/size-analysis/compare/(?P<head_size_metric_id>[^/]+)/(?P<base_size_metric_id>[^/]+)/download/$",
10395
ProjectPreprodArtifactSizeAnalysisCompareDownloadEndpoint.as_view(),

static/app/utils/api/knownSentryApiUrls.generated.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,6 @@ export type KnownSentryApiUrls =
647647
| '/projects/$organizationIdOrSlug/$projectIdOrSlug/files/dsyms/'
648648
| '/projects/$organizationIdOrSlug/$projectIdOrSlug/files/dsyms/associate/'
649649
| '/projects/$organizationIdOrSlug/$projectIdOrSlug/files/dsyms/unknown/'
650-
| '/projects/$organizationIdOrSlug/$projectIdOrSlug/files/images/$imageId/'
651650
| '/projects/$organizationIdOrSlug/$projectIdOrSlug/files/installablepreprodartifact/$urlPath/'
652651
| '/projects/$organizationIdOrSlug/$projectIdOrSlug/files/preprodartifacts/assemble/'
653652
| '/projects/$organizationIdOrSlug/$projectIdOrSlug/files/proguard-artifact-releases'

static/app/views/preprod/buildComparison/header/buildCompareHeaderContent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export function BuildCompareHeaderContent(props: BuildCompareHeaderContentProps)
8585
<AppIcon
8686
appName={buildDetails.app_info.name}
8787
appIconId={buildDetails.app_info.app_icon_id}
88-
projectId={buildDetails.project_slug}
88+
projectId={buildDetails.project_id}
8989
/>
9090
<Text>{buildDetails.app_info.name}</Text>
9191
</Flex>

static/app/views/preprod/buildDetails/buildDetails.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ export default function BuildDetails() {
201201
buildDetailsData={buildDetailsQuery.data}
202202
isBuildDetailsPending={buildDetailsQuery.isLoading}
203203
artifactId={artifactId}
204-
projectId={projectSlug ?? null}
205204
/>
206205
</BuildDetailsSide>
207206
<BuildDetailsMain>

static/app/views/preprod/buildDetails/sidebar/buildDetailsSidebarAppInfo.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ import {
2323
interface BuildDetailsSidebarAppInfoProps {
2424
appInfo: BuildDetailsAppInfo;
2525
artifactId: string;
26-
projectId: string | null;
26+
projectId: number | null;
27+
projectSlug: string | null;
2728
}
2829

2930
export function BuildDetailsSidebarAppInfo(props: BuildDetailsSidebarAppInfoProps) {
@@ -107,9 +108,9 @@ export function BuildDetailsSidebarAppInfo(props: BuildDetailsSidebarAppInfoProp
107108
<IconLink />
108109
</InfoIcon>
109110
<Text>
110-
{props.projectId ? (
111+
{props.projectSlug ? (
111112
<InstallAppButton
112-
projectId={props.projectId}
113+
projectId={props.projectSlug}
113114
artifactId={props.artifactId}
114115
platform={props.appInfo.platform ?? null}
115116
source="build_details_sidebar"

static/app/views/preprod/buildDetails/sidebar/buildDetailsSidebarContent.spec.tsx

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,16 @@ const mockBuildDetailsData: BuildDetailsApiResponse = {
4242

4343
function TestComponent({
4444
artifactId,
45-
projectId,
4645
buildDetailsData,
4746
isBuildDetailsPending,
4847
}: {
4948
artifactId: string;
50-
projectId: string;
5149
buildDetailsData?: BuildDetailsApiResponse | null;
5250
isBuildDetailsPending?: boolean;
5351
}) {
5452
return (
5553
<BuildDetailsSidebarContent
5654
artifactId={artifactId}
57-
projectId={projectId}
5855
buildDetailsData={buildDetailsData}
5956
isBuildDetailsPending={isBuildDetailsPending}
6057
/>
@@ -68,7 +65,6 @@ describe('BuildDetailsSidebarContent', () => {
6865

6966
const defaultProps = {
7067
artifactId: '123',
71-
projectId: 'test-project',
7268
};
7369

7470
beforeEach(() => {
@@ -264,16 +260,9 @@ describe('BuildDetailsSidebarContent', () => {
264260
},
265261
};
266262

267-
render(
268-
<TestComponent
269-
{...defaultProps}
270-
projectId={null as unknown as string}
271-
buildDetailsData={buildDetailsData}
272-
/>,
273-
{
274-
organization,
275-
}
276-
);
263+
render(<TestComponent {...defaultProps} buildDetailsData={buildDetailsData} />, {
264+
organization,
265+
});
277266

278267
await waitFor(() => {
279268
expect(screen.getByText('Build Metadata')).toBeInTheDocument();

static/app/views/preprod/buildDetails/sidebar/buildDetailsSidebarContent.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,12 @@ import {BuildDetailsState} from 'sentry/views/preprod/types/buildDetailsTypes';
1212

1313
interface BuildDetailsSidebarContentProps {
1414
artifactId: string;
15-
projectId: string | null;
1615
buildDetailsData?: BuildDetailsApiResponse | null;
1716
isBuildDetailsPending?: boolean;
1817
}
1918

2019
export function BuildDetailsSidebarContent(props: BuildDetailsSidebarContentProps) {
21-
const {buildDetailsData, isBuildDetailsPending = false, artifactId, projectId} = props;
20+
const {buildDetailsData, isBuildDetailsPending = false, artifactId} = props;
2221

2322
if (isBuildDetailsPending || !buildDetailsData) {
2423
return <SidebarLoadingSkeleton data-testid="sidebar-loading-skeleton" />;
@@ -33,7 +32,8 @@ export function BuildDetailsSidebarContent(props: BuildDetailsSidebarContentProp
3332
<Flex direction="column" gap="2xl">
3433
<BuildDetailsSidebarAppInfo
3534
appInfo={buildDetailsData.app_info}
36-
projectId={projectId}
35+
projectId={buildDetailsData.project_id}
36+
projectSlug={buildDetailsData.project_slug}
3737
artifactId={artifactId}
3838
/>
3939

static/app/views/preprod/components/appIcon.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {useOrganization} from 'sentry/utils/useOrganization';
66
interface AppIconProps {
77
appName: string;
88
appIconId?: string | null;
9-
projectId?: string | null;
9+
projectId?: number | null;
1010
}
1111

1212
export function AppIcon({appName, appIconId, projectId}: AppIconProps) {
@@ -15,7 +15,7 @@ export function AppIcon({appName, appIconId, projectId}: AppIconProps) {
1515

1616
let iconUrl = undefined;
1717
if (appIconId && projectId) {
18-
iconUrl = `/api/0/projects/${organization.slug}/${projectId}/files/images/${appIconId}/`;
18+
iconUrl = `/api/0/organizations/${organization.slug}/objectstore/v1/objects/preprod/org=${organization.id};project=${projectId}/${organization.id}/${projectId}/${appIconId}`;
1919
}
2020

2121
return (

static/app/views/preprod/install/buildInstallHeader.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,10 @@ import {
2626

2727
interface BuildInstallHeaderProps {
2828
buildDetailsQuery: UseApiQueryResult<BuildDetailsApiResponse, RequestError>;
29-
projectId?: string;
3029
}
3130

3231
export function BuildInstallHeader(props: BuildInstallHeaderProps) {
33-
const {buildDetailsQuery, projectId} = props;
32+
const {buildDetailsQuery} = props;
3433
const {
3534
data: buildDetailsData,
3635
isPending: isBuildDetailsPending,
@@ -84,7 +83,7 @@ export function BuildInstallHeader(props: BuildInstallHeaderProps) {
8483
<AppIcon
8584
appName={appInfo.name}
8685
appIconId={appInfo.app_icon_id}
87-
projectId={projectId}
86+
projectId={buildDetailsData.project_id}
8887
/>
8988
) : null}
9089
{appInfo.name ? <span>{appInfo.name}</span> : null}

0 commit comments

Comments
 (0)