apify_client/
utils.rs

1use crate::client::{ ApifyApiError, IdOrName };
2use reqwest::header::{HeaderMap, CONTENT_TYPE};
3
4#[derive(Debug)]
5pub enum ResourceType {
6    Dataset,
7}
8
9// Creates a string represantion of a resource on the Apify platform via API
10pub 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}