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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
//! Elasticsearch Hyper Client
//!
//! A lightweight implementation of the Elasticsearch API based on Hyper.
//!
//! Each API endpoint is represented as its own function,
//! so each possible http route gets its own function.
//! The functions are also designed to work well with the `elastic_types`
//! and `json_str` crates, but deserialisation is the responsibility of the caller.
//!
//! # Usage
//!
//! This crate is on [crates.io](https://crates.io/crates/elastic_hyper).
//! To get started, add `elastic_hyper` and `hyper` to your `Cargo.toml`:
//!
//! ```ignore
//! [dependencies]
//! elastic_hyper = "*"
//! hyper = "*"
//! ```
//!
//! For `Windows`, you may need to exclude `openssl` or the build can fail:
//!
//! ```ignore
//! [dependencies]
//! elastic_hyper = { version = "*", default-features = false }
//! hyper = { version = "*", default-features = false }
//! ```
//!
//! And reference them in your crate root:
//!
//! ```ignore
//! extern crate elastic_hyper as elastic;
//! extern crate hyper;
//! ```
//!
//! Ping the availability of your cluster:
//!
//! ```no_run
//! # extern crate hyper;
//! # extern crate elastic_hyper as elastic;
//! # fn main() {
//! let (mut client, params) = elastic::default();
//!
//! //HTTP HEAD /
//! elastic::ping::head(&mut client, ¶ms).unwrap();
//! # }
//! ```
//!
//! Ping the availability of your cluster:
//!
//! ```no_run
//! # extern crate hyper;
//! # extern crate elastic_hyper as elastic;
//! # fn main() {
//! let mut client = hyper::Client::new();
//! let mut params = elastic::RequestParams::default()
//! .url_params(vec![
//! ("q", "'my string'".to_owned())
//! ]);
//!
//! //HTTP GET /myindex/mytype/_search?q='my string'
//! elastic::search::get_index_type(&mut client, ¶ms, "myindex", "mytype").unwrap();
//! # }
//! ```
//!
//! # Links
//! - [elastic_types](http://kodraus.github.io/rustdoc/elastic_types/index.html)
//! - [json_str](http://kodraus.github.io/rustdoc/json_str/index.html)
//! - [Github](https://github.com/KodrAus/elasticsearch-rs)
extern crate hyper;
extern crate url;
use BTreeMap;
use Headers;
use ContentType;
use Serializer;
/// Misc parameters for any request.
///
/// The `RequestParams` struct allows you to set headers and url parameters for your requests.
/// By default, the `ContentType::json` header will always be added.
/// Url parameters are added as simple key-value pairs, and serialised by [rust-url](http://servo.github.io/rust-url/url/index.html).
///
/// # Examples
///
/// With default query parameters:
///
/// ```
/// extern crate hyper;
/// extern crate elastic_hyper as elastic;
///
/// let params = elastic::RequestParams::default();
/// ```
///
/// With custom headers:
///
/// ```
/// extern crate hyper;
/// extern crate elastic_hyper as elastic;
///
/// let mut params = elastic::RequestParams::default();
///
/// //Add your own headers
/// params.headers.set(hyper::header::Authorization("let me in".to_owned()));
/// ```
///
/// Add url query parameters to the request:
///
/// ```
/// extern crate hyper;
/// extern crate elastic_hyper as elastic;
///
/// let params = elastic::RequestParams::default()
/// .url_params(vec![
/// ("pretty", "true".to_owned()),
/// ("q", "*".to_owned())
/// ]);
/// ```
///
/// With a custom base url:
///
/// ```
/// extern crate hyper;
/// extern crate elastic_hyper as elastic;
///
/// let params = elastic::RequestParams::new("http://mybaseurl:9200", hyper::header::Headers::new());
/// ```
pub use *;
/// Get a default `Client` and `RequestParams`.