blob: f3b62263a38e596275e1560ec2f86a6f8918941a (
plain)
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
|
use binaryninja::download_provider::{DownloadInstanceInputOutputCallbacks, DownloadProvider};
use binaryninja::headless::Session;
use std::sync::mpsc;
#[test]
fn test_download_provider() {
let _session = Session::new().expect("Failed to initialize session");
let provider = DownloadProvider::try_default().expect("Couldn't get default download provider");
let mut inst = provider
.create_instance()
.expect("Couldn't create download instance");
let (tx, rx) = mpsc::channel();
let write = move |data: &[u8]| -> usize {
tx.send(data.to_vec()).expect("Couldn't send data");
data.len()
};
let result = inst
.perform_custom_request(
"GET",
"http://httpbin.org/get",
vec![],
&DownloadInstanceInputOutputCallbacks {
read: None,
write: Some(Box::new(write)),
progress: None,
},
)
.expect("Couldn't perform custom request");
assert_eq!(result.status_code, 200);
let written = rx.recv().expect("Couldn't receive data");
let written_str = String::from_utf8(written).expect("Couldn't convert data to string");
println!("{}", written_str);
assert!(written_str.contains("httpbin.org/get"));
}
|