Derive Macro oauth1_request::Request[][src]

#[derive(Request)]
{
    // Attributes available to this derive:
    #[oauth1]
}
Expand description

A derive macro for Request trait.

The derive macro uses the struct’s field names and Display implementation of the values as the keys and values of the parameter pairs of the Request.

Example

#[derive(oauth::Request)]
struct CreateItem<'a> {
    name: &'a str,
    #[oauth1(rename = "type")]
    kind: Option<u32>,
    #[oauth1(skip_if = str::is_empty)]
    note: &'a str,
}

let request = CreateItem {
    name: "test",
    kind: Some(42),
    note: "",
};

assert_eq!(oauth::to_form_urlencoded(&request), "name=test&type=42");

Field attributes

You can customize the behavior of the derive macro with the following field attributes:

  • #[oauth1(encoded)]

Do not percent encode the value when serializing it.

  • #[oauth1(fmt = path)]

Use the formatting function at path instead of Display::fmt when serializing the value. The function must be callable as fn(&T, &mut Formatter<'_>) -> fmt::Result (same as Display::fmt).

  • #[oauth1(option = true)] (or #[oauth1(option = false)])

If set to true, skip the field when the value is None or use the unwrapped value otherwise. The value’s type must be Option<T> in this case.

When the field’s type name is Option<_>, the attribute is implicitly set to true. Use #[oauth1(option = false)] if you need to opt out of that behavior.

  • #[oauth1(rename = "name")]

Use the given string as the parameter’s key. The given string must be URI-safe.

  • #[oauth1(skip)]

Do not serialize the field.

  • #[oauth1(skip_if = path)]

Call the function at path and do not serialize the field if the function returns true. The function must be callable as fn(&T) -> bool. A derive macro for Request trait.

The derive macro uses the struct’s field names and Display implementation of the values as the keys and values of the parameter pairs of the Request.

Example

#[derive(oauth::Request)]
struct CreateItem<'a> {
    name: &'a str,
    #[oauth1(rename = "type")]
    kind: Option<u32>,
    #[oauth1(skip_if = str::is_empty)]
    note: &'a str,
}

let request = CreateItem {
    name: "test",
    kind: Some(42),
    note: "",
};

assert_eq!(oauth::to_form_urlencoded(&request), "name=test&type=42");

Field attributes

You can customize the behavior of the derive macro with the following field attributes:

  • #[oauth1(encoded)]

Do not percent encode the value when serializing it.

  • #[oauth1(fmt = path)]

Use the formatting function at path instead of Display::fmt when serializing the value. The function must be callable as fn(&T, &mut Formatter<'_>) -> fmt::Result (same as Display::fmt).

  • #[oauth1(option = true)] (or #[oauth1(option = false)])

If set to true, skip the field when the value is None or use the unwrapped value otherwise. The value’s type must be Option<T> in this case.

When the field’s type name is Option<_>, the attribute is implicitly set to true. Use #[oauth1(option = false)] if you need to opt out of that behavior.

  • #[oauth1(rename = "name")]

Use the given string as the parameter’s key. The given string must be URI-safe.

  • #[oauth1(skip)]

Do not serialize the field.

  • #[oauth1(skip_if = path)]

Call the function at path and do not serialize the field if the function returns true. The function must be callable as fn(&T) -> bool.