Skip to content

Commit 0eb0fc0

Browse files
committed
__init__ / _get_document: use SchemaResolver
1 parent 5cdf025 commit 0eb0fc0

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

openapi_python_client/__init__.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from .parser import GeneratorData, import_string_from_reference
1818
from .parser.errors import GeneratorError
1919
from .utils import snake_case
20+
from .resolver.schema_resolver import SchemaResolver
2021

2122
if sys.version_info.minor < 8: # version did not exist before 3.8, need to use a backport
2223
from importlib_metadata import version
@@ -288,20 +289,19 @@ def update_existing_client(
288289

289290

290291
def _get_document(*, url: Optional[str], path: Optional[Path]) -> Union[Dict[str, Any], GeneratorError]:
291-
yaml_bytes: bytes
292292
if url is not None and path is not None:
293293
return GeneratorError(header="Provide URL or Path, not both.")
294-
if url is not None:
295-
try:
296-
response = httpx.get(url)
297-
yaml_bytes = response.content
298-
except (httpx.HTTPError, httpcore.NetworkError):
299-
return GeneratorError(header="Could not get OpenAPI document from provided URL")
300-
elif path is not None:
301-
yaml_bytes = path.read_bytes()
302-
else:
294+
295+
if url is None and path is None:
303296
return GeneratorError(header="No URL or Path provided")
297+
298+
source: Union[str, Path] = url if url is not None else path
304299
try:
305-
return yaml.safe_load(yaml_bytes)
306-
except yaml.YAMLError:
300+
resolver = SchemaResolver(source)
301+
result = resolver.resolve()
302+
if len(result.errors) > 0:
303+
return GeneratorError(header=errors.join('; '))
304+
except Exception as e:
307305
return GeneratorError(header="Invalid YAML from provided source")
306+
307+
return result.schema

0 commit comments

Comments
 (0)