Skip to content

Commit 9cd81e1

Browse files
authored
Revert "feat(api): Project key creation rate limit params (#15077)" (#15357)
This reverts commit 0f003ed.
1 parent 59d7df4 commit 9cd81e1

File tree

4 files changed

+30
-40
lines changed

4 files changed

+30
-40
lines changed

src/sentry/api/endpoints/project_key_details.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
from __future__ import absolute_import
22

33
from django.db.models import F
4-
from rest_framework import status
4+
from rest_framework import serializers, status
55
from rest_framework.response import Response
66

77
from sentry import features
88
from sentry.api.base import DocSection
99
from sentry.api.bases.project import ProjectEndpoint
1010
from sentry.api.exceptions import ResourceDoesNotExist
11+
from sentry.api.fields.empty_integer import EmptyIntegerField
1112
from sentry.api.serializers import serialize
12-
from sentry.api.serializers.rest_framework import ProjectKeySerializer
1313
from sentry.models import AuditLogEntryEvent, ProjectKey, ProjectKeyStatus
1414
from sentry.utils.apidocs import scenario, attach_scenarios
15-
from sentry.loader.browsersdkversion import get_default_sdk_version_for_project
15+
from sentry.loader.browsersdkversion import (
16+
get_default_sdk_version_for_project,
17+
get_browser_sdk_version_choices,
18+
)
1619

1720

1821
@scenario("DeleteClientKey")
@@ -36,6 +39,20 @@ def update_key_scenario(runner):
3639
)
3740

3841

42+
class RateLimitSerializer(serializers.Serializer):
43+
count = EmptyIntegerField(min_value=0, required=False, allow_null=True)
44+
window = EmptyIntegerField(min_value=0, max_value=60 * 60 * 24, required=False, allow_null=True)
45+
46+
47+
class KeySerializer(serializers.Serializer):
48+
name = serializers.CharField(max_length=200, required=False, allow_blank=True, allow_null=True)
49+
isActive = serializers.BooleanField(required=False)
50+
rateLimit = RateLimitSerializer(allow_null=True)
51+
browserSdkVersion = serializers.ChoiceField(
52+
choices=get_browser_sdk_version_choices(), required=False
53+
)
54+
55+
3956
class ProjectKeyDetailsEndpoint(ProjectEndpoint):
4057
doc_section = DocSection.PROJECTS
4158

@@ -71,7 +88,7 @@ def put(self, request, project, key_id):
7188
except ProjectKey.DoesNotExist:
7289
raise ResourceDoesNotExist
7390

74-
serializer = ProjectKeySerializer(data=request.data, partial=True)
91+
serializer = KeySerializer(data=request.data, partial=True)
7592
default_version = get_default_sdk_version_for_project(project)
7693

7794
if serializer.is_valid():

src/sentry/api/endpoints/project_keys.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
from __future__ import absolute_import
22

33
from django.db.models import F
4-
from rest_framework import status
4+
from rest_framework import serializers, status
55
from rest_framework.response import Response
66

7-
from sentry import features
87
from sentry.api.base import DocSection
98
from sentry.api.bases.project import ProjectEndpoint
109
from sentry.api.serializers import serialize
11-
from sentry.api.serializers.rest_framework import ProjectKeySerializer
1210
from sentry.models import AuditLogEntryEvent, ProjectKey, ProjectKeyStatus
1311
from sentry.utils.apidocs import scenario, attach_scenarios
1412

@@ -29,6 +27,12 @@ def create_key_scenario(runner):
2927
)
3028

3129

30+
class KeySerializer(serializers.Serializer):
31+
name = serializers.CharField(max_length=64, required=False, allow_blank=True, allow_null=True)
32+
public = serializers.RegexField(r"^[a-f0-9]{32}$", required=False, allow_null=True)
33+
secret = serializers.RegexField(r"^[a-f0-9]{32}$", required=False, allow_null=True)
34+
35+
3236
class ProjectKeysEndpoint(ProjectEndpoint):
3337
doc_section = DocSection.PROJECTS
3438

@@ -78,27 +82,16 @@ def post(self, request, project):
7882
belong to.
7983
:param string name: the name for the new key.
8084
"""
81-
serializer = ProjectKeySerializer(data=request.data)
85+
serializer = KeySerializer(data=request.data)
8286

8387
if serializer.is_valid():
8488
result = serializer.validated_data
8589

86-
rate_limit_count = None
87-
rate_limit_window = None
88-
89-
if features.has("projects:rate-limits", project):
90-
ratelimit = result.get("rateLimit", -1)
91-
if ratelimit != -1 and (ratelimit["count"] and ratelimit["window"]):
92-
rate_limit_count = result["rateLimit"]["count"]
93-
rate_limit_window = result["rateLimit"]["window"]
94-
9590
key = ProjectKey.objects.create(
9691
project=project,
9792
label=result.get("name"),
9893
public_key=result.get("public"),
9994
secret_key=result.get("secret"),
100-
rate_limit_count=rate_limit_count,
101-
rate_limit_window=rate_limit_window,
10295
)
10396

10497
self.create_audit_entry(

src/sentry/api/serializers/rest_framework/project_key.py

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

tests/sentry/api/endpoints/test_project_keys.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,10 @@ def test_simple(self):
2929
"sentry-api-0-project-keys",
3030
kwargs={"organization_slug": project.organization.slug, "project_slug": project.slug},
3131
)
32-
resp = self.client.post(
33-
url, data={"name": "hello world", "rateLimit": {"count": 10, "window": 60}}
34-
)
32+
resp = self.client.post(url, data={"name": "hello world"})
3533
assert resp.status_code == 201, resp.content
3634
key = ProjectKey.objects.get(public_key=resp.data["public"])
3735
assert key.label == "hello world"
38-
assert key.rate_limit_count == 10
39-
assert key.rate_limit_window == 60
4036

4137
def test_minimal_args(self):
4238
project = self.create_project()

0 commit comments

Comments
 (0)