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
//! A pure rust library for generating Hal responses.
//!
//! Example:
//!
//! ```
//! extern crate hal;
//! extern crate rustc_serialize as serialize;
//!
//! use hal::ToHal;
//! use hal::link::Link;
//! use hal::resource::Resource;
//! use hal::state::ToHalState;
//! use serialize::json::ToJson;
//!
//! struct Order {
//! total: f64,
//! currency: String,
//! status: String
//! }
//!
//! impl ToHal for Order {
//! fn to_hal(self) -> Resource {
//! let mut resource = Resource::with_self("https://www.example.com/orders/1");
//! resource.add_state("total", self.total)
//! .add_state("currency", self.currency)
//! .add_state("status", self.status);
//! resource
//! }
//! }
//!
//! fn main() {
//! let mut hal = Resource::with_self("/orders");
//! hal.add_curie("ea", "http://example.com/docs/rels/{rel}")
//! .add_link("next", &Link::new("/orders?page=2"))
//! .add_link("ea:find", &Link::new("/orders{?id}").templated(true))
//! .add_link("ea:admin", &Link::new("/admins/2").title("Fred"))
//! .add_link("ea:admin", &Link::new("/admins/5").title("Kate"))
//! .add_state("currentlyProcessing", 14 as i64)
//! .add_state("shippedToday", 14 as i64)
//! .add_resource("ea:order",
//! Resource::with_self("/orders/123")
//! .add_link("ea:basket", &Link::new("/baskets/98712"))
//! .add_link("ea:customer", &Link::new("/customers/7809"))
//! .add_state("total", (30.00 as f64))
//! .add_state("currency", "USD")
//! .add_state("status", "shipped")
//! )
//! .add_resource("ea:order",
//! Resource::with_self("/orders/124")
//! .add_link("ea:basket", &Link::new("/baskets/97213"))
//! .add_link("ea:customer", &Link::new("/customers/12369"))
//! .add_state("total", (20.00 as f64))
//! .add_state("currency", "USD")
//! .add_state("status", "processing")
//! );
//!
//! println!("Creating Hal using a DSL: {}", hal.to_json().to_string());
//!
//! let order = Order { total: 20.00 as f64,
//! currency: "USD".to_string(),
//! status: "processing".to_string() };
//!
//! println!("Creating Hal using to_hal(): {}", order.to_hal().to_json().to_string());
//! }
//! ```
extern crate rustc_serialize as serialize;
use Resource;