use super::truncate_spaces;
use crate::network::responses::*;
use urlencoding::encode as encode_uri_component;
pub fn file_link(repo: &Repo, branch: Option<&Branch>, file: &RepoContents) -> String {
let username_clean: String = truncate_spaces(&repo.owner.login);
let username_link = encode_uri_component(&username_clean);
let repo_link = encode_uri_component(&repo.name);
let name_link = encode_uri_component(&file.name);
let file_name = truncate_spaces(&file.name);
let branch_name = match branch {
Some(branch) => encode_uri_component(&branch.name),
None => encode_uri_component(&repo.default_branch),
};
let icon: &str = match file.kind {
ContentsType::Submodule => "→",
ContentsType::Symlink => "↳",
ContentsType::Dir => "📁",
ContentsType::File => "📄",
};
return format!(
"=> /{username_link}/{repo_link}/src/branch/{branch_name}/{name_link} {icon} {file_name}"
);
}