1use crate::client::{ ApifyApiError, IdOrName };
2use reqwest::header::{HeaderMap, CONTENT_TYPE};
3
4#[derive(Debug)]
5pub enum ResourceType {
6 Dataset,
7}
8
9pub fn stringify_resource (id_or_name: &IdOrName) -> String {
11 match id_or_name {
12 IdOrName::Id(id) => String::from(id),
13 IdOrName::Name(name) => format!("{}~{}", name.user_name_or_user_id, name.resource_name)
14 }
15}
16
17pub fn is_resource_by_name(id_or_name: &IdOrName) -> bool {
18 if let IdOrName::Name(_) = id_or_name {
19 return true;
20 }
21 return false;
22}
23
24pub fn json_content_headers() -> HeaderMap {
25 let mut headers = HeaderMap::new();
26 headers.insert(CONTENT_TYPE, "application/json".parse().unwrap());
27 headers
28}
29
30pub fn parse_pagination_header(headers: &HeaderMap, header_name: &str) -> Result<u64, ApifyApiError> {
31 headers
32 .get(header_name)
33 .ok_or(ApifyApiError::ApiFailure(format!("{} headers missing in response!", header_name)))?
34 .to_str()
35 .map_err(|_| ApifyApiError::ApiFailure(format!("{} header is not valid UTF-8!", header_name)))?
36 .parse()
37 .map_err(|_| ApifyApiError::ApiFailure(format!("{} header cannot be parsed to a u64!", header_name)))
38}