Merge pull request #25 from KittyCAD/kurt/24-update-codegen-to-handle-query-params

update generate.py to handle query params
This commit is contained in:
Jess Frazelle
2022-06-14 09:10:18 -07:00
committed by GitHub
14 changed files with 2023 additions and 19 deletions

View File

@ -7,6 +7,7 @@ on:
- 'Makefile'
- .github/workflows/generate.yml
- 'spec.json'
- 'generate/generate.py'
workflow_dispatch:
inputs:
jobs:

1942
assets/testing.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@ -231,7 +231,9 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
f.write("\t*,\n")
f.write("\tclient: Client,\n")
f.write(") -> Dict[str, Any]:\n")
f.write("\turl = \"{}" + name + "\".format(client.base_url")
templateUrl = "{}" + name
formatTemplate = ".format(client.base_url"
queryTemplate = ""
# Iterate over the parameters.
if 'parameters' in endpoint:
parameters = endpoint['parameters']
@ -246,12 +248,20 @@ response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio
else:
print(" parameter: ", parameter)
raise Exception("Unknown parameter type")
f.write(
", " +
parameter_name +
"=" +
camel_to_snake(parameter_name))
f.write(")\n")
if parameter['in'] == 'path':
formatTemplate = formatTemplate + ", " + \
parameter_name + "=" + camel_to_snake(parameter_name)
elif parameter['in'] == 'query':
formatTemplate = formatTemplate + ", " + \
parameter_name + "=" + camel_to_snake(parameter_name)
queryTemplate = queryTemplate + "&" + \
camel_to_snake(parameter_name) + "=" + "{" + camel_to_snake(parameter_name) + "}"
if queryTemplate[1:].__len__() > 0:
f.write("\turl = \"" + templateUrl + "?" +
queryTemplate[1:] + "\"" + formatTemplate + ")\n")
else:
f.write("\turl = \"" + templateUrl + "\"" + formatTemplate + ")\n")
f.write("\n")
f.write("\theaders: Dict[str, Any] = client.get_headers()\n")
f.write("\tcookies: Dict[str, Any] = client.get_cookies()\n")

View File

@ -13,7 +13,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/api-call-metrics".format(client.base_url, group_by=group_by)
url = "{}/api-call-metrics?group_by={group_by}".format(client.base_url, group_by=group_by)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -15,7 +15,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/api-calls".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
url = "{}/api-calls?limit={limit}&page_token={page_token}&sort_by={sort_by}".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -16,7 +16,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/users/{id}/api-calls".format(client.base_url, id=id, limit=limit, page_token=page_token, sort_by=sort_by)
url = "{}/users/{id}/api-calls?limit={limit}&page_token={page_token}&sort_by={sort_by}".format(client.base_url, id=id, limit=limit, page_token=page_token, sort_by=sort_by)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -15,7 +15,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/user/api-calls".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
url = "{}/user/api-calls?limit={limit}&page_token={page_token}&sort_by={sort_by}".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -15,7 +15,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/user/api-tokens".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
url = "{}/user/api-tokens?limit={limit}&page_token={page_token}&sort_by={sort_by}".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -15,7 +15,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/file/execute/{lang}".format(client.base_url, lang=lang, output=output)
url = "{}/file/execute/{lang}?output={output}".format(client.base_url, lang=lang, output=output)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -15,7 +15,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/file/mass".format(client.base_url, material_density=material_density, src_format=src_format)
url = "{}/file/mass?material_density={material_density}&src_format={src_format}".format(client.base_url, material_density=material_density, src_format=src_format)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -14,7 +14,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/file/volume".format(client.base_url, src_format=src_format)
url = "{}/file/volume?src_format={src_format}".format(client.base_url, src_format=src_format)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -15,7 +15,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/users".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
url = "{}/users?limit={limit}&page_token={page_token}&sort_by={sort_by}".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -15,7 +15,7 @@ def _get_kwargs(
*,
client: Client,
) -> Dict[str, Any]:
url = "{}/users-extended".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
url = "{}/users-extended?limit={limit}&page_token={page_token}&sort_by={sort_by}".format(client.base_url, limit=limit, page_token=page_token, sort_by=sort_by)
headers: Dict[str, Any] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

View File

@ -3,8 +3,8 @@ import pytest
import asyncio
from .client import ClientFromEnv
from .models import FileConversion, FileOutputFormat, FileSourceFormat, User, Pong, APICallStatus
from .api.file import create_file_conversion_with_base64_helper
from .models import FileConversion, FileOutputFormat, FileSourceFormat, User, Pong, APICallStatus, FileMass, FileVolume
from .api.file import create_file_conversion_with_base64_helper, create_file_mass, create_file_volume
from .api.meta import ping
from .api.users import get_user_self
@ -106,3 +106,54 @@ async def test_file_convert_stl_async():
assert fc.id is not None
print(f"FileConversion: {fc}")
def test_file_mass():
# Create our client.
client = ClientFromEnv()
dir_path = os.path.dirname(os.path.realpath(__file__))
file = open(os.path.join(dir_path, "../assets/testing.obj"), "rb")
content = file.read()
file.close()
# Get the fc.
fm: FileMass = create_file_mass.sync(
client=client,
body=content,
src_format=FileSourceFormat.OBJ,
material_density=1.0)
assert fm is not None
print(f"FileMass: {fm}")
assert fm.id is not None
assert fm.mass is not None
assert fm.status == APICallStatus.COMPLETED
def test_file_volume():
# Create our client.
client = ClientFromEnv()
dir_path = os.path.dirname(os.path.realpath(__file__))
file = open(os.path.join(dir_path, "../assets/testing.obj"), "rb")
content = file.read()
file.close()
# Get the fc.
fv: FileVolume = create_file_volume.sync(
client=client,
body=content,
src_format=FileSourceFormat.OBJ)
assert fv is not None
print(f"FileVolume: {fv}")
assert fv.id is not None
assert fv.volume is not None
assert fv.status == APICallStatus.COMPLETED