1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
use crate::;
/// Represents a generic input binding.
///
/// The following binding attributes are supported:
///
/// | Name | Description |
/// |-------------------------|----------------------------------------------------------------------------------------------------------------------------|
/// | `type` | The binding type. |
/// | `name` | The name of the parameter being bound. |
/// | `*` | The additional binding attributes specific to the binding type. Supported value types are strings, booleans, and integers. |
///
/// # Examples
///
/// An example of using a `GenericInput` binding instead of a `CosmosDbDocument` binding:
///
/// ```rust
/// use azure_functions::{
/// bindings::{GenericInput, HttpRequest, HttpResponse},
/// func,
/// generic::Value,
/// };
/// use serde_json::from_str;
///
/// #[func]
/// #[binding(name = "req", route = "read/{id}")]
/// #[binding(
/// type = "cosmosDB",
/// name = "document",
/// connectionStringSetting = "connection",
/// databaseName = "exampledb",
/// collectionName = "documents",
/// id = "{id}",
/// partitionKey = "{id}"
/// )]
/// pub fn read_document(req: HttpRequest, document: GenericInput) -> HttpResponse {
/// match document.data {
/// Value::String(s) => {
/// let v: serde_json::Value = from_str(&s).expect("expected JSON data");
/// if v.is_null() {
/// format!(
/// "Document with id '{}' does not exist.",
/// req.route_params().get("id").unwrap()
/// )
/// .into()
/// } else {
/// v.into()
/// }
/// }
/// _ => panic!("expected string for CosmosDB document data"),
/// }
/// }
/// ```