Skip to content

Commit

Permalink
Remove compat code
Browse files Browse the repository at this point in the history
  • Loading branch information
hongquan committed Jun 3, 2024
1 parent 67dfbde commit daddea4
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 49 deletions.
17 changes: 8 additions & 9 deletions api/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from logbook.compat import LoggingHandler
from fastapi import FastAPI, HTTPException, Request
from fastapi.staticfiles import StaticFiles
from pydantic import BaseModel
from pydantic import BaseModel, ConfigDict
from pydantic_settings import BaseSettings
from fastapi.templating import Jinja2Templates
from fastapi.responses import HTMLResponse
Expand All @@ -22,18 +22,17 @@ class Settings(BaseSettings):
tracking: bool = False


EXAMPLE = {
'curl': 'curl -X POST http://quan.hoabinh.vn/api/users --user admin:xxx -d name=meow',
'long_option': False,
}


class CurlCmd(BaseModel):
model_config = ConfigDict(json_schema_extra={'example': EXAMPLE})
curl: str
long_option: bool = False

class Config:
schema_extra = {
'example': {
'curl': 'curl -X POST http://quan.hoabinh.vn/api/users --user admin:xxx -d name=meow',
'long_option': False,
}
}


app = FastAPI(debug=True, title='CurliPie online API')
logger = logbook.Logger(__name__, logbook.DEBUG)
Expand Down
24 changes: 0 additions & 24 deletions curlipie/compat.py

This file was deleted.

6 changes: 3 additions & 3 deletions curlipie/curly.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
from urllib.parse import parse_qsl

import yarl
import orjson
from tap import Tap
from logbook import Logger
from kiss_headers import parse_it, get_polymorphic, ContentType, BasicAuthorization
from kiss_headers import Headers, Header
from http_constants.headers import HttpHeaders as HH

from .compat import json_load, JSONDecodeError


logger = Logger(__name__)
Expand Down Expand Up @@ -189,8 +189,8 @@ def parse_post_data(string: str, ignore_at: bool = False) -> DataArgParseResult:
return DataArgParseResult(data, errors)
# Maybe JSON?
try:
jsdata = json_load(string)
except JSONDecodeError:
jsdata = orjson.loads(string.encode())
except orjson.JSONDecodeError:
# Not JSON
errors.append('Cannot guess post data format')
return DataArgParseResult(data, errors)
Expand Down
20 changes: 7 additions & 13 deletions curlipie/pie.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,24 @@
from collections import deque
from typing import List

import orjson
from first import first
from pydantic import BaseModel
from pydantic import BaseModel, ConfigDict
from http_constants.headers import HttpHeaders as HH
from .compat import json_dump
from .curly import CURLArgumentParser


REGEX_SINGLE_OPT = re.compile(r'-\w$')
REGEX_SHELL_LINEBREAK = re.compile(r'\\\s+')
logger = logging.getLogger(__name__)
EXAMPLE = {'httpie': 'http -fa admin:xxx quan.hoabinh.vn/api/users name=meow', 'errors': []}


class ConversionResult(BaseModel):
model_config = ConfigDict(json_schema_extra={'example': EXAMPLE})
httpie: str
errors: List[str] = []

class Config:
schema_extra = {
'example': {
'httpie': 'http -fa admin:xxx quan.hoabinh.vn/api/users name=meow',
'errors': []
}
}


def join_previous_arg(cmds: List[str], name: str):
prev_arg = cmds[-1]
Expand All @@ -39,7 +33,7 @@ def join_previous_arg(cmds: List[str], name: str):


def clean_curl(cmd: str):
''' Remove slash-escaped newlines and normal newlines from curl command.'''
"""Remove slash-escaped newlines and normal newlines from curl command."""
stripped = REGEX_SHELL_LINEBREAK.sub(' ', cmd)
return ' '.join(stripped.splitlines())

Expand Down Expand Up @@ -144,9 +138,9 @@ def curl_to_httpie(cmd: str, long_option: bool = False) -> ConversionResult:
try:
qv = quote(v)
cmds.append(f'{qp}={qv}' if not args.get else f'{qp}=={qv}')
except TypeError: # v is not string, normally after parsed from JSON
except TypeError: # v is not string, normally after parsed from JSON
if isinstance(v, (list, dict)):
v = quote(json_dump(v))
v = quote(orjson.dumps(v).decode())
cmds.append(f'{qp}:={v}' if not args.get else f'{qp}=={quote(str(v))}')
if args.data_binary:
fn = first(v for v in args.data_binary if v and v.startswith('@'))
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ ignore = []
# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"

[tool.ruff.format]
quote-style = "single"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

0 comments on commit daddea4

Please sign in to comment.