79c9d6ab08
api-macro: remove now-unnecessary PropertySchema type
...
Schemas can now generally refer to an externally defined
schema.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-16 13:06:58 +01:00
3e5927a1b4
api-macro: generalized '{ schema: PATH }' schemas
...
allow 'schema: PATH' outside object property context
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-16 12:11:52 +01:00
808035f524
api-macro: support 'async fn' with new async api method
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-16 11:13:26 +01:00
6d152f8930
updates for hyper 0.13 release
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-12 13:13:53 +01:00
65a284784b
clippy fixups
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-05 11:42:34 +01:00
7c48247c58
formatting fixup
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-05 11:32:48 +01:00
b81beb4dfb
api-macro: allow methods without return types
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-04 14:27:57 +01:00
c282c8ce23
api-macro: don't return Null without return schema
...
serde_json turns () into Null anyway, so there's no need to
check this!
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-04 14:25:12 +01:00
f9d775924d
api-macro: get enum description from doc comments
...
instead of:
#[api(description: "Some description.")]
pub enum { ... }
support:
#[api]
/// Some description.
pub enum { ... }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-04 11:52:03 +01:00
7609cf2bd4
api-macro: move doc-comment reading to util
...
The function attribute reader doesn't read any other
attributes anymore, so make it reusable!
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-04 11:47:27 +01:00
197b1bccb3
api-macro: rename SimpleIdent to FieldName
...
Initially it was a wrapper around Ident to avoid some
copies, but now it's what we use to allow hyphenated names
for fields in objects (as `syn::Ident` doesn't allow that at
all), so give it a more fitting name.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-04 09:06:31 +01:00
4de409c526
api-macro: support hyphenated parameter names
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-03 13:34:37 +01:00
f3f15c2893
api-macro: drop ToTokens for SimpleIdent
...
The user must be explicit about whether the ident or string
is required.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-03 11:58:40 +01:00
b7ecf3a597
api-macro: drop Deref of SimpleIdent
...
The user must always be explicit about whether the Ident or
the String is required, since they may differ.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-03 11:57:07 +01:00
7533252072
api-macro: fixup idents in SimpleIdent
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-03 11:56:27 +01:00
02acd7269f
api-macro: remove Into<Ident> for SimpleIdent
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-03 11:55:14 +01:00
d3ec63f26d
api-macro: allow referencing external schemas in properties
...
Reference a predefined BACKUP_ARCHIVE_NAME StringSchema like
this:
#[api(
input: {
properties: {
archive: {
optional: true,
schema: BACKUP_ARCHIVE_NAME,
},
}
}
)]
fn get_archive(archive: String) -> Result<(), Error> {
...
}
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-03 11:11:46 +01:00
d78659a2c0
api-macro: allow inferring some types automatically
...
non-optional boolean, string and integer types can be
inferred from the function
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-02 11:46:15 +01:00
7fd69f8b12
api-macro: test optional value invocation
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-02 11:12:36 +01:00
263b943287
api-macro: allow skipping input
schema
...
when there are no parameters
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-02 11:00:04 +01:00
bead1e6b13
api-macro: add test with no parameters
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-02 10:55:28 +01:00
21fab51bda
api-macro: allow 'bool' and rust int types
...
in place of Boolean and Integer
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-02 10:55:01 +01:00
a997502ab1
api-macro: make return schema optional
...
and support returning () from methods
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-12-02 10:43:10 +01:00
6afad53466
api-macro: some more test code
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 13:49:14 +01:00
22581b382c
api-macro: fixup
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 13:47:42 +01:00
5690e5e6a2
api-macro: cleanup
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 13:43:25 +01:00
7d6fac0fa5
api-macro: parse serde(rename) on enums
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 13:42:46 +01:00
30a1c0b9ae
api-macro: experimental enum support
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 12:21:46 +01:00
6818cf76c9
api-macro: support defining schemas for structs
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 11:15:37 +01:00
4f042f8133
api-macro: support external types
...
See the test example:
assuming a `pub struct Foo` which implements `Serialize` and
`Deserialize`, we also expect it to provide a
`pub const Foo::API_SCHEMA: &Schema` like so:
#[derive(Deserialize, Serialize)]
pub struct StrongString(String);
impl StrongString {
pub const API_SCHEMA: &'static Schema =
&StringSchema::new("Some generic string")
.format(&ApiStringFormat::Enum(&["a", "b"]))
.schema();
}
Then we can use:
#[api(
input: {
properties: {
arg: { type: StrongString },
}
},
...
)]
fn my_api_func(arg: StrongString) -> Result<...> {
...
}
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 10:42:35 +01:00
2fc2df9a78
api-macro: tests: remove #![allow(dead_code)]
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 09:29:45 +01:00
74ed56957d
api-macro: match the item type early
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 09:16:34 +01:00
1ae127b63a
api-macro: move method handling to api/method.rs
...
We may want to add the ability to declare a Schema for
structs, so factorize function handling into its own file.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-28 09:13:33 +01:00
993eb7d168
api-macro: update tests, cleanup some macro generated paths
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 14:46:20 +01:00
0bf354e437
api-macro: convert function output to a json value
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 14:44:16 +01:00
6e98ae0dd3
api-macro: minor improvements
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 14:41:51 +01:00
03012deb3f
api-macro: reduce code output a little
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 14:04:14 +01:00
881df81976
api-macro: start actually extracting parameters
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 14:00:41 +01:00
d02a8f4e42
api-macro: begin and explain the parameter mapping strategy
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 12:29:50 +01:00
79f77253be
api-macro: start looking at function parameter types
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 11:31:40 +01:00
09d1363fa0
api-macro: start checking some function signature parts
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 11:04:36 +01:00
ebda5a3c5c
api-macro: parse properties as attributes to #[api]
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 11:01:40 +01:00
676ef1796d
api-amcro: expose JSONObject::parse_inner as Parser
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 11:01:12 +01:00
d4721d77b7
api-macro: JSONValue to bool shortcut
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 10:59:37 +01:00
c21a44b16d
api-macro: factor out inner parser of JSONObject
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 10:48:00 +01:00
044af76286
api-macro: test: add 'protected' attribute
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-27 10:06:15 +01:00
7799deb095
api-macro: refactoring: split api macro function
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-26 14:18:27 +01:00
97c29f0db5
api-macro: move json part to util module
...
The json value type is more of an intermediate step between
the TokenStream and the Schema type and should stay somewhat
independent of it. We may want to reuse it for the router?
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-26 14:07:49 +01:00
c5f9227c23
api-macro: remove old unused files
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-26 14:04:44 +01:00
0a7cc08f3a
api-macro: fix section iteration
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
2019-11-26 13:39:56 +01:00