Skip to main content

openapi_nexus/generators/java/okhttp/
runtime.rs

1use crate::codegen::traits::file_writer::FileInfo;
2
3const API_CLIENT_JAVA: &str = include_str!("runtime/ApiClient.java.txt");
4const API_EXCEPTION_JAVA: &str = include_str!("runtime/ApiException.java.txt");
5const AUTHENTICATOR_JAVA: &str = include_str!("runtime/Auth.java.txt");
6const BEARER_AUTH_JAVA: &str = include_str!("runtime/BearerAuth.java.txt");
7const API_KEY_AUTH_JAVA: &str = include_str!("runtime/ApiKeyAuth.java.txt");
8const API_KEY_LOCATION_JAVA: &str = include_str!("runtime/ApiKeyLocation.java.txt");
9const UPLOAD_FILE_JAVA: &str = include_str!("runtime/UploadFile.java.txt");
10
11pub fn runtime_files(header: &str, package_name: &str, include_upload_file: bool) -> Vec<FileInfo> {
12    let runtime_package = format!("{package_name}.runtime");
13    let mut files = vec![
14        FileInfo::runtime(
15            "ApiClient.java".to_string(),
16            repackage(header, API_CLIENT_JAVA, &runtime_package),
17        ),
18        FileInfo::runtime(
19            "ApiException.java".to_string(),
20            repackage(header, API_EXCEPTION_JAVA, &runtime_package),
21        ),
22        FileInfo::runtime(
23            "Authenticator.java".to_string(),
24            repackage(header, AUTHENTICATOR_JAVA, &runtime_package),
25        ),
26        FileInfo::runtime(
27            "BearerAuth.java".to_string(),
28            repackage(header, BEARER_AUTH_JAVA, &runtime_package),
29        ),
30        FileInfo::runtime(
31            "ApiKeyAuth.java".to_string(),
32            repackage(header, API_KEY_AUTH_JAVA, &runtime_package),
33        ),
34        FileInfo::runtime(
35            "ApiKeyLocation.java".to_string(),
36            repackage(header, API_KEY_LOCATION_JAVA, &runtime_package),
37        ),
38    ];
39    if include_upload_file {
40        files.push(FileInfo::runtime(
41            "UploadFile.java".to_string(),
42            repackage(header, UPLOAD_FILE_JAVA, &runtime_package),
43        ));
44    }
45    files
46}
47
48fn repackage(header: &str, body: &str, runtime_package: &str) -> String {
49    let patched = body.replacen(
50        "package runtime;",
51        &format!("package {runtime_package};"),
52        1,
53    );
54    let mut out = String::with_capacity(header.len() + patched.len());
55    out.push_str(header);
56    out.push_str(&patched);
57    out
58}