Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions codecov_cli/commands/get_report_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import sentry_sdk

from codecov_cli.helpers.args import get_cli_args
from codecov_cli.helpers.encoder import encode_slug
from codecov_cli.helpers.encoder import safe_encode_slug
from codecov_cli.helpers.options import global_options
from codecov_cli.services.report import send_reports_result_get_request
from codecov_cli.types import CommandContext
Expand Down Expand Up @@ -38,7 +38,9 @@ def get_report_results(
extra_log_attributes=args,
),
)
encoded_slug = encode_slug(slug)
encoded_slug = safe_encode_slug(slug)
if encoded_slug is None:
raise click.UsageError("The provided slug is invalid")
send_reports_result_get_request(
commit_sha=commit_sha,
report_code=code,
Expand Down
13 changes: 13 additions & 0 deletions codecov_cli/helpers/encoder.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import logging
import re

logger = logging.getLogger("codecovcli")

slug_without_subgroups_regex = re.compile(r"[^/\s]+\/[^/\s]+$")
slug_with_subgroups_regex = re.compile(r"[^/\s]+(\/[^/\s]+)+$")
encoded_slug_regex = re.compile(r"[^:\s]+(:::[^:\s]+)*(::::[^:\s]+){1}$")
Expand All @@ -14,6 +17,16 @@ def encode_slug(slug: str):
return encoded_slug


def safe_encode_slug(slug):
try:
return encode_slug(slug)
except ValueError:
logger.error(
"The provided slug is invalid. Please provide a valid slug in the form owner/repo."
)
return None


def decode_slug(slug: str):
if slug_encoded_incorrectly(slug):
raise ValueError("The slug is not encoded correctly")
Expand Down
8 changes: 6 additions & 2 deletions codecov_cli/services/commit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
import os
import typing

import click

from codecov_cli import __version__ as codecov_cli_version
from codecov_cli.helpers.config import CODECOV_INGEST_URL
from codecov_cli.helpers.encoder import encode_slug
from codecov_cli.helpers.encoder import safe_encode_slug
from codecov_cli.helpers.request import (
get_token_header,
log_warnings_and_errors_if_any,
Expand All @@ -26,7 +28,9 @@ def create_commit_logic(
fail_on_error: bool = False,
args: dict = None,
):
encoded_slug = encode_slug(slug)
encoded_slug = safe_encode_slug(slug)
if encoded_slug is None:
raise click.UsageError("The provided slug is invalid")
sending_result = send_commit_data(
commit_sha=commit_sha,
parent_sha=parent_sha,
Expand Down
8 changes: 6 additions & 2 deletions codecov_cli/services/empty_upload/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

from codecov_cli import __version__ as codecov_cli_version
from codecov_cli.helpers.config import CODECOV_API_URL
from codecov_cli.helpers.encoder import encode_slug
import click

from codecov_cli.helpers.encoder import safe_encode_slug
from codecov_cli.helpers.upload_url_validation import validate_upload_service

from codecov_cli.helpers.request import (
Expand All @@ -25,7 +27,9 @@ def empty_upload_logic(
should_force,
args,
):
encoded_slug = encode_slug(slug)
encoded_slug = safe_encode_slug(slug)
if encoded_slug is None:
raise click.UsageError("The provided slug is invalid")
headers = get_token_header(token)
upload_url = enterprise_url or CODECOV_API_URL
service_part = (git_service or "").strip()
Expand Down
12 changes: 9 additions & 3 deletions codecov_cli/services/report/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
from codecov_cli import __version__ as codecov_cli_version
from codecov_cli.helpers import request
from codecov_cli.helpers.config import CODECOV_API_URL, CODECOV_INGEST_URL
from codecov_cli.helpers.encoder import encode_slug
import click

from codecov_cli.helpers.encoder import safe_encode_slug
from codecov_cli.helpers.request import (
get_token_header,
log_warnings_and_errors_if_any,
Expand All @@ -30,7 +32,9 @@ def create_report_logic(
fail_on_error: bool = False,
args: typing.Union[dict, None] = None,
):
encoded_slug = encode_slug(slug)
encoded_slug = safe_encode_slug(slug)
if encoded_slug is None:
raise click.UsageError("The provided slug is invalid")
sending_result = send_create_report_request(
commit_sha,
code,
Expand Down Expand Up @@ -78,7 +82,9 @@ def create_report_results_logic(
fail_on_error: bool = False,
args: typing.Union[dict, None] = None,
):
encoded_slug = encode_slug(slug)
encoded_slug = safe_encode_slug(slug)
if encoded_slug is None:
raise click.UsageError("The provided slug is invalid")
sending_result = send_reports_result_request(
commit_sha=commit_sha,
report_code=code,
Expand Down
7 changes: 5 additions & 2 deletions codecov_cli/services/upload/upload_sender.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import zlib
from typing import Any, Dict

import click
import sentry_sdk

from codecov_cli import __version__ as codecov_cli_version
from codecov_cli.helpers.config import CODECOV_INGEST_URL
from codecov_cli.helpers.encoder import encode_slug
from codecov_cli.helpers.encoder import safe_encode_slug
from codecov_cli.helpers.upload_type import ReportType
from codecov_cli.helpers.upload_url_validation import validate_upload_service
from codecov_cli.helpers.request import (
Expand Down Expand Up @@ -80,7 +81,9 @@ def send_upload_data(
data["parent_commit_id"] = parent_sha
data["pullid"] = pull_request_number
headers = get_token_header(token)
encoded_slug = encode_slug(slug)
encoded_slug = safe_encode_slug(slug)
if encoded_slug is None:
raise click.UsageError("The provided slug is invalid")
upload_url = enterprise_url or CODECOV_INGEST_URL
url, data = self.get_url_and_possibly_update_data(
data,
Expand Down
8 changes: 6 additions & 2 deletions codecov_cli/services/upload_completion/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

from codecov_cli import __version__ as codecov_cli_version
from codecov_cli.helpers.config import CODECOV_API_URL
from codecov_cli.helpers.encoder import encode_slug
import click

from codecov_cli.helpers.encoder import safe_encode_slug
from codecov_cli.helpers.upload_url_validation import validate_upload_service
from codecov_cli.helpers.request import (
get_token_header,
Expand All @@ -23,7 +25,9 @@ def upload_completion_logic(
fail_on_error=False,
args=None,
):
encoded_slug = encode_slug(slug)
encoded_slug = safe_encode_slug(slug)
if encoded_slug is None:
raise click.UsageError("The provided slug is invalid")
headers = get_token_header(token)
upload_url = enterprise_url or CODECOV_API_URL
service_part = (git_service or "").strip()
Expand Down
Loading