ploidy_codegen_rust/
statics.rs1use ploidy_core::codegen::IntoCode;
2use proc_macro2::TokenStream;
3use quote::{ToTokens, TokenStreamExt, quote};
4
5#[derive(Clone, Copy, Debug)]
6pub struct CodegenLibrary;
7
8impl ToTokens for CodegenLibrary {
9 fn to_tokens(&self, tokens: &mut TokenStream) {
10 tokens.append_all(quote! {
11 pub mod types;
12 pub mod client;
13 pub mod error;
14
15 pub use client::Client;
16 pub use error::Error;
17 });
18 }
19}
20
21impl IntoCode for CodegenLibrary {
22 type Code = (&'static str, TokenStream);
23
24 fn into_code(self) -> Self::Code {
25 ("src/lib.rs", self.into_token_stream())
26 }
27}
28
29#[derive(Clone, Copy, Debug)]
30pub struct CodegenErrorModule;
31
32impl ToTokens for CodegenErrorModule {
33 fn to_tokens(&self, tokens: &mut TokenStream) {
34 tokens.append_all(quote! {
35 #[derive(Debug, thiserror::Error)]
37 pub enum Error {
38 #[error("Network error")]
40 Network(#[from] reqwest::Error),
41
42 #[error("Malformed JSON")]
44 Json(#[from] JsonError),
45
46 #[error("Malformed URL")]
48 Url(#[from] url::ParseError),
49
50 #[error("Can't use URL as base URL")]
52 UrlCannotBeABase,
53
54 #[error("Invalid query parameter")]
56 QueryParam(#[from] ::ploidy_util::QueryParamError),
57
58 #[error("invalid header name")]
60 BadHeaderName(#[source] http::Error),
61
62 #[error("invalid value for header `{0}`")]
64 BadHeaderValue(http::HeaderName, #[source] http::Error),
65 }
66
67 #[derive(Debug, thiserror::Error)]
70 pub enum JsonError {
71 #[error(transparent)]
72 Json(#[from] serde_json::Error),
73 #[error(transparent)]
74 JsonWithPath(#[from] serde_path_to_error::Error<serde_json::Error>),
75 }
76 });
77 }
78}
79
80impl IntoCode for CodegenErrorModule {
81 type Code = (&'static str, TokenStream);
82
83 fn into_code(self) -> Self::Code {
84 ("src/error.rs", self.into_token_stream())
85 }
86}