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
// Copyright (c) 2015-2016 Chris Palmer <pennstate5013@gmail.com>
// Use of this source code is governed by the LGPLv3 license that can be
// found in the LICENSE file.
//! The fields can be set for cloud by using the methods under `CloudBuilder`.
use errors;
use channels::{Cloud, CloudBuilder};
use enums::CloudProtocol;
use utils::string_utils;
impl CloudBuilder {
/// Construct a new `CloudBuilder` and return default values.
///
/// # Examples
///
/// ```
/// use feed::channels::CloudBuilder;
///
/// let cloud_builder = CloudBuilder::new();
/// ```
pub fn new() -> CloudBuilder {
CloudBuilder::default()
}
/// Set the domain that exists under `Cloud`.
///
/// # Examples
///
/// ```
/// use feed::channels::CloudBuilder;
///
/// let mut cloud_builder = CloudBuilder::new();
/// cloud_builder.domain("http://rpc.sys.com/");
/// ```
pub fn domain(&mut self, domain: &str) -> &mut CloudBuilder {
self.domain = domain.to_owned();
self
}
/// Set the port that exists under `Cloud`.
///
/// # Examples
///
/// ```
/// use feed::channels::CloudBuilder;
///
/// let mut cloud_builder = CloudBuilder::new();
/// cloud_builder.port(80);
/// ```
pub fn port(&mut self, port: i64) -> &mut CloudBuilder {
if port < 0 {
panic!(errors::negative_error("cloud port", port));
}
self.port = port;
self
}
/// Set the path that exists under `Cloud`.
///
/// # Examples
///
/// ```
/// use feed::channels::CloudBuilder;
///
/// let mut cloud_builder = CloudBuilder::new();
/// cloud_builder.path("/RPC2");
/// ```
pub fn path(&mut self, path: &str) -> &mut CloudBuilder {
self.path = path.to_owned();
self
}
/// Set the register procedure that exists under `Cloud`.
///
/// # Examples
///
/// ```
/// use feed::channels::CloudBuilder;
///
/// let mut cloud_builder = CloudBuilder::new();
/// cloud_builder.register_procedure("pingMe");
/// ```
pub fn register_procedure(&mut self, register_procedure: &str) -> &mut CloudBuilder {
self.register_procedure = register_procedure.to_owned();
self
}
/// Set the protocol that exists under `Cloud`.
///
/// # Examples
///
/// ```
/// use feed::channels::CloudBuilder;
///
/// let mut cloud_builder = CloudBuilder::new();
/// cloud_builder.protocol("soap");
/// ```
pub fn protocol(&mut self, protocol: &str) -> &mut CloudBuilder {
self.protocol = protocol.to_owned();
self
}
/// Construct the `Cloud` from the `CloudBuilder`.
///
/// # Examples
///
/// ```
/// use feed::channels::CloudBuilder;
///
/// let cloud = CloudBuilder::new()
/// .domain("http://rpc.sys.com/")
/// .port(80)
/// .path("/RPC2")
/// .register_procedure("pingMe")
/// .protocol("soap")
/// .finalize();
/// ```
pub fn finalize(&self) -> Cloud {
let domain_string = self.domain.clone();
let domain = string_utils::str_to_url(domain_string.as_str(), "Cloud Domain");
let protocol = CloudProtocol::to_enum(self.protocol.clone().as_str());
Cloud {
domain: domain,
port: self.port,
path: self.path.clone(),
register_procedure: self.register_procedure.clone(),
protocol: protocol,
}
}
}