taubyte_sdk/http/event/
host.rs1use super::{imports, Event};
2use crate::errno::Error;
3
4impl Event {
5 fn host_size_unsafe(&self, size: *mut usize) -> Error {
6 #[allow(unused_unsafe)]
7 unsafe {
8 imports::getHttpEventHostSize(self.event, size)
9 }
10 }
11
12 fn host_unsafe(&self, buf_ptr: *mut u8, buf_size: usize) -> Error {
13 #[allow(unused_unsafe)]
14 unsafe {
15 imports::getHttpEventHost(self.event, buf_ptr, buf_size)
16 }
17 }
18
19 pub fn host(&self) -> Result<String, Box<dyn std::error::Error>> {
20 let mut size: usize = 0;
21 let err0 = self.host_size_unsafe(&mut size);
22 if err0.is_err() {
23 return Err(format!("Getting host size failed with: {}", err0).into());
24 }
25
26 let mut buf = vec![0u8; size];
27 let err0 = self.host_unsafe(buf.as_mut_ptr(), size);
28 if err0.is_err() {
29 return Err(format!("Getting host failed with: {}", err0).into());
30 }
31
32 Ok(String::from_utf8(buf)?)
33 }
34}
35
36#[cfg(test)]
37pub mod test {
38 use crate::http::Event;
39 pub static EXPECTED_ID: u32 = 0;
40 pub static EXPECTED_HOST: &str = "hal.computers.com";
41
42 #[test]
43 fn test_host() {
44 let event = Event { event: EXPECTED_ID };
45 let host = event.host().unwrap_or_else(|err| {
46 panic!("{}", err);
47 });
48
49 assert_eq!(host, EXPECTED_HOST);
50 }
51}