Skip to main content

openapi_nexus/generators/python/requests/
runtime.rs

1//! Hardcoded Python runtime source files for requests.
2
3use crate::codegen::traits::file_writer::FileInfo;
4
5const CLIENT_PY: &str = include_str!("runtime/client.py.txt");
6const AUTH_PY: &str = include_str!("runtime/auth.py.txt");
7const ERRORS_PY: &str = include_str!("runtime/errors.py.txt");
8const UPLOAD_FILE_PY: &str = include_str!("runtime/upload_file.py.txt");
9
10/// Returns runtime files ready to write.
11pub fn runtime_files(header: &str, include_upload_file: bool) -> Vec<FileInfo> {
12    let mut files = vec![
13        FileInfo::runtime("client.py".to_string(), with_header(header, CLIENT_PY)),
14        FileInfo::runtime("auth.py".to_string(), with_header(header, AUTH_PY)),
15        FileInfo::runtime("errors.py".to_string(), with_header(header, ERRORS_PY)),
16        FileInfo::runtime(
17            "__init__.py".to_string(),
18            runtime_init(header, include_upload_file),
19        ),
20    ];
21    if include_upload_file {
22        files.push(FileInfo::runtime(
23            "upload_file.py".to_string(),
24            with_header(header, UPLOAD_FILE_PY),
25        ));
26    }
27    files
28}
29
30fn with_header(header: &str, body: &str) -> String {
31    let mut out = String::with_capacity(header.len() + body.len());
32    out.push_str(header);
33    out.push_str(body);
34    out
35}
36
37fn runtime_init(header: &str, include_upload_file: bool) -> String {
38    let mut out = String::new();
39    out.push_str(header);
40    out.push_str("from .auth import ApiKeyAuth as ApiKeyAuth\n");
41    out.push_str("from .auth import Authenticator as Authenticator\n");
42    out.push_str("from .auth import BearerAuth as BearerAuth\n");
43    out.push_str("from .client import ApiResponse as ApiResponse\n");
44    out.push_str("from .client import Client as Client\n");
45    out.push_str("from .errors import ApiError as ApiError\n");
46    if include_upload_file {
47        out.push_str("from .upload_file import UploadFile as UploadFile\n");
48    }
49    out
50}