use std::io::Read;
use curl::easy::{Easy, List};
use serde::{Deserialize, Serialize};
use serde_json::Value;
use super::model::token::OAuthToken;
use super::VERSION;
pub fn post(complete_url: &str, payload: &str, header: &str) -> String {
let user_agent_header = format!("User-Agent: rsreddit:v{} (by /u/Gitrog_Frog)", VERSION);
let mut easy = Easy::new();
easy.url(&complete_url).unwrap();
easy.useragent(&user_agent_header).unwrap();
let mut list = List::new();
list.append(header).unwrap();
easy.http_headers(list).unwrap();
let mut data_field = payload.as_bytes();
easy.post(true).unwrap();
easy.post_field_size(data_field.len() as u64).unwrap();
let mut return_data: Vec<String> = Vec::new();
let mut html: String = String::new();
{
let mut transfer = easy.transfer();
transfer
.read_function(|buf| Ok(data_field.read(buf).unwrap_or(0)))
.unwrap();
transfer
.write_function(|data| {
html = String::from_utf8(Vec::from(data)).unwrap();
return_data.push(html.clone());
Ok(data.len())
})
.unwrap();
transfer.perform().unwrap();
};
return_data.join("")
}
pub fn get(complete_url: &str, header: &str) -> String {
let user_agent_header = format!("User-Agent: rsreddit:v{} (by /u/Gitrog_Frog)", VERSION);
let mut easy = Easy::new();
easy.url(&complete_url).unwrap();
easy.useragent(&user_agent_header).unwrap();
let mut list = List::new();
list.append(header).unwrap();
easy.http_headers(list).unwrap();
let mut return_data: Vec<String> = Vec::new();
let mut html: String = String::new();
{
let mut transfer = easy.transfer();
transfer
.write_function(|data| {
html = String::from_utf8(Vec::from(data)).unwrap();
return_data.push(html.clone());
Ok(data.len())
})
.unwrap();
transfer.perform().unwrap();
};
return_data.join("")
}