Skip to content

Commit 8b848ec

Browse files
api: add trait into_parsed_request
This is currently implemented only for MachineConfigureBody. Signed-off-by: Andreea Florescu <fandree@amazon.com>
1 parent 5b9aba8 commit 8b848ec

3 files changed

Lines changed: 15 additions & 8 deletions

File tree

api_server/src/http_service.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use hyper::{self, Chunk, Headers, Method, StatusCode};
1212
use serde_json;
1313
use tokio_core::reactor::Handle;
1414

15-
use request::{self, ApiRequest, AsyncOutcome, AsyncRequestBody, ParsedRequest};
15+
use request::{self, ApiRequest, AsyncOutcome, AsyncRequestBody, IntoParsedRequest, ParsedRequest};
1616
use request::instance_info::InstanceInfo;
1717
use super::{ActionMap, ActionMapValue};
1818
use sys_util::EventFd;
@@ -188,7 +188,7 @@ fn parse_machine_config_req<'a>(
188188
request::MachineConfigurationBody,
189189
>(body)
190190
.map_err(Error::SerdeJson)?
191-
.into_parsed_request()
191+
.into_parsed_request(method)
192192
.map_err(|s| Error::Generic(StatusCode::BadRequest, s))?),
193193
_ => Err(Error::InvalidPathMethod(path, method)),
194194
}
@@ -881,7 +881,7 @@ mod tests {
881881
mem_size_mib: Some(1025),
882882
};
883883

884-
match mcb.into_parsed_request() {
884+
match mcb.into_parsed_request(Method::Put) {
885885
Ok(pr) => match parse_machine_config_req(&path_tokens, &path, Method::Put, &body) {
886886
Ok(pr_mcb) => assert!(pr.eq(&pr_mcb)),
887887
_ => assert!(false),

api_server/src/request/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
pub mod async;
22
pub mod sync;
33

4+
use std::result;
5+
6+
use hyper::Method;
47
pub use self::async::{AsyncOutcome, AsyncOutcomeReceiver, AsyncOutcomeSender, AsyncRequest,
58
AsyncRequestBody};
69
pub use self::sync::{BootSourceBody, DriveDescription, MachineConfigurationBody,
@@ -26,3 +29,7 @@ pub enum ApiRequest {
2629
Async(AsyncRequest),
2730
Sync(SyncRequest),
2831
}
32+
33+
pub trait IntoParsedRequest {
34+
fn into_parsed_request(self, method: Method) -> result::Result<ParsedRequest, String>;
35+
}

api_server/src/request/sync/machine_configuration.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use std::result;
22

33
use futures::sync::oneshot;
4-
use hyper::{Response, StatusCode};
4+
use hyper::{Method, Response, StatusCode};
55

66
use http_service::{empty_response, json_fault_message, json_response};
7-
use request::{ParsedRequest, SyncRequest};
7+
use request::{IntoParsedRequest, ParsedRequest, SyncRequest};
88
use request::sync::GenerateResponse;
99

1010
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
@@ -55,8 +55,8 @@ impl GenerateResponse for PutMachineConfigurationOutcome {
5555
}
5656
}
5757

58-
impl MachineConfigurationBody {
59-
pub fn into_parsed_request(self) -> result::Result<ParsedRequest, String> {
58+
impl IntoParsedRequest for MachineConfigurationBody {
59+
fn into_parsed_request(self, _method: Method) -> result::Result<ParsedRequest, String> {
6060
let (sender, receiver) = oneshot::channel();
6161
Ok(ParsedRequest::Sync(
6262
SyncRequest::PutMachineConfiguration(self, sender),
@@ -116,7 +116,7 @@ mod tests {
116116
let (sender, receiver) = oneshot::channel();
117117
assert!(
118118
body.clone()
119-
.into_parsed_request()
119+
.into_parsed_request(Method::Put)
120120
.eq(&Ok(ParsedRequest::Sync(
121121
SyncRequest::PutMachineConfiguration(body, sender),
122122
receiver

0 commit comments

Comments
 (0)